0

来自: http ://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/5030259c-3255-4aa7-a348-e102c007ce0d/

我正在检查预发布服务https://www.hadooponazure.com。除了通常的作业执行之外,我还想从我的应用程序访问 HDFS。我正在尝试在名称节点上运行它,可通过 RDP 获得。

我已经尝试了 stahdard Java HDFS 驱动程序(使用 org.apache.hadoop.fs.FileSystem.get() 方法打开),包括名称节点配置('C:\Apps\dist\conf')到类路径中。据我了解,这应该足以以与名称节点相同的方式将我的应用程序连接到 HDFS 集群。

但我得到以下异常:

Exception in thread "main" java.io.IOException: Failed on local exception: java.io.EOFException; Host Details : local host is: "RD00155D42B620/10.*.*.*"; destination host is: ""10.*.*.*":9000;
        at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:724)
        at org.apache.hadoop.ipc.Client.call(Client.java:1090)
        at org.apache.hadoop.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:193)
        at $Proxy6.getFileInfo(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:100)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:65)
        at $Proxy6.getFileInfo(Unknown Source)
        at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:1170)
        at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:725)
        at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1165)
        at org.gridgain.examples.dataload.GridCacheHdfsDataLoaderExample.populateHdfs(GridCacheHdfsDataLoaderExample.java:225)
        at org.gridgain.examples.dataload.GridCacheHdfsDataLoaderExample.main(GridCacheHdfsDataLoaderExample.java:93)
Caused by: java.io.EOFException
        at java.io.DataInputStream.readInt(DataInputStream.java:392)
        at org.apache.hadoop.ipc.Client$Connection.receiveResponse(Client.java:818)
        at org.apache.hadoop.ipc.Client$Connection.run(Client.java:756)

(其中 10. . .* 是名称节点的 ip,我正在运行我的应用程序)。

我认为这种连接失败是由某种 Azure 的内部策略引起的。

所以我有两个主要问题:

  1. 该服务是否支持到 HDFS 的外部连接?
  2. 我尝试使用名称节点的配置连接到 HDFS 是否正确?
4

1 回答 1

0

根据我的经验,您的错误表明服务器(Azure 端)上部署的 Hadoop 库与您尝试运行代码的版本之间存在版本不匹配。

于 2012-12-31T00:29:19.313 回答