加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

怎样将数据移入和移出Hadoop?

发布时间:2018-10-13 15:09:48 所属栏目:教程 来源:赵钰莹
导读:【新产物上线啦】51CTO播客,随时随地,碎片化进修 企业在项目中完全行使Hadoop之前,数据移动是必需办理的工作之一。怎样将数千台主机日记数据放入Hadoop?从相关型可能No/NewSQL体系以及Hadoop中获取数据的最有用要领是什么?怎样将Hadoop中天生的Lucene索

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。

接头

在开始之前,必要确保在集群上启用WebHDFS(默认不启动),这由dfs.webhdfs.enabled属性节制。假如未启用,则必要更新hdfs-site.xml并添加以下内容:

怎样将数据移入和移出Hadoop?

在这种技能中,我们将先容在不安详的Hadoop集群上运行WebHDFS.3的环境。假如正在行使安详的Hadoop集群,则不会提供user.name参数。

相反,我们将在与WebHDFS交互之前行使kinit对Kerberos举办身份验证,然后在curl呼吁行中提供-negotiate -u:youruser。

告诫:假如为已经封锁了安详性的集群启用WebHDFS,则可以轻松地将其用作集群中恣意用户呼吁(只需将URL中的用户名变动为簇)。提议仅在打开安详性的环境下运行WebHDFS。

要想在此技能中行使HTTP与NameNode举办通讯,必要知道运行NameNode RPC处事的主机和端口,这是行使dfs.namenode.http-address属性设置的。在伪漫衍式配置中,这很也许配置为0.0.0.0:50070。我们假设别的技能的伪漫衍式——替代恰当的主机和端口举办配置。

起首行使CLI在HDFS中建设文件:

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

行使WebHDFS获取有关该文件的各类风趣的元数据(用户名替代为以下URL中的aholmes):

怎样将数据移入和移出Hadoop?

呼吁语法由两部门构成:一是路径;二是正在执行的操纵。可是,必要提供执行操纵的用户名,不然HDFS将假定你是一个会见受限的匿名用户。

怎样将数据移入和移出Hadoop?
图5.1 理会WebHDFS URL路径

从HDFS读取文件只需将OPEN指定为operation:

怎样将数据移入和移出Hadoop?

行使WebHDFS编写文件分为两步:第一步关照NameNode建设新文件的意图,可以行使HTTP PUT呼吁执行此操纵:

怎样将数据移入和移出Hadoop?

(编辑:湖南网)

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

热点阅读