2016-10-05 4 views
-1

arbeitet ich schreibe eine Make-Datei hadoop in Ubuntu laufen. Wenn der Befehl inputsrun: 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 
+0

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

+0

@Kenster Ich würde es gerne sagen, aber es ist nicht im Zusammenhang mit dem Code und ich habe eine Menge Code. – Anderson

Antwort

0

Sie scheinen sehr verwirrt darüber zu sein, wie Makefiles funktionieren. Sie müssen mit simoke starten, bevor Sie komplexe versuchen.

Wenn eine Make-Datei eine Regel wie folgt enthält:

foo: bar 
    kleb 

dann foo ist ein Ziel (in der Regel der Name einer Datei, die bauen zu machen). bar ist ein weiteres Ziel und kleb ist ein Befehl, der von der Schale ausgeführt werden soll. Wenn Sie bar und kleb tauschen, werden Sie wahrscheinlich eine Fehlermeldung erhalten, weil kleb wahrscheinlich kein Ziel ist, die Stellen weiß, wie zu bauen, und bar ist wahrscheinlich kein Befehl der, dass die Schale weiß, wie auszuführen.

+0

Aber es ist nicht wie der einfache. Die Eingänge in der Make-Datei definiert, was bedeutet es eine Reihe von Befehlen – Anderson

+0

@Anderson umfassen: Ich vermute, dass Sie den gleichen Namen für zwei verschiedene Dinge verwenden, und andernfalls eine Variable zu erweitern. Wenn Sie uns ein [minimales vollständiges Beispiel] (http://stackoverflow.com/help/mcve) geben, kann ich vielleicht spezifischer sein. – Beta

Verwandte Themen