1

各ノードがいくつかの入力で一連の C++ Hadoop ストリーミング タスクを実行する、完全に分散された Hadoop/MapReduce インスタンスをセットアップしようとしています。ただし、すべての入力タスクを HDFS に移動したくはありません。代わりに、各ノードのローカル フォルダーから入力データを読み取る方法があるかどうかを確認したいと考えています。

とにかくこれを行うことはありますか?

編集: 実行したいhadoopコマンドの例は、次のようなものです:

hadoop jar $HADOOP_STREAM/hadoop-streaming-0.20.203.0.jar \
            -mapper map_example \
            -input file:///data/ \
            -output /output/ \
            -reducer reducer_example \
            -file map_example \
            -file reducer_example 

この場合、各ノードに保存されているデータは /data/ ディレクトリにあり、出力を各ノードの /output/ ディレクトリに送りたいと考えています。map_example および reducer_example ファイルは、すべてのノードでローカルに利用できます。

マスターノードで実行される場合、すべてのスレーブノードが基本的にx個のノードで同じタスクを実行し、各ノードにローカル出力ファイルを生成するHadoopコマンドを実装するにはどうすればよいでしょうかローカル入力ファイル)?

ありがとう

4

2 に答える 2

1

この質問で指摘されているように、これは可能なようです。私はこれをテストしていませんが、HDFS URL の代わりに URLを参照するようにfs.default.name設定できるようです。conf/core-site.xmlfile

参考文献:

于 2011-11-21T01:49:07.900 に答える
0

これは正確には Hadoop ソリューションではありませんが、各スレーブ マシンに ssh して map reduce コードを実行する複数のプロセスを fork するプログラム (Python など) を作成できます。

hadoop dfsadmin -report クラスター内の IP を一覧表示できます。各プロセスを各ipsにsshして、マッパーとリデューサーを実行できます。

*nix の Map reduce は、パイプを使用して実装できます。

cat <input> | c++ mapper | sort | c++ reducer > <output_location>

于 2014-05-08T05:37:49.403 に答える