首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据写入Hadoop

将数据写入Hadoop
EN

Stack Overflow用户
提问于 2009-10-07 18:22:42
回答 6查看 53.1K关注 0票数 18

我需要从外部源(如windows box )将数据写入Hadoop (HDFS)。现在,我一直在将数据复制到namenode,并使用HDFS的put命令将其摄取到集群中。在我浏览代码时,我没有看到这样做的API。我希望有人能告诉我,我错了,有一种简单的方法可以针对HDFS编写外部客户端代码。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-10-07 18:27:57

安装Cygwin,在本地安装Hadoop (您只需要指向NN的二进制文件和配置--不需要实际运行服务),运行hadoop fs -copyFromLocal /path/to/localfile /hdfs/path/

你也可以使用新的Cloudera桌面通过web UI上传文件,尽管对于大文件来说这可能不是一个好的选择。

还有一个用于HDFS的WebDAV覆盖,但我不知道它有多稳定/可靠。

票数 11
EN

Stack Overflow用户

发布于 2009-10-27 18:17:19

Java中有一个API。您可以通过在项目中包含Hadoop代码来使用它。一般而言,JavaDoc非常有用,但当然,您必须知道您要查找的*g * http://hadoop.apache.org/common/docs/是什么

对于您的特定问题,可以查看:http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/fs/FileSystem.html (这适用于最新版本,有关不同版本,请参考其他JavaDocs!)

一个典型的调用是:Filesystem.get(new JobConf()).create(new Path("however.file"));,它返回一个可以用常规JavaIO处理的流。

票数 17
EN

Stack Overflow用户

发布于 2012-01-22 20:47:38

在我上一次回答大约2年后,现在有了两个新的替代方案- Hoop/HttpFS和WebHDFS。

关于Hoop,它最初是在Cloudera's blog中宣布的,可以从github repository下载。我已经设法让这个版本至少成功地与Hadoop 0.20.1进行了通信,它可能也可以与稍微老一点的版本通信。

如果你运行的是Hadoop0.23.1,在写这篇文章的时候还没有发布,那么Hoop是Hadoop的一部分,作为它自己的组件,HttpFS。这项工作是作为HDFS-2178的一部分完成的。Hoop/HttpFS不仅可以是HDFS的代理,也可以是其他Hadoop兼容文件系统的代理,比如亚马逊S3。

Hoop/HttpFS作为自己的独立服务运行。

还有WebHDFS,它作为NameNode和DataNode服务的一部分运行。它还提供了REST API,如果我理解正确的话,它与HttpFS API兼容。WebHDFS是Hadoop1.0的一部分,它的主要特性之一是提供数据局部性-当您发出读请求时,您将被重定向到数据所在的datanode上的WebHDFS组件。

选择哪个组件有点取决于您当前的设置和您的需求。如果您现在需要一个到HDFS的HTTP REST接口,并且您正在运行一个不包含WebHDFS的版本,那么从github存储库开始使用Hoop似乎是最简单的选择。如果您运行的是包含WebHDFS的版本,除非您需要WebHDFS缺少的一些Hoop特性(访问其他文件系统、带宽限制等),否则我会这么做。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1533330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档