是否有webhdfs的Java接口来从hadoop集群获取数据

是否有webhdfs的Java接口来从hadoop集群获取数据,java,hadoop,interface,Java,Hadoop,Interface,我想在hadoop集群之外编写一个项目,它可以从集群中读取数据,但是office网站提供的文档只提供了“curl”方法。 Java是否有任何接口可以访问hadoop群集?查看cloudera的HOOP…提供对所有HDFS操作的访问,包括通过HTTP和HTTPS的读/写操作。查看cloudera的HOOP…提供对所有HDFS操作的访问,包括通过HTTP和HTTPS的读/写操作。是的。有用于通信的web接口使用Job tracker node可以了解作业的状态和所有客户端信息。如果您使用的是1.0.

我想在hadoop集群之外编写一个项目,它可以从集群中读取数据,但是office网站提供的文档只提供了“curl”方法。
Java是否有任何接口可以访问hadoop群集?

查看cloudera的HOOP…提供对所有HDFS操作的访问,包括通过HTTP和HTTPS的读/写操作。

查看cloudera的HOOP…提供对所有HDFS操作的访问,包括通过HTTP和HTTPS的读/写操作。

是的。有用于通信的web接口使用Job tracker node可以了解作业的状态和所有客户端信息。如果您使用的是1.0.0+版本的hadoop,则可以通过web界面与Job tracker node通信,了解作业的状态和所有客户端信息。查看
org.apache.hadoop.hdfs.web.WebHdfsFileSystem

如果尚未启用,您应该能够通过在hdfs-core.xml中设置以下配置属性来“启用”它:

  • dfs.webhdfs.enabled
    =
    true
进行此更改后,需要重新启动名称节点,您应该在名称节点日志文件中看到以下内容:

现在,您可以使用以下内容以编程方式使用Web Hdfs:

Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(new URI(), conf);

如果您使用的是1.0.0+版本的hadoop,请查看
org.apache.hadoop.hdfs.web.WebHdfsFileSystem

如果尚未启用,您应该能够通过在hdfs-core.xml中设置以下配置属性来“启用”它:

  • dfs.webhdfs.enabled
    =
    true
进行此更改后,需要重新启动名称节点,您应该在名称节点日志文件中看到以下内容:

现在,您可以使用以下内容以编程方式使用Web Hdfs:

Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(new URI(), conf);

以下Java库可用:


以下Java库可用:


有一个完整的Java HDFS API;你说的是除此之外的什么吗?我知道文件系统API:org.apache.hadoop.fs但是,这个类不能在集群之外运行,客户机不能连接到从机,我听说webHdfs提供了在集群之外运行文件系统的方法。但是我不知道Java接口。HDFSAPI可以在集群之外运行,因为它不需要在Hadoop作业中运行。您确实需要能够通过网络连接到名称节点,但webHdfs也是如此。我已经测试过了,但没有,出现错误:INFO hdfs.DFSClient:createBlockOutputStream 192.168.0.101:50010 java.net.SocketTimeoutException:等待通道准备好连接时超时66000毫秒。ch:java.nio.channels.SocketChannel[connection pending remote=/192.168.0.101:50010]12/05/28 17:22:50 INFO hdfs.DFSClient:放弃block blk_-6350835189174762628_6082好吧,在集群之外,我的意思是在本地网络之外。只有namenode有域。我目前也有同样的问题,我的Hadoop集群(实际上也是Spark集群)正在AWS的EC2机器上运行。我运行的Java代码需要访问集群外的HDFS,从本地计算机运行代码失败,原因是Amazon机器有内部IP,这些IP在Amazon服务器内解析,如果您在Amazon域之外,您将无法解析这些地址。临时解决方案是在我的机器上编写代码,然后在能够解析地址的AWS EC2服务器上运行代码;你说的是除此之外的什么吗?我知道文件系统API:org.apache.hadoop.fs但是,这个类不能在集群之外运行,客户机不能连接到从机,我听说webHdfs提供了在集群之外运行文件系统的方法。但是我不知道Java接口。HDFSAPI可以在集群之外运行,因为它不需要在Hadoop作业中运行。您确实需要能够通过网络连接到名称节点,但webHdfs也是如此。我已经测试过了,但没有,出现错误:INFO hdfs.DFSClient:createBlockOutputStream 192.168.0.101:50010 java.net.SocketTimeoutException:等待通道准备好连接时超时66000毫秒。ch:java.nio.channels.SocketChannel[connection pending remote=/192.168.0.101:50010]12/05/28 17:22:50 INFO hdfs.DFSClient:放弃block blk_-6350835189174762628_6082好吧,在集群之外,我的意思是在本地网络之外。只有namenode有域。我目前也有同样的问题,我的Hadoop集群(实际上也是Spark集群)正在AWS的EC2机器上运行。我运行的Java代码需要访问集群外的HDFS,从本地计算机运行代码失败,原因是Amazon机器有内部IP,这些IP在Amazon服务器内解析,如果您在Amazon域之外,您将无法解析这些地址。临时解决方案是在我的机器上编写代码,然后在能够解析地址的AWS EC2服务器上运行代码。我找不到“org.apache.hadoop.hdfs.web.WebHdfsFileSystem类”。您正在运行哪个版本的hadoop(如我所说,您需要v1.0.0+)用户/密码在哪里?我找不到“org.apache.hadoop.hdfs.web.WebHdfsFileSystem class”。您正在运行哪个版本的hadoop(如我所说,您需要v1.0.0+)用户/密码在哪里?Hoop被webhdfs取代。Cloudera不再支持其工作所需的Hoop服务器端点。webhdfs内置于hadoop堆栈中,集成度更高。只需启用它。Hoop被webhdfs取代。Cloudera不再支持其工作所需的Hoop服务器端点。Webhdfs内置于hadoop堆栈中,更加智能