2016-07-27 9 views
0

Ich bin ein Noob in Hadoop Funke. Ich habe einen Hadoop/Funken-Cluster (1 Namenscode, 2 Datanode) eingerichtet. Jetzt versuche ich, Daten von DB zu importieren (mysql) mit Schaufel in HDFS, aber seine Fehler immerKann nicht mit Daten importieren: exitCode = 255

16/07/27 16:50:04 INFO mapreduce.Job: Running job: job_1469629483256_0004 
16/07/27 16:50:11 INFO mapreduce.Job: Job job_1469629483256_0004 running in uber mode : false 
16/07/27 16:50:11 INFO mapreduce.Job: map 0% reduce 0% 
16/07/27 16:50:13 INFO ipc.Client: Retrying connect to server: datanode1_hostname/172.31.58.123:59676. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=3, sleepTime=1000 MILLISECONDS) 
16/07/27 16:50:14 INFO ipc.Client: Retrying connect to server: datanode1_hostname/172.31.58.123:59676. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=3, sleepTime=1000 MILLISECONDS) 
16/07/27 16:50:15 INFO ipc.Client: Retrying connect to server: datanode1_hostname/172.31.58.123:59676. Already tried 2 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=3, sleepTime=1000 MILLISECONDS) 
16/07/27 16:50:18 INFO mapreduce.Job: Job job_1469629483256_0004 failed with state FAILED due to: Application application_1469629483256_0004 failed 2 times due to AM Container for appattempt_1469629483256_0004_000002 exited with exitCode: 255 
For more detailed output, check application tracking page:http://ip-172-31-55-182.ec2.internal:8088/cluster/app/application_1469629483256_0004Then, click on links to logs of each attempt. 
Diagnostics: Exception from container-launch. 
Container id: container_1469629483256_0004_02_000001 
Exit code: 255 
Stack trace: ExitCodeException exitCode=255: 
     at org.apache.hadoop.util.Shell.runCommand(Shell.java:545) 
     at org.apache.hadoop.util.Shell.run(Shell.java:456) 
     at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:722) 
     at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:212) 
     at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302) 
     at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 


Container exited with a non-zero exit code 255 
Failing this attempt. Failing the application. 
16/07/27 16:50:18 INFO mapreduce.Job: Counters: 0 
16/07/27 16:50:18 WARN mapreduce.Counters: Group FileSystemCounters is deprecated. Use org.apache.hadoop.mapreduce.FileSystemCounter instead 
16/07/27 16:50:18 INFO mapreduce.ImportJobBase: Transferred 0 bytes in 16.2369 seconds (0 bytes/sec) 
16/07/27 16:50:18 WARN mapreduce.Counters: Group org.apache.hadoop.mapred.Task$Counter is deprecated. Use org.apache.hadoop.mapreduce.TaskCounter instead 
16/07/27 16:50:18 INFO mapreduce.ImportJobBase: Retrieved 0 records. 
16/07/27 16:50:18 ERROR tool.ImportTool: Error during import: Import job failed! 

Ich bin in der Lage, manuell in HDFS zu schreiben:

hdfs dfs -put <local file path> <hdfs path> 

Aber wenn ich laufe Scoop Import Befehl

sqoop import --connect jdbc:mysql://<host>/<db_name> --username <USERNAME> --password <PASSWORD> --table <TABLE_NAME> --enclosed-by '\"' --fields-terminated-by , --escaped-by \\ -m 1 --target-dir <hdfs location> 

Kann jemand bitte sagen Sie mir, was ich tue falsch

Hier ist die Liste der Dinge, die ich schon

  1. Ausschalten Cluster versucht haben, HDFS Formatierung, dann Cluster neu zu starten (nicht helfen)
  2. dafür gesorgt, dass HDFS nicht im abgesicherten Modus

alle Knoten haben ist diese in ihrer /etc/hosts

127.0.0.1 localhost 
172.31.55.182 namenode_hostname 
172.31.58.123 datanode1_hostname 
172.31.58.122 datanode2_hostname 

# The following lines are desirable for IPv6 capable hosts 
::1 ip6-localhost ip6-loopback 
fe00::0 ip6-localnet 
ff00::0 ip6-mcastprefix 
ff02::1 ip6-allnodes 
ff02::2 ip6-allrouters 
ff02::3 ip6-allhosts 

Konfigurationsdateien:

Alle Knoten: $ HADOOP_CONF_DIR/Kern-site.xml:

<configuration> 
    <property> 
    <name>fs.defaultFS</name> 
    <value>hdfs://ip-172-31-55-182.ec2.internal:9000</value> 
    </property> 
</configuration> 

alle Knoten: $ HADOOP_CONF_DIR/Garn-site.xml:

<configuration> 

    <property> 
    <name>yarn.nodemanager.aux-services</name> 
    <value>mapreduce_shuffle</value> 
    </property> 

    <property> 
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> 
    <value>org.apache.hadoop.mapred.ShuffleHandler</value> 
    </property> 

    <property> 
    <name>yarn.resourcemanager.hostname</name> 
    <value>ip-172-31-55-182.ec2.internal</value> 
    </property> 

</configuration> 

Alle Knoten: $ HADOOP_CONF_DIR/mapred-site.xml:

<configuration> 
    <property> 
    <name>mapreduce.jobtracker.address</name> 
    <value>ip-172-31-55-182.ec2.internal:54311</value> 
    </property> 
    <property> 
    <name>mapreduce.framework.name</name> 
    <value>yarn</value> 
    </property> 
</configuration> 

