2016-05-23 14 views
1

Hallo Ich habe vor kurzem Hadoop 2.7.2 in einem verteilten Modus installiert, mit dem Nodenode hadoop und Datanode ist hadoop1 und hadoop2. Wenn ich yarn jar /usr/local/hadoop/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar pi 2 1000 in bash, es gibt mir Fehlermeldung wie:Hadoop-Beispiel funktioniert nicht nach der Installation

Number of Maps = 2 
Samples per Map = 1000 
java.io.IOException: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Protocol message tag had invalid wire type.; Host Details : local host is: "benji/192.168.1.4"; destination host is: "hadoop":9000; 
    at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:773) 
    at org.apache.hadoop.ipc.Client.call(Client.java:1479) 
    at org.apache.hadoop.ipc.Client.call(Client.java:1412) 
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:229) 
    at com.sun.proxy.$Proxy9.getFileInfo(Unknown Source) 
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:771) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:191) 
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102) 
    at com.sun.proxy.$Proxy10.getFileInfo(Unknown Source) 
    at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:2108) 
    at org.apache.hadoop.hdfs.DistributedFileSystem$22.doCall(DistributedFileSystem.java:1305) 
    at org.apache.hadoop.hdfs.DistributedFileSystem$22.doCall(DistributedFileSystem.java:1301) 
    at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81) 
    at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1301) 
    at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1424) 
    at org.apache.hadoop.examples.QuasiMonteCarlo.estimatePi(QuasiMonteCarlo.java:278) 
    at org.apache.hadoop.examples.QuasiMonteCarlo.run(QuasiMonteCarlo.java:354) 
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) 
    at org.apache.hadoop.examples.QuasiMonteCarlo.main(QuasiMonteCarlo.java:363) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:71) 
    at org.apache.hadoop.util.ProgramDriver.run(ProgramDriver.java:144) 
    at org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:74) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.apache.hadoop.util.RunJar.run(RunJar.java:221) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136) 
Caused by: com.google.protobuf.InvalidProtocolBufferException: Protocol message tag had invalid wire type. 
    at com.google.protobuf.InvalidProtocolBufferException.invalidWireType(InvalidProtocolBufferException.java:99) 
    at com.google.protobuf.UnknownFieldSet$Builder.mergeFieldFrom(UnknownFieldSet.java:498) 
    at com.google.protobuf.GeneratedMessage.parseUnknownField(GeneratedMessage.java:193) 
    at org.apache.hadoop.ipc.protobuf.RpcHeaderProtos$RpcResponseHeaderProto.<init>(RpcHeaderProtos.java:2207) 
    at org.apache.hadoop.ipc.protobuf.RpcHeaderProtos$RpcResponseHeaderProto.<init>(RpcHeaderProtos.java:2165) 
    at org.apache.hadoop.ipc.protobuf.RpcHeaderProtos$RpcResponseHeaderProto$1.parsePartialFrom(RpcHeaderProtos.java:2295) 
    at org.apache.hadoop.ipc.protobuf.RpcHeaderProtos$RpcResponseHeaderProto$1.parsePartialFrom(RpcHeaderProtos.java:2290) 
    at com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:200) 
    at com.google.protobuf.AbstractParser.parsePartialDelimitedFrom(AbstractParser.java:241) 
    at com.google.protobuf.AbstractParser.parseDelimitedFrom(AbstractParser.java:253) 
    at com.google.protobuf.AbstractParser.parseDelimitedFrom(AbstractParser.java:259) 
    at com.google.protobuf.AbstractParser.parseDelimitedFrom(AbstractParser.java:49) 
    at org.apache.hadoop.ipc.protobuf.RpcHeaderProtos$RpcResponseHeaderProto.parseDelimitedFrom(RpcHeaderProtos.java:3167) 
    at org.apache.hadoop.ipc.Client$Connection.receiveRpcResponse(Client.java:1085) 
    at org.apache.hadoop.ipc.Client$Connection.run(Client.java:979) 

Und wenn ich hadoop jar /usr/local/hadoop/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar pi 2 1000 tun, gibt es Fehlermeldung wie:

Number of Maps = 2 
Samples per Map = 1000 
java.io.IOException: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Protocol message tag had invalid wire type.; Host Details : local host is: "hadoop/192.168.1.4"; destination host is: "hadoop":9000; 
at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:773) 
... blabla ... 

Mitteilung über den seltsamen geheimnisvollen Unterschied zwischen den beiden Fehlermeldungen liegt im lokalen Hostnamen (einer ist und der andere ist hadoop/192.168.1.4). Ich mache start-dfs.sh und start-yarn.sh vor der yarn jar ..., alle gut aussehen.

Ich werde sehr schätzen, wenn jemand helfen kann, das Problem zu lösen. Hier sind Inhalte einiger Konfigurationsdateien:

  • /etc/hosts Datei (benji ist das Nicht-hadoop Konto auf dem Master-Computer):

    192.168.1.4  hadoop benji 
    
    192.168.1.5  hadoop1 
    
    192.168.1.9  hadoop2 
    
  • /etc/hostname Datei:

    hadoop 
    
  • ~/.ssh/config Datei:

    # hadoop1 
    Host hadoop1 
    HostName 192.168.1.5 
    User hadoop1 
    IdentityFile ~/.ssh/hadoopid 
    
    # hadoop2 
    Host hadoop2 
    HostName 192.168.1.9 
    User hadoop2 
    IdentityFile ~/.ssh/hadoopid 
    
    # hadoop localhost 
    Host localhost 
    HostName localhost 
    User hadoop 
    IdentityFile ~/.ssh/hadoopid 
    
    # hadoop 
    Host hadoop 
    HostName hadoop 
    User hadoop 
    IdentityFile ~/.ssh/hadoopid 
    
  • core-site.xml Datei:

    <configuration> 
    
    <property> 
    
        <name>hadoop.tmp.dir</name> 
    
        <value>file:///usr/local/hadoop/hadoopdata/tmp</value> 
    
        <description>A base for other temporary directories.</description> 
    
    </property> 
    
    <property> 
    
    <name>fs.defaultFS</name> 
    
    <value>hdfs://hadoop:9000</value> 
    
    </property> 
    
    <property> 
    
        <name>io.file.buffer.size</name> 
    
        <value>131072</value> 
    
    </property> 
    
    </configuration> 
    
  • hdfs-site.xml Datei:

    <configuration> 
    
    <property> 
    
    <name>dfs.namenode.name.dir</name> 
    
    <value>file:///usr/local/hadoop/hadoopdata/dfs/namenode</value> 
    
    </property> 
    
    <property> 
    
    <name>dfs.datanode.du.reserved</name> 
    
    <value>21474836480</value> 
    
    </property> 
    
    <property> 
    
    <name>dfs.datanode.data.dir</name> 
    
    <value>file:///usr/local/hadoop/hadoopdata/dfs/datanode</value> 
    
    </property> 
    
    <property> 
    
    <name>dfs.replication</name> 
    
    <value>1</value> 
    
    </property> 
    
    <property> 
    
    <name>dfs.namenode.secondary.http-address</name> 
    
    <value>hadoop:9001</value> 
    
    </property> 
    
    <property> 
    
    <name>dfs.webhdfs.enabled</name> 
    
    <value>true</value> 
    
    </property> </configuration> 
    

Könnte jemand in dieser Frage helfen? Vielen Dank!

UPDATE 1

dachte ich, ein Teil des Problems aus. Ich habe jps und gefunden Datanode und namenode wurde nicht ausgeführt. Nach netstat -an | grep 9000 und lsof -i :9000 habe ich festgestellt, dass ein anderer Prozess den Port 9000 abgehört. Die NameNode konnte laufen, nachdem ich fs.defaultFS von hdfs://hadoop:9000 zu hdfs://hadoop:9001 in der core-site.xml Datei geändert und dfs.namenode.secondary.http-addresshadoop:9001-hadoop:9002 in hdfs-site.xml. Die protocol-buffer Fehlermeldung ist nach dieser Änderung verschwunden. Nach dem Ergebnis von jps liefen die Daten noch nicht.

Die DataNode Protokolldatei zeigt etwas Seltsames passiert:

... blabla ... 
2016-05-19 12:27:12,157 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: hadoop/192.168. 
1.4:9000. Already tried 44 time(s); maxRetries=45 
2016-05-19 12:27:32,158 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Problem connecting to se 
rver: hadoop/192.168.1.4:9000 
... blabla ... 
2016-05-19 13:41:55,382 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: RECEIVED SIGNAL 15: SIGTERM 
2016-05-19 13:41:55,387 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG: 
... blabla ... 

Ich verstehe nicht, warum die DataNode zum NameNode auf Port 9000 zu verbinden versucht.

+0

Wo ist der '127.0.0.1 localhost' in Ihrer'/etc/hosts'? –

+0

Ich habe es vorher auskommentiert, weil es nicht im verteilten Modus verwendet wird. Ich habe gerade '127.0.0.1 localhost' zurück hinzugefügt, aber die Fehlermeldungen sind die gleichen. –

+0

Können Sie alle Slave-Maschinen vom Master aus passwortlos authentifizieren – gonephishing

Antwort

0

Sie sollten eine konfigurierte Hadoop-Paket in allen Sklaven installiert haben, nur die fs.defaultFS in NameNode zu hdfs://hadoop:9001 ändert aber nicht die Datanodes werden die Datanodes ergeben versuchen, hdfs://hadoop:900 zu verbinden, wie es in ihrem core-site.xml angegeben wird.

+0

Ich habe die Konfigurationsdatei von Master zu Slave "scp". Der Fehler ist nicht deswegen. –

Verwandte Themen