Я пишу make-файл для запуска hadoop в Ubuntu. Когда команда inputs
соответствует run:
, она работает. Но если я переместил его ниже hdfs dfs -rm -f -r $(EXAMPLE_DIR)
, он провалился и отобразится сообщение об ошибке: make: inputs: Command not found.
Я новичок в Ubuntu, поэтому не знаю, как исправить проблему после поиска результата, потому что эта ошибка имеет слишком много возможных причин. Файл makefile показан ниже. Я отмечаю ту часть, которая меня смущает.makefile move command сделать это не работает
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, который демонстрирует проблему, с которой вы сталкиваетесь? И убедитесь, что ваш вопрос включает версию make-файла, которая создает проблему. – Kenster
@ Kenster Я бы хотел сказать, но это не связано с кодом, и у меня есть куча кода. – Anderson