服务器ipc版本7无法与客户端版本4通信

mw3dktmi  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(374)

我正在尝试提交一个hadoop map reduce作业,从一个cdh3u4集群到在cdh4.3上运行的集群(这个 fs.default.name 以及 mapred.job.tracker 配置参数设置为指向cdh4.3群集)。下面是堆栈跟踪。
1) 我们可以将hadoop作业提交给一个在不同版本上工作的远程集群吗?2) 有解决办法吗?
hadoop jar独立.jar

Exception in thread "main" org.apache.hadoop.ipc.RemoteException: Server IPC version 7 cannot communicate with client version 4
    at org.apache.hadoop.ipc.Client.call(Client.java:1107)
    at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:226)
    at $Proxy0.getProtocolVersion(Unknown Source)
    at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:398)
    at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:384)
    at org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:129)
    at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:255)
    at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:217)
    at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:89)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1563)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:67)
    at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:1597)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1579)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:228)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:111)
    at com.poc.standalone.HDFSRemoteAccess.main(HDFSRemoteAccess.java:43)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:197)
dgiusagp

dgiusagp1#

你需要设置 HADOOP_PREFIX 环境变量,指向已安装hadoop 2.x.x版本的目录。
例如

export HADOOP_PREFIX=pathtohadoop-2.2.0
efzxgjgh

efzxgjgh2#

我在尝试连接到hdfs时遇到过这个异常。我使用的是cdh4.6版本。
我通过添加clouderamvn依赖项解决了这个问题。您可以在这里找到依赖项列表。
首先,你应该检查你的依赖关系。
另一点是,您应该尝试使用fs.deafultfs config参数,而不是fs.default.name param。因为fs.default.name在cdh4x中不推荐使用
1) 您应该拥有这两个版本的依赖项,并且可以在它们之间切换。
2) 请看这里以保留不同版本的依赖关系。

相关问题