0

私の Hadoop プログラムは、もともとローカル モードで起動されていましたが、現在は完全に分散モードで起動するようになりました。この目的のために、クラスターのすべてのコンピューターから、リデューサーおよびマッパー関数で読み取りが実行されるファイルへのアクセスを提供する必要があるため、 http://answers.mapr.com/questions/4444/で質問しました。Hadoop スクリプトのオプションファイルの構文(また、マッパー機能を実行するコンピューターが不明であるため (プログラムのロジックからのマッパーは 1 つしかなく、プログラムは 1 つのマッパーでのみ起動されます)、すべてのコンピューターへのアクセスも提供する必要があります。マッパー関数の入力に到着するファイルにクラスタ化します)。この点に関して、私は質問がありました: hdfs-files を直接使用できるかどうか: HDFS のファイル システムに Linux のファイル システムから事前にファイルをコピーすることです (これにより、これらのファイルは 1 台のすべてのコンピューターで利用できるようになります)。そうでない場合は修正してください)、クラスターのコンピューターで実行されているリデューサーおよびマッパー関数で、これらのファイルを読み取るために HDFS Java API を使用するにはどうすればよいですか?

この質問に対する回答が肯定的である場合は、Linux のファイル システムから HDFS のファイル システムにコピーし、これらのファイルを Java で HDFS Java API を使用してプログラムに読み込み、その内容を java-string に記録する例を教えてください。

4

1 に答える 1

0

すべての入力ファイルをマスターノードにコピーします(これは を使用して実行できますscp)。次に、マスターノード ( )にログインし、ssh次のようなコマンドを実行して、ファイルをローカル ファイルシステムから hdfs にコピーします。

hadoop fs -put $localfilelocation $destination

これで、hadoop ジョブで、入力を be に使用できますhdfs:///$destination。HDFS から読み取るために追加の API を使用する必要はありません。

どうしても HDFS からファイルを読み込んで、入力ファイル以外の追加情報として使用したい場合は、こちらを参照してください。

于 2013-02-13T19:44:41.067 に答える