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

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

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

使用NFS网关时需要考虑以下几点:

  • HDFS是仅附加文件系统。可以附加到文件,但不能执行随机写入。如果需要使用支持随机写入的文件系统来使用Hadoop,那么应该看看MapR的Hadoop distribution。
  • Hadoop 2.2版不支持Hadoop安全验证(Kerberos),并且有一个添加该支持的开放票证。
  • 在Hadoop 2.4(或3.0)之前,不支持代理用户。这实质上意味着以前版本的Hadoop将以超级用户身份执行所有命令,因为要求NFS网关作为与HDFS本身相同的用户运行。

由于这些限制,建议将NFS网关保留用于实验用途,或者用于不考虑用户级安全性的单租户集群。

使用DistCp在集群内和集群间复制数据

如果移入或移出Hadoop的数据量很大,通过单个主机汇集数据,一定要尽可能优化数据移动。DistCp可以在Hadoop集群之间以及进出NFS安装的数据之间高效复制数据。

问题

在Hadoop集群之间高效复制大量数据,并且进行增量复制。

解决方案

使用DistCp,一种内置于Hadoop中的并行文件复制工具。

讨论

本节,我们将首先介绍DistCp的重要配置。之后,我们将继续查看使用DistCp的特定方案,以及配置和运行DistCp的最佳方法。

此技术涵盖了Hadoop 2中可用的DistCp新版本,名为DistCp 2。此代码被反向移植到Hadoop 1.2.0中,可通过使用distcp2作为命令启用Hadoop 2来替换现有的DistCp,然后就可以正常使用distcp命令。

DistCp 2支持与DistCp的旧版本相同的命令行参数集,并带来了许多有用的优势:

  • 使用大量文件时减少了设置和执行时间,因为驱动程序不再需要预处理所有输入(现在这已推迟到mapper)。
  • 具有功能齐全的Java接口,无需Java客户端将参数序列化为字符串。
  • 原子提交允许全部复制语义。
  • 使用-update跳过目标中已存在的文件,如果文件属性与源文件不同,将导致文件属性发生更改。
  • 作为副本的一部分,不再跳过空目录。

DistCp使用仅map的MapReduce作业来执行复制。以下是一个非常简单的示例,在单个Hadoop集群中用于将源目录,/ hello,复制到目标目录,/world:

  1. $ hadoop distcp /hello /world 

如果/ world目录尚不存在,则此命令将创建/ world目录,然后将/ hello(其所有文件和目录递归)的内容复制到/ world。

处理已存在的目标文件

目标中已存在的文件和目录保持不变(即使文件不同)。

可以通过查看作业完成时转储到标准输出的SKIP计数器来查看跳过的文件数:

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

-update和-overwrite参数巧妙地改变了复制内容的行为。如果没有这些选项,如果源是目录,则在目标目录下创建该目录。使用-update或-overwrite参数,仅复制文件和子目录,而不复制源目录。通过一个例子证明这一点:

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

忽略错误

当使用DistCp复制大量文件时,使用-i标志执行命令以忽略错误是明智的。这样,单个错误不会导致整个复制过程失败,可以通过使用-update选项重新发出相同的DistCp命令来再次尝试复制失败文件。

动态复制策略

DistCp的默认行为是通过均匀地传播所有文件以使所有mapper复制大致相同的字节数来为每个mapper预分配工作。从理论上讲,这听起来像是一种公平分配工作的好方法,但实际上,诸如硬件,硬件错误和配置不良等因素往往导致长尾工作执行,少数落后的mapper占用时间比其他要长。

使用DistCp 2,可以使用替代策略,其中mapper直接接收工作而不是预先分配,这被称为动态复制策略,使用-strategy动态参数激活,添加此参数的效果是改进复制时间。

原子提交

DistCp 2的另一个有用功能是原子提交。DistCp默认将每个文件写入临时文件,然后移动到最终目标。这意味着无法撤消在作业中遇到错误之前复制的文件。

因此,原子提交允许在复制所有文件时将实际的“提交”推迟到作业结束,这样如果遇到错误,你将看不到任何部分写入,可以使用-atomic参数启用此功能。

并行性和mapper数量

目前,DistCp最细的工作单元是文件级别。因此,无论文件多大,都只使用一个mapper来复制,提高作业的mapper数量对提高复制速度没有任何影响。

(编辑:常州站长网)

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

热点阅读