これがシナリオです
Reducer1
/
Mapper - - Reducer2
\
ReducerN
レデューサーでは、さまざまなファイルにデータを書き込みたいのですが、レデューサーが次のようになっているとしましょう
def reduce():
for line in sys.STDIN:
if(line == type1):
create_type_1_file(line)
if(line == type2):
create_type_2_file(line)
if(line == type3):
create_type3_file(line)
... and so on
def create_type_1_file(line):
# writes to file1
def create_type2_file(line):
# writes to file2
def create_type_3_file(line):
# write to file 3
次のように書き込むパスを検討してください。
file1 = /home/user/data/file1
file2 = /home/user/data/file2
file3 = /home/user/data/file3
で実行するとpseudo-distributed mode(machine with one node and hdfs daemons running)
、すべてのデーモンが同じファイルのセットに書き込むため、問題はありません
質問: - 1000 台のマシンのクラスターでこれを実行すると、それらは同じファイル セットに書き込みますか? 私はwriting to local filesystem
この場合、でこの操作を実行するためのより良い方法はありhadoop streaming
ますか?