把一个远程文件到Hadoop的,而不将其复制到本地磁盘(putting a remote file

2019-06-25 22:21发布

我写一个shell脚本,只要他们产生的数据放入的Hadoop。 我可以ssh到我的主节点,在那里将文件复制到一个文件夹,然后把它们放进Hadoop的。 我要寻找一个shell命令摆脱复制主节点上的文件复制到本地磁盘。 为了更好地解释我需要什么,在这里下面你可以找到我到目前为止有:

1)将文件复制到主节点的本地磁盘:

scp test.txt username@masternode:/folderName/

我已经使用按键设置SSH连接。 所以,不需要密码来做到这一点。

2)I可以使用ssh远程执行Hadoop的put命令:

ssh username@masternode "hadoop dfs -put /folderName/test.txt hadoopFolderName/"

我所寻找的是如何管/这两个步骤合并成一个,并跳过masterNode的本地磁盘上的文件的本地副本。

谢谢

换句话说,我在某种程度上要管几个命令,我可以

Answer 1:

试试这个(未经测试):

cat test.txt | ssh username@masternode "hadoop dfs -put - hadoopFoldername/"

我已经使用了类似的伎俩各地复制目录:

tar cf - . | ssh remote "(cd /destination && tar xvf -)"

这种局地发送的输出tar进入的远程的输入tar



Answer 2:

在这里你已经产生的数据的节点,这是能够达到每个集群节点(名称节点,所有数据节点)的。

如果您有数据连接,那么你可以只执行Hadoop的FS从其中产生的数据机-put命令(假设你已经安装了Hadoop的二进制文件有太多):

#> hadoop fs -fs masternode:8020 -put test.bin hadoopFolderName/


Answer 3:

Hadoop提供了几个REST接口。 检查箍和WebHDFS 。 您应该能够将文件复制,而不将文件复制到使用它们来自非Hadoop的环境中的高手。



Answer 4:

(另)

因为在那里你创建自己的数据节点可以访问互联网,那么也许你可以安装Hadoop的客户端节点软件,然后将其添加到集群 - 正常的Hadoop FS -put后,然后断开并删除临时节点 - Hadoop的系统应该再自动使您的文件块的复制Hadoop集群内



文章来源: putting a remote file into hadoop without copying it to local disk