NameNode Spezifische Konfigurationen

$ HADOOP_CONF_DIR/hdfs-site.xml:

<configuration> 
    <property> 
    <name>dfs.replication</name> 
    <value>2</value> 
    </property> 
    <property> 
    <name>dfs.datanode.data.dir</name> 
    <value>file:///mnt/hadoop_data/hdfs/namenode</value> 
    </property> 
    <property> 
    <name>dfs.datanode.address</name> 
    <value>0.0.0.0:50010</value> 
    </property> 
    <property> 
    <name>dfs.datanode.http.address</name> 
    <value>0.0.0.0:50075</value> 
    </property> 
    <property> 
    <name>dfs.datanode.https.address</name> 
    <value>0.0.0.0:50475</value> 
    </property> 
    <property> 
    <name>dfs.datanode.ipc.address</name> 
    <value>0.0.0.0:50020</value> 
    </property> 
</configuration> 

$ HADOOP_CONF_DIR/Herren: ip-172-31-55-182.ec2.internal

$ HADOOP_CONF_DIR/Sklaven:

ip-172-31-58-123.ec2.internal 
ip-172-31-58-122.ec2.internal 

DataNode Spezifische Konfigurationen

$ HADOOP_CONF_DIR/hdfs-site.xml:

<configuration> 
    <property> 
    <name>dfs.replication</name> 
    <value>2</value> 
    </property> 
    <property> 
    <name>dfs.datanode.data.dir</name> 
    <value>file:///mnt/hadoop_data/hdfs/datanode</value> 
    </property> 
    <property> 
    <name>dfs.datanode.address</name> 
    <value>0.0.0.0:50010</value> 
    </property> 
    <property> 
    <name>dfs.datanode.http.address</name> 
    <value>0.0.0.0:50075</value> 
    </property> 
    <property> 
    <name>dfs.datanode.https.address</name> 
    <value>0.0.0.0:50475</value> 
    </property> 
    <property> 
    <name>dfs.datanode.ipc.address</name> 
    <value>0.0.0.0:50020</value> 
    </property> 
</configuration> 
+0

versucht als '--fields-terminated-by ','? (einfache Anführungszeichen) –

+0

Fehler sieht aus wie - es versucht, Verbindung zu Datanode1 zu erhalten, aber fehlgeschlagen. Wie sieht die Datei "/ etc/hosts" aus? –

+0

thaks @ BigDataLearner für Ihre Antwort. Ich habe die 'fields-terminated-by' entfernt, um sicher zu gehen, aber der Fehler bleibt bestehen. Editiert auch meine Post und jetzt können Sie den Inhalt von '/ etc/hosts' sehen –

Antwort

0

Ich beende diesen Cluster und starte von vorne.

+0

Ok ... das hat funktioniert .. weiß nicht, was das Problem war, aber ich bin froh, dass es in der Startphase der Entwicklung ist –

0

Von wo u versuchen, die Daten zu importieren. Ich meine, von welcher Maschine aus du dich verbinden willst.Überprüfen Sie die Master- und Slaves-Datei in Namenkode und Datanode.

Versuchen Sie, die IP-Adresse von einem anderen Server ping und überprüfen, ob es als auftauchend ist.

+0

Die Maschine, von der ich versuche zu importieren, ist nicht Teil des Clusters. Es ist unter einem anderen AWS-Konto an einem anderen Ort. Ich bewerte MySQL durch öffentliche IP. Ich kann Verbindung zum mysql Server durch mysql cli Klient herstellen. http://ec2-54-210-146-69.compute-1.amazonaws.com:50070 –

0

diese Änderungen vornehmen und den Cluster neu zu starten, und versuchen Sie es erneut:

Bearbeiten, um den Teil, wie erwähnt in Kommentar (#) unten, und entfernen Sie den Kommentar

/etc/hosts Datei auf Client-Knoten:

127.0.0.1 localhost yourcomputername #get computername by "hostname -f" command and replace here 
172.31.55.182 namenode_hostname ip-172-31-55-182.ec2.internal 
172.31.58.123 datanode1_hostname ip-172-31-58-123.ec2.internal 
172.31.58.122 datanode2_hostname ip-172-31-58-122.ec2.internal 

/etc/hosts Datei auf Clusterknoten:

198.22.23.212 youcomputername #change to public ip of client node, change computername same as client node 
172.31.55.182 namenode_hostname ip-172-31-55-182.ec2.internal 
172.31.58.123 datanode1_hostname ip-172-31-58-123.ec2.internal 
172.31.58.122 datanode2_hostname ip-172-31-58-122.ec2.internal 
+0

Hallo @BigDataLearner, tat, was Sie vorgeschlagen, aber nicht helfen. –

+0

Sollte ich wieder von vorne beginnen, bin ich in einer Art Sackgasse hier? –

+0

es scheint 1nd DataNode Port verwendet '59676', müssen Sie Eigenschaften hinzufügen in' hdfs-site.xml' Datei für beide Datanodes 'dfs.datanode.address' und' dfs.datanode.ipc.address'. Beide Datenknoten sollten für beide Eigenschaften unterschiedliche Ports verwenden. Sie müssen daher 4 offene Ports im Cluster ermitteln und diese verwenden - Sie können diese als Referenz verwenden - [hdfs-dearult.xml] (https://hadoop.apache.org/ docs/r2.4.1/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml), dies sind Standardeinstellungen, aber Sie müssen in [hdfs-site.xml] überschreiben (http://stackoverflow.com/questions/25617474/how-to-specify-Datanode-Port-in-Hadoop) –