我写一个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的本地磁盘上的文件的本地副本。
谢谢
换句话说,我在某种程度上要管几个命令,我可以
试试这个(未经测试):
cat test.txt | ssh username@masternode "hadoop dfs -put - hadoopFoldername/"
我已经使用了类似的伎俩各地复制目录:
tar cf - . | ssh remote "(cd /destination && tar xvf -)"
这种局地发送的输出tar
进入的远程的输入tar
。
在这里你已经产生的数据的节点,这是能够达到每个集群节点(名称节点,所有数据节点)的。
如果您有数据连接,那么你可以只执行Hadoop的FS从其中产生的数据机-put命令(假设你已经安装了Hadoop的二进制文件有太多):
#> hadoop fs -fs masternode:8020 -put test.bin hadoopFolderName/
Hadoop提供了几个REST接口。 检查箍和WebHDFS 。 您应该能够将文件复制,而不将文件复制到使用它们来自非Hadoop的环境中的高手。
(另)
因为在那里你创建自己的数据节点可以访问互联网,那么也许你可以安装Hadoop的客户端节点软件,然后将其添加到集群 - 正常的Hadoop FS -put后,然后断开并删除临时节点 - Hadoop的系统应该再自动使您的文件块的复制Hadoop集群内