加入收藏 | 设为首页 | 会员中心 | 我要投稿 惠州站长网 (https://www.0752zz.com.cn/)- 办公协同、云通信、物联设备、操作系统、高性能计算!
当前位置: 首页 > 教程 > 正文

如何将数据移入和移出Hadoop?

发布时间:2018-10-17 15:25:34 所属栏目:教程 来源:赵钰莹
导读:副标题#e# 【新产品上线啦】51CTO播客,随时随地,碎片化学习 企业在项目中完全使用Hadoop之前,数据移动是必须解决的事情之一。如何将数千台主机日志数据放入Hadoop?从关系型或者No/NewSQL系统以及Hadoop中获取数据的最有效方法是什么?如何将Hadoop中生成

Hadoop -put命令的行为与Linux中的Linux cp命令不同,如果目标已存在,则会被覆盖; 在Hadoop中,副本失败并显示错误:

  1. put: `hdfs-file.txt': File exists 

必须添加-f选项以强制覆盖文件:

  1. $ hadoop fs -put -f local-file.txt hdfs-file.txt 

与Linux cp命令非常相似,可以使用相同的命令复制多个文件。在这种情况下,最后一个参数必须是HDFS中复制本地文件的目录:

  1. $ hadoop fs -put local-file1.txt local-file2.txt /hdfs/dest/ 

可以使用Linux管道将命令输出传递到HDFS文件——使用相同的-put命令并在其后添加单独的连字符,这告诉Hadoop从标准输入读取:

  1. $ echo "the cat sat on the mat" | hadoop fs -put - hdfs-file.txt 

要测试文件或目录是否存在,请使用-test命令和-e或-d选项分别测试文件或目录是否存在。如果文件或目录存在,则命令的代码为0;如果不存在,则为1:

  1. $ hadoop fs -test -e hdfs-file.txt  
  2. $ echo $?  
  3. 1  
  4. $ hadoop fs -touchz hdfs-file.txt  
  5. $ hadoop fs -test -e hdfs-file.txt  
  6. $ echo $?  
  7. $ hadoop fs -test -d hdfs-file.txt  
  8. $ echo $?  

如果只想在HDFS中“touch”文件(创建一个新的空文件),那么touchz选项可以完成该工作:

如何将数据移入和移出Hadoop?
如何将数据移入和移出Hadoop?

CLI专为交互式HDFS活动而设计,它也可以合并到脚本中,以用于自动执行某些任务。CLI的缺点是级别较低,并且没有内置任何自动化机制。它需要为每个命令分配一个fork,如果在bash脚本中使用可能没问题,但如果试图将HDFS功能集成到Python或Java应用程序中,可能就会出现问题。在这种情况下,为每个命令启动外部进程的开销可能也是想要避免的。

使用REST加载文件

CLI便于快速运行命令和编写脚本。但是,它会产生为每个命令分配一个单独进程的开销,这可能是想要避免的,特别是编程语言与HDFS连接时。

问题

没有HDFS本机接口的编程语言如何与HDFS交互。

解决方案

使用Hadoop的WebHDFS接口,该接口为HDFS操作提供全功能的REST API。

讨论

(编辑:惠州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读