《Hadoop实战手册》一1.3 使用distcp实现集群间数据复制

简介:

本节书摘来异步社区《Hadoop实战手册》一书中的第1章,第1.3节,作者: 【美】Jonathan R. Owens , Jon Lentz , Brian Femiano 译者: 傅杰 , 赵磊 , 卢学裕 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.3 使用distcp实现集群间数据复制

Hadoop分布式复制(distcp)是Hadoop集群间复制大量数据的高效工具。distcp是通过启动MapReduce实现数据复制的。使用MapReduce的好处包含可并行性、高容错性、作业恢复、日志记录、进度汇报等。Hadoop分布式复制(distcp)对在开发集群环境、研究集群环境和生产集群环境之间进行数据复制十分有用。

准备工作
首先必须保证复制源和复制目的地能够互相访问。

最好关闭复制源集群map任务的推测机制,可以在配置文件mapred-site.xml中将mapred.map.tasks.speculative.execution的值设置为false来实现,这样就可以避免在map任务失败的时候产生任何不可知的行为。

源集群和目的集群的RPC协议必须是一致。这意味着两个集群之间安装的Hadoop版本必须一致3。

操作步骤
完成以下几个步骤实现集群间的文件夹复制。

1.将集群A的weblogs文件夹复制到集群B上:

hadoop distcp hdfs://namenodeA/data/weblogs  hdfs://namenodeB/data/weblogs

2.将集群A的weblogs文件夹复制到集群B并覆盖已存在文件:

hadoop distcp –overwrite hdfs://namenodeA/data/weblogs hdfs://namenodeB/ data/weblogs

3.同步集群A和集群B之间的weblogs文件夹:

hadoop distcp –update hdfs://namenodeA/data/weblogs hdfs://namenodeB/data/ weblogs

工作原理
在源集群,文件夹中的内容将被复制为一个临时的大文件。将会启动一个只有map(map-only4)的MapReduce作业来实现两个集群间的数据复制。默认情况下,每个map就将会分配到一个256 MB的数据块文件。举个例子,如果weblogs文件夹总大小为10 GB,默认将会启动40个map,每个map会复制大约256 MB的数据。distcp复制也可以通过参数手动设置启动的map数量。

hadoop distcp –m 10 hdfs://namenodeA/data/weblogs hdfs://namenodeB/data/ weblogs

在上面这个例子中,将会启动10个map进行数据复制。如果weblogs文件夹的总大小是10 GB,那么每个map会复制大约1 GB的数据。

更多参考
如果要在运行的Hadoop版本不一样的两个集群之间进行数据复制,一般建议在复制源集群使用HftpFileSystem5。HftpFileSystem是一个只读的文件系统。相应的distcp命令只能在目标服务器上运行:

hadoop distcp hftp://namenodeA:port/data/weblogs hdfs://namenodeB/data/ weblogs

在上面这条命令中,port的值要与配置文件hdfs-site.xml中dfs.http.address属性的端口值一致。

相关文章
|
1月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
156 6
|
1月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
70 4
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
33 3
|
1月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
57 3
|
1月前
|
SQL 存储 分布式计算
Hadoop-16-Hive HiveServer2 HS2 允许客户端远程执行HiveHQL HCatalog 集群规划 实机配置运行
Hadoop-16-Hive HiveServer2 HS2 允许客户端远程执行HiveHQL HCatalog 集群规划 实机配置运行
43 3
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
66 3
|
1月前
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
98 3
|
1月前
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
43 3
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
46 2
|
1月前
|
SQL 存储 数据管理
Hadoop-15-Hive 元数据管理与存储 Metadata 内嵌模式 本地模式 远程模式 集群规划配置 启动服务 3节点云服务器实测
Hadoop-15-Hive 元数据管理与存储 Metadata 内嵌模式 本地模式 远程模式 集群规划配置 启动服务 3节点云服务器实测
58 2