我想使用存储在HDFS中的输入文件在hadoop之外运行一些可执行文件(但在同一个集群上)。
是否需要将这些文件本地复制到节点?或者有没有办法在hadoop之外访问HDFS?
关于如何做到这一点的任何其他建议都没问题。不幸的是,我的可执行文件无法在hadoop中运行。
谢谢!
答案 0 :(得分:5)
有几种典型的方式:
hadoop fs -cat /path/to/file/part-r-* | myprogram.pl
输入,则可以使用hadoop cat流式传输数据。您可以假设使用此命令行命令创建一个桥,例如popen。答案 1 :(得分:3)
同时检查WebHDFS哪个made进入1.0.0版本,并且也将在23.1版本中。由于它基于rest API,因此任何语言都可以访问它,并且Hadoop也不需要安装在需要HDFS文件的节点上。也。它与orangeoctopus提到的其他选项一样快。
答案 2 :(得分:0)
最好的方法是在运行代码的框中安装“hadoop-0.20-native”软件包。 hadoop-0.20-native软件包可以访问hdfs文件系统。它可以充当hdfs代理。
答案 3 :(得分:0)
我有类似的问题,并提出了适当的问题。我需要访问集群外的HDFS / MapReduce服务。找到解决方案后我posted answer here for HDFS。最痛苦的问题恰好是用户身份验证,在我的情况下,在最简单的情况下解决了(完整的代码在我的问题中)。
如果您需要最小化依赖关系并且不想在客户端here is nice Cloudera article上安装hadoop,那么如何配置Maven为此构建JAR。我的案子100%成功。
与HDFS访问相比,远程MapReduce作业发布的主要区别只有一个配置设置(检查mapred.job.tracker
变量)。