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

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属性的端口值一致。

时间: 2024-10-03 22:41:13

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

hadoop集群间数据迁移

问题描述 hadoop集群间数据迁移 bin/hadoop distcp hftp://master:50070/user/wp hdfs://ns1/user/ hadoop集群间数据迁移org.apache.hadoop.tools.mapred.RetriableFileCopyCommand$CopyReadException: java.net.SocketTimeoutException: connect timed out

《Hadoop实战手册》一1.5 使用Sqoop从HDFS导出数据到MySQL

1.5 使用Sqoop从HDFS导出数据到MySQL Sqoop是Apache基金会下的一个项目,是庞大Hadoop生态圈中的一部分.在很多方面Sqoop和distcp很相似(见1.3节).这两个工具都是构建在MapReduce之上的,利用了MapReduce的并行性和容错性.与集群间的数据复制不同,Sqoop设计通过JDBC驱动连接实现Hadoop集群与关系数据库之间的数据复制. 它的功能非常广泛,本节将以网络日志条目为例展示如何使用Sqoop从HDFS导入数据到MySQL数据库. 准备工作

《Hadoop MapReduce实战手册》一1.8 在分布式集群环境中设置Hadoop

1.8 在分布式集群环境中设置Hadoop Hadoop MapReduce实战手册 Hadoop的部署包括一套HDFS.一个JobTracker和多个TaskTracker.在1.5节中,我们讨论了HDFS的部署.为了设置Hadoop,我们需要配置JobTracker和TaskTracker,然后在HADOOP_ HOME/conf/slaves文件中指定TaskTracker列表.当我们启动JobTracker时,它会启动相应的TaskTracker节点列表.图1-5描述了一套完整的Hado

《Hadoop MapReduce实战手册》一1.9 在分布式集群环境中运行WordCount程序

1.9 在分布式集群环境中运行WordCount程序 Hadoop MapReduce实战手册本节将描述如何在分布式集群中运行作业. 准备工作启动Hadoop集群. 操作步骤现在让我们在分布式的Hadoop环境中运行WordCount示例程序. 把你的Hadoop发行版目录的README.txt文件复制到HDFS文件系统的/data/input1位置,作为我们前一节中编写的WordCountMapReduce示例的输入数据. >bin/hadoopdfs -mkdir /data/ >bin/

《Hadoop实战手册》一1.9 使用Pig从HDFS导出数据到MongoDB

1.9 使用Pig从HDFS导出数据到MongoDB MongoDB是一种NoSQL数据库,用于存储和检索海量数据.MongoDB通常用于存储面向用户的数据,这些数据必须经过清洗.格式化之后才可以被使用.Apache Pig从某种程度上讲就是用来处理这种任务的.Mongostorage类使得使用Pig可以非常方便地批量处理HDFS上的数据,再直接将这些数据导入MongoDB中.本节将使用Mongostorage类将HDFS上的数据导出到MongoDB数据库中. 准备工作 使用Mongo Hado

《Hadoop实战手册》一导读

前 言 Hadoop实战手册 本书能帮助开发者更方便地使用Hadoop,从而熟练地解决问题.读者会更加熟悉Hadoop相关的各种工具从而进行最佳的实践. 本书指导读者使用各种工具解决各种问题.这些工具包括:Apache Hive.Pig.MapReduce.Mahout.Giraph.HDFS.Accumulo.Redis以及Ganglia. 本书提供了深入的解释以及代码实例.每章的内容包含一组问题集的描述,并对面临的技术挑战提出了解决方案,最后完整地解决了这些问题.每节将单一问题分解成不同的步

《Hadoop实战手册》一第1章 Hadoop分布式文件系统——导入和导出数据

第1章 Hadoop分布式文件系统--导入和导出数据 Hadoop实战手册 本章我们将介绍: 使用Hadoop shell命令导入和导出数据到HDFS 使用distcp实现集群间数据复制 使用Sqoop从MySQL数据库导入数据到HDFS 使用Sqoop从HDFS导出数据到MySQL 配置Sqoop以支持SQL Server 从HDFS导出数据到MongoDB 从MongoDB导入数据到HDFS 使用Pig从HDFS导出数据到MongoDB 在Greenplum外部表中使用HDFS 利用Flum

《Hadoop实战手册》一1.4 使用Sqoop从MySQL数据库导入数据到HDFS

1.4 使用Sqoop从MySQL数据库导入数据到HDFS Sqoop是Apache基金下的一个项目,是庞大Hadoop生态圈中的一部分.在很多方面Sqoop和distcp很相似(见1.3节).这两个工具都是构建在MapReduce之上的,利用了MapReduce的并行性和容错性.与集群间的数据复制不同,Sqoop设计通过JDBC驱动连接实现Hadoop集群与关系数据库之间的数据复制. 它的功能非常广泛,本节将以网络日志条目为例展示如何使用Sqoop从MySQL数据库导入数据到HDFS. 准备工

《Hadoop实战手册》一1.10 在Greenplum外部表中使用HDFS

1.10 在Greenplum外部表中使用HDFS Greenplum是一个并行数据库,数据的存储与查询基于一个或多个PostgreSQL实例.它补充了Hadoop,提供对大数据的实时或准实时访问,它还支持使用HDFS文件作为外部表.外部表是一个处理Greenplum集群之外数据很好的解决方案.由于外部表访问首先要消耗网络带宽,所以与Greenplum集群内的数据相比,它应该存储那些访问相对不频繁的数据.本节将介绍如何创建只读的外部表和可读写的外部表. 准备工作 在本节假定你使用的Hadoop版