在Hadoop 2名称节点上的Spark(0.9.1)Shell中运行此示例

scala> val file1 = sc.textFile("hdfs://testhadoopname1.myserver.com:9000/user/ubuntu/events/datepart=2014-04-11/2014-04-11-09-42.txt")
14/04/16 10:27:01 INFO storage.MemoryStore: ensureFreeSpace(74968) called with curMem=302142, maxMem=311387750
14/04/16 10:27:01 INFO storage.MemoryStore: Block broadcast_3 stored as values to memory (estimated size 73.2 KB, free 296.6 MB)
file1: org.apache.spark.rdd.RDD[String] = MappedRDD[7] at textFile at :12
scala> file1.count()

为什么我得到这个?

java.io.IOException:发生本地异常失败:com.google.protobuf.InvalidProtocolBufferException:协议(protocol)消息包含无效标记(零)。主机详细信息:本地主机为:“testhadoopname1.myserver.com/10.255.187.229”;目标主机是:“testhadoopname1.myserver.com”:9000;
在org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:764)
在org.apache.hadoop.ipc.Client.call(Client.java:1351)
在org.apache.hadoop.ipc.Client.call(Client.java:1300)
在org.apache.hadoop.ipc.ProtobufRpcEngine $ Invoker.invoke(ProtobufRpcEngine.java:206)
com.sun.proxy。$ Proxy14.getFileInfo(未知来源)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在java.lang.reflect.Method.invoke(Method.java:622)
在org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:186)
在org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
com.sun.proxy。$ Proxy14.getFileInfo(未知来源)
在org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:651)
在org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:1679)
在org.apache.hadoop.hdfs.DistributedFileSystem $ 17.doCall(DistributedFileSystem.java:1106)
在org.apache.hadoop.hdfs.DistributedFileSystem $ 17.doCall(DistributedFileSystem.java:1102)
在org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
在org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1102)
在org.apache.hadoop.fs.FileSystem.globStatusInternal(FileSystem.java:1701)
在org.apache.hadoop.fs.FileSystem.globStatus(FileSystem.java:1647)
在org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:222)
在org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:270)
在org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:140)
在org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply(RDD.scala:207)
在org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply(RDD.scala:205)
在scala.Option.getOrElse(Option.scala:120)
在org.apache.spark.rdd.RDD.partitions(RDD.scala:205)
在org.apache.spark.rdd.MappedRDD.getPartitions(MappedRDD.scala:28)
在org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply(RDD.scala:207)
在org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply(RDD.scala:205)
在scala.Option.getOrElse(Option.scala:120)
在org.apache.spark.rdd.RDD.partitions(RDD.scala:205)
在org.apache.spark.SparkContext.runJob(SparkContext.scala:898)
在org.apache.spark.rdd.RDD.count(RDD.scala:726)
在$ iwC $$ iwC $$ iwC $$ iwC。(:15)
在$ iwC $$ iwC $$ iwC。(:20)
在$ iwC $$ iwC。(:22)
在$ iwC。(:24)
在(:26)
在。(:30)
在 。()
7岁时)
在 。()
在$ print()
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在java.lang.reflect.Method.invoke(Method.java:622)
在org.apache.spark.repl.SparkIMain $ ReadEvalPrint.call(SparkIMain.scala:772)
在org.apache.spark.repl.SparkIMain $ Request.loadAndRun(SparkIMain.scala:1040)
在org.apache.spark.repl.SparkIMain.loadAndRunReq $ 1(SparkIMain.scala:609)
在org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:640)
在org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:604)
在org.apache.spark.repl.SparkILoop.reallyInterpret $ 1(SparkILoop.scala:793)
在org.apache.spark.repl.SparkILoop.interpretStartingWith(SparkILoop.scala:838)
在org.apache.spark.repl.SparkILoop.command(SparkILoop.scala:750)
在org.apache.spark.repl.SparkILoop.processLine $ 1(SparkILoop.scala:598)
在org.apache.spark.repl.SparkILoop.innerLoop $ 1(SparkILoop.scala:605)
在org.apache.spark.repl.SparkILoop.loop(SparkILoop.scala:608)
在org.apache.spark.repl.SparkILoop $$ anonfun $ process $ 1.apply $ mcZ $ sp(SparkILoop.scala:931)
在org.apache.spark.repl.SparkILoop $$ anonfun $ process $ 1.apply(SparkILoop.scala:881)
在org.apache.spark.repl.SparkILoop $$ anonfun $ process $ 1.apply(SparkILoop.scala:881)
在scala.tools.nsc.util.ScalaClassLoader $ .savingContextLoader(ScalaClassLoader.scala:135)
在org.apache.spark.repl.SparkILoop.process(SparkILoop.scala:881)
在org.apache.spark.repl.SparkILoop.process(SparkILoop.scala:973)
在org.apache.spark.repl.Main $ .main(Main.scala:31)
在org.apache.spark.repl.Main.main(Main.scala)
引起原因:com.google.protobuf.InvalidProtocolBufferException:协议(protocol)消息包含无效标记(零)。
com.google.protobuf.InvalidProtocolBufferException.invalidTag(InvalidProtocolBufferException.java:89)
在com.google.protobuf.CodedInputStream.readTag(CodedInputStream.java:108)
在org.apache.hadoop.ipc.protobuf.RpcHeaderProtos $ RpcResponseHeaderProto。(RpcHeaderProtos.java:1398)
在org.apache.hadoop.ipc.protobuf.RpcHeaderProtos $ RpcResponseHeaderProto。(RpcHeaderProtos.java:1362)
在org.apache.hadoop.ipc.protobuf.RpcHeaderProtos $ RpcResponseHeaderProto $ 1.parsePartialFrom(RpcHeaderProtos.java:1492)
在org.apache.hadoop.ipc.protobuf.RpcHeaderProtos $ RpcResponseHeaderProto $ 1.parsePartialFrom(RpcHeaderProtos.java:1487)
在com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:200)
在com.google.protobuf.AbstractParser.parsePartialDelimitedFrom(AbstractParser.java:241)
在com.google.protobuf.AbstractParser.parseDelimitedFrom(AbstractParser.java:253)
在com.google.protobuf.AbstractParser.parseDelimitedFrom(AbstractParser.java:259)
在com.google.protobuf.AbstractParser.parseDelimitedFrom(AbstractParser.java:49)
在org.apache.hadoop.ipc.protobuf.RpcHeaderProtos $ RpcResponseHeaderProto.parseDelimitedFrom(RpcHeaderProtos.java:2364)
在org.apache.hadoop.ipc.Client $ Connection.receiveRpcResponse(Client.java:996)
在org.apache.hadoop.ipc.Client $ Connection.run(Client.java:891)

最佳答案

问题是我使用的是非标准版本的Hadoop(2.0.3-alpha版本)。我使用Spark 0.9.1独立clustermanager在最新的Hadoop 2.3.0上重新创建了HDFS群集,并在spark-shell中运行了以上示例.....的工作方式与广告中所宣传的一样。

关于hadoop - 查询Hadoop时Spark提供InvalidProtocolBufferException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23116678/

10-16 21:29