arbeitet ich schreibe eine Make-Datei hadoop in Ubuntu laufen. Wenn der Befehl inputs
run:
folgt, funktioniert es. Aber wenn ich es bewegen unterhalb von hdfs dfs -rm -f -r $(EXAMPLE_DIR)
auf die Nach-unten, es ist fehlgeschlagen und zeigt die Fehlermeldung: make: inputs: Command not found.
Ich bin neu in Ubuntu so weiß ich nicht, wie das Problem zu beheben, nachdem das Ergebnis der Suche, weil dieser Fehler zu viele mögliche Ursachen. Das Makefile ist unten gezeigt. Ich markiere den Teil, der mich verwirrt.Make-Datei Bewegungsbefehl macht es nicht
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
Ich habe Probleme, Ihre Frage zu verstehen. Könnten Sie Ihre Frage so bearbeiten, dass sie ein Beispiel für das Ausführen von make enthält, das das Problem veranschaulicht, das Sie haben? Und stellen Sie sicher, dass Ihre Frage die Version des Makefile enthält, die das Problem verursacht. – Kenster
@Kenster Ich würde es gerne sagen, aber es ist nicht im Zusammenhang mit dem Code und ich habe eine Menge Code. – Anderson