当前位置:  开发笔记 > 前端 > 正文

将数据写入Hadoop

如何解决《将数据写入Hadoop》经验,为你挑选了4个好方法。

我需要从外部源(如Windows框)将数据写入Hadoop(HDFS).现在我一直在将数据复制到namenode上,并使用HDFS的put命令将其摄取到集群中.在我浏览代码时,我没有看到用于执行此操作的API.我希望有人可以告诉我我错了,并且有一种简单的方法可以对外部客户端进行HDFS编码.



1> Peter Wipper..:

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处理的流.


更具体地说(并使用hadoop jar运行code.jar {classname})org.apache.hadoop.fs.FileSystem.get(new org.apache.hadoop.mapred.JobConf()).create(new org.apache.hadoop. fs.Path( "however.file"));

2> Erik Forsber..:

对于加载我需要放入HDFS的数据的问题,我选择解决问题.

我没有将文件从他们所在的服务器上传到HDFS,而是写了一个Java Map/Reduce作业,映射器从文件服务器读取文件(在这种情况下通过https),然后直接写入HDFS(通过Java) API).

从输入中读取文件列表.然后我有一个外部脚本,用一个要获取的文件列表填充文件,将文件上传到HDFS(使用hadoop dfs -put),然后使用相当数量的映射器启动map/reduce作业.

这为我提供了出色的传输性能,因为可以同时读/写多个文件.

也许不是你想要的答案,但无论如何希望有用:-).



3> Erik Forsber..:

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

关于Hoop,它首先在Cloudera的博客中宣布,可以从github存储库下载.我已经成功地让这个版本成功地与至少Hadoop 0.20.1进行了对话,它也可能与较旧的版本对话.

如果您正在运行Hadoop 0.23.1,在编写本文时仍未发布,则Hoop将成为Hadoop的一部分,作为其自己的组件HttpFS.这项工作是作为HDFS-2178的一部分完成的.Hoop/HttpFS不仅可以代理HDFS,还可以代理其他与Hadoop兼容的文件系统,如Amazon S3.

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

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

选择哪个组件取决于您当前的设置以及您的需求.如果你现在需要一个到HDFS的HTTP REST接口而你正在运行一个不包含WebHDFS的版本,那么从github存储库开始使用Hoop似乎是最简单的选择.如果您正在运行包含WebHDFS的版本,我会继续这样做,除非您需要一些WebHDFS缺少的功能(访问其他文件系统,带宽限制等)



4> SquareCog..:

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

您还可以使用新的Cloudera桌面通过Web UI上传文件,但这对于巨型文件来说可能不是一个好选择.

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

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有