C++ 使用在AmazonEC2上运行的datanode的私有ip地址的hdfs客户端程序
全部, 我将按照以下步骤在AmazonEC2上设置hadoop单节点集群。namenode和datanode都在一个AmazonEC2实例上运行C++ 使用在AmazonEC2上运行的datanode的私有ip地址的hdfs客户端程序,c++,hadoop,amazon-ec2,hdfs,C++,Hadoop,Amazon Ec2,Hdfs,全部, 我将按照以下步骤在AmazonEC2上设置hadoop单节点集群。namenode和datanode都在一个AmazonEC2实例上运行 我有一个C++的HDFS客户端程序,它不运行EC2实例上的运行。 当我的客户机程序尝试将数据写入集群时,我遇到以下异常: 2014-02-13 14:37:01,027 INFO hdfs.DFSClient(DFSOutputStream.java:createBlockOutputStream(1175)) - Exception in cre
我有一个C++的HDFS客户端程序,它不运行EC2实例上的运行。 当我的客户机程序尝试将数据写入集群时,我遇到以下异常:
2014-02-13 14:37:01,027 INFO hdfs.DFSClient(DFSOutputStream.java:createBlockOutputStream(1175)) - Exception in createBlockOutputStream
org.apache.hadoop.net.ConnectTimeoutException: 60000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=/10.168.15.63:50010]
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:532)
at org.apache.hadoop.hdfs.DFSOutputStream.createSocketForPipeline(DFSOutputStream.java:13
该文件是在hdfs上创建的,但为空。例外情况似乎表明它无法在datanode上创建数据块,因为它使用了私有ip地址(10.168.15.63:50010)而不是公共ip地址(ec2-54-xxx-xxx-233.us-xxx-1.compute.amazonaws.com或54.xxx.xxx.233)。我没有固定的ip地址(即弹性ip地址)
下面是我如何在hdfs-site.xml中定义datanode地址的
<property>
<name>dfs.datanode.address</name>
<value>ec2-54-xxx-xxx-233.us-xxx-1.compute.amazonaws.com:50010</value>
<description>The host and port that the MapReduce job tracker runs at. If "local", then jobs are run in-process as a single map and reduce task.
</description>
</property>
dfs.datanode.address
ec2-54-xxx-xxx-233.us-xxx-1.compute.amazonaws.com:50010
MapReduce作业跟踪器运行的主机和端口。如果为“本地”,则作业作为单个映射在进程中运行,并减少任务。
为了使远程客户端能够访问EC2上的Hadoop集群,还需要配置什么
提前感谢您的帮助