【问题标题】:Retrieve files from remote HDFS从远程 HDFS 检索文件
【发布时间】:2015-12-16 06:30:22
【问题描述】:

我的本​​地机器没有安装 hdfs。我想从远程 hdfs 集群中检索文件。实现这一目标的最佳方法是什么?我是否需要 get 将文件从 hdfs 发送到集群机器 fs 之一,然后使用 ssh 检索它们?我希望能够通过 bash 脚本以编程方式执行此操作。

【问题讨论】:

标签: hadoop hdfs


【解决方案1】:

步骤如下:

  • 确保您的主机和目标集群之间存在连接
  • 将您的主机配置为客户端,您需要安装兼容的 hadoop 二进制文件。此外,您的主机需要使用相同的操作系统运行。
  • 确保您拥有相同的配置文件(core-site.xml、hdfs-site.xml)
  • 您可以运行hadoop fs -get命令直接获取文件

还有其他选择

  • 如果配置了 Webhdfs/httpFS,您实际上可以使用 curl 甚至您的浏览器下载文件。如果配置了 Webhdfs,您可以编写 bash 脚本。

如果您的主机无法将 Hadoop 二进制文件安装为客户端,那么您可以使用以下说明。

  • 启用从您的主机到集群上的节点之一的无密码登录
  • 运行命令ssh <user>@<host> "hadoop fs -get <hdfs_path> <os_path>"
  • 然后scp命令复制文件
  • 您可以在一个脚本中使用上述 2 个命令

【讨论】:

  • 一个后续问题。 httpFS 在性能方面与“client hadoop fs -get”解决方案相比如何?
  • httpFS 和 webhdfs 是一样的。您可以使用它下载,不需要使用 hadoop 二进制文件。
  • 在性能方面呢?使用二进制文件比使用 httpFS 更快吗?也许我应该开始另一个线程
  • "hadoop fs -get" 会比 http 更快。
  • 您也可以使用 HDFS NFS 网关 (docs.cloudera.com/HDPDocuments/HDP3/HDP-3.1.0/data-storage/…) 并将 HDFS 挂载到 NFS 服务器,然后将该 NFS 服务器共享连接到您需要的任何位置。请注意,它仍然具有与 HDFS 相同的限制(例如,仅附加写入),但您至少可以以更传统的方式编程访问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-01
  • 1970-01-01
  • 2015-11-28
  • 2020-07-27
  • 1970-01-01
  • 1970-01-01
  • 2012-04-07
相关资源
最近更新 更多