私はUbuntuでhadoopを実行するためのmakefileを書きます。 inputs
コマンドがrun:
に従うと動作します。しかし、私がhdfs dfs -rm -f -r $(EXAMPLE_DIR)
の下に移動すると、それは失敗し、エラーメッセージを表示します: make: inputs: Command not found.
私はUbuntuを初めて使用していますので、このエラーが多すぎる可能性があるため、結果を検索した後に問題を解決する方法がわかりません。メークファイルは以下の通りです。私は私を混乱させる部分に印を付ける。makefile moveコマンドは動作しません
EXAMPLE_DIR = /user/$(USER)/matmult-dense/
INPUT_DIR = $(EXAMPLE_DIR)/input
OUTPUT_DIR = $(EXAMPLE_DIR)/output
OUTPUT_FILE = $(OUTPUT_DIR)/part-00000
HADOOP_VERSION = 2.6.0
# generally I use HADOOP_HOME, for not modifying the original makefile, I set up the HADOOP_PREFIX here
HADOOP_PREFIX = /usr/local/hadoop
TOOLLIBS_DIR=$(HADOOP_PREFIX)/share/hadoop/tools/lib/
//Hi, start here
run: inputs
hdfs dfs -rm -f -r $(EXAMPLE_DIR)
//Hi, end here. If swap them, the error comes
hadoop jar $(TOOLLIBS_DIR)/hadoop-streaming-$(HADOOP_VERSION).jar \
-files ./map1.py,./reduce1.py \
-mapper ./map1.py \
-reducer ./reduce1.py \
-input $(INPUT_DIR) \
-output $(OUTPUT_DIR) \
-numReduceTasks 1 \
-jobconf stream.num.map.output.key.fields=5 \
-jobconf stream.map.output.field.separator='\t' \
-jobconf mapreduce.partition.keypartitioner.options=-k1,3
hdfs dfs -rm $(INPUT_DIR)/file01
hdfs dfs -mv $(OUTPUT_FILE) $(INPUT_DIR)/file01
hdfs dfs -rm -f -r $(OUTPUT_DIR)
hadoop jar $(TOOLLIBS_DIR)/hadoop-streaming-$(HADOOP_VERSION).jar \
-files ./map2.py,./reduce2.py \
-mapper ./map2.py \
-reducer ./reduce2.py \
-input $(INPUT_DIR) \
-output $(OUTPUT_DIR) \
-numReduceTasks 1 \
-jobconf stream.num.map.output.key.fields=2 \
-jobconf stream.map.output.field.separator='\t'
hdfs dfs -cat $(OUTPUT_FILE)
directories:
hdfs dfs -test -e $(EXAMPLE_DIR) || hdfs dfs -mkdir $(EXAMPLE_DIR)
hdfs dfs -test -e $(INPUT_DIR) || hdfs dfs -mkdir $(INPUT_DIR)
hdfs dfs -test -e $(OUTPUT_DIR) || hdfs dfs -mkdir $(OUTPUT_DIR)
inputs: directories
hdfs dfs -test -e $(INPUT_DIR)/file01 \
|| hdfs dfs -put matrices $(INPUT_DIR)/file01
clean:
hdfs dfs -rm -f -r $(INPUT_DIR)
hdfs dfs -rm -f -r $(OUTPUT_DIR)
hdfs dfs -rm -r -f $(EXAMPLE_DIR)
hdfs dfs -rm -f matrices
.PHONY: run
質問の理解に問題があります。あなたの質問を編集して、あなたが持っている問題を示すmakeを実行する例を含めることができますか?あなたの質問には、問題を引き起こすmakefileのバージョンが含まれていることを確認してください。 – Kenster
@Kenster私はそれを書いておきたいが、それはコードに関連していないので、コードがたくさんある。 – Anderson