4

私は Hadoop の初心者です。Hadoop アプリケーションをスタンドアロン モードで実行しました。それはうまくいきました。ここで、疑似分散モードに移行することにしました。前述のように構成を変更しました。私のxmlファイルのスニペットが表示されます:

私のcore-site.xmlは次のようになります:

<name>fs.default.name</name>
<value>hdfs://localhost/</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/tmp/hadoop-onur</value>
    <description>A base for other temporary directories.</description>
   </property>

私のhdfs-site.xmlは

<property>
<name>dfs.replication</name>
<value>1</value>
</property>

私のmapred.xmlは

<property>
<name>mapred.job.tracker</name>
<value>localhost:8021</value>
</property>

start-dfs.sh と start-mapred.sh のスクリプトを実行したところ、問題なく起動しました

root@vissu-desktop:/home/vissu/Raveesh/Hadoop# start-dfs.sh 
starting namenode, logging to /home/vissu/Raveesh/Hadoop/hadoop-0.20.2/bin/../logs/hadoop-root-namenode-vissu-desktop.out
localhost: starting datanode, logging to /home/vissu/Raveesh/Hadoop/hadoop-0.20.2/bin/../logs/hadoop-root-datanode-vissu-desktop.out
localhost: starting secondarynamenode, logging to /home/vissu/Raveesh/Hadoop/hadoop-0.20.2/bin/../logs/hadoop-root-secondarynamenode-vissu-desktop.out
root@vissu-desktop:/home/vissu/Raveesh/Hadoop# start-mapred.sh 
starting jobtracker, logging to /home/vissu/Raveesh/Hadoop/hadoop-0.20.2/bin/../logs/hadoop-root-jobtracker-vissu-desktop.out
localhost: starting tasktracker, logging to /home/vissu/Raveesh/Hadoop/hadoop-0.20.2/bin/../logs/hadoop-root-tasktracker-vissu-desktop.out
root@vissu-desktop:/home/vissu/Raveesh/Hadoop# 

今、私は自分のアプリケーションを実行しようとしました:しかし、次のエラーが発生しました.

root@vissu-desktop:/home/vissu/Raveesh/Hadoop/hadoop-0.20.2# hadoop jar ResultAgg_plainjar.jar ProcessInputFile /home/vissu/Raveesh/VotingConfiguration/sample.txt 
ARG 0 obtained = ProcessInputFile
12/07/17 17:43:33 INFO preprocessing.ProcessInputFile: Modified File Name is /home/vissu/Raveesh/Hadoop/hadoop-0.20.2/sample.txt_modf
Going to process map reduce jobs
12/07/17 17:43:33 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
12/07/17 17:43:34 ERROR preprocessing.ProcessInputFile: Input path does not exist: hdfs://localhost/home/vissu/Raveesh/Hadoop/hadoop-0.20.2/sample.txt_modf
root@vissu-desktop:/home/vissu/Raveesh/Hadoop/hadoop-0.20.2#

アプリケーションは、最初にパスからファイルを取り込み、それを変更して sample.txt_modf を作成します。このファイルは、map reduce フレームワークで使用する必要があります。スタンドアロン モードで実行しているときは、絶対パスを指定していたので問題ありませんでした。しかし、hadoop のパス API で指定する必要があるパスが何であるかを理解できません。ファイルを指定すると、hdfs://localhost/ が追加されます。疑似分散モード..変更されたファイルがその場所に作成されていることを確認する必要があります..

私の質問は、パスに言及する方法です..

パスを含むスニペットは

        KeyValueTextInputFormat.addInputPath(conf,
                new Path(System.getProperty("user.dir")+File.separator+inputFileofhits.getName()));
        FileOutputFormat.setOutputPath(
                conf,
                new Path(ProcessInputFile.resultAggProps
                        .getProperty("OUTPUT_DIRECTORY")));

ありがとう

4

1 に答える 1

5

このファイルは HDFS に存在しますか? ファイルへのローカル パスを指定したようです (HDFS のユーザー ディレクトリは、通常、/home ではなく /user をルートとしています。

次のように入力して、ファイルが HDFS に存在することを確認できます。

#> hadoop fs -ls hdfs://localhost/home/vissu/Raveesh/Hadoop/hadoop-0.20.2/sample.txt_modf

これが何も返さない場合、つまりファイルが HDFS にない場合は、hadoop fs コマンドを使用して HDFS に再度コピーできます。

#> hadoop fs -put /home/vissu/Raveesh/Hadoop/hadoop-0.20.2/sample.txt_modf hdfs://localhost/user/vissu/Raveesh/Hadoop/hadoop-0.20.2/sample.txt_modf

ここで、HDFS のパスは /home ではなく /user をルートとすることに注意してください。

于 2012-07-17T10:51:25.517 に答える