在Hadoop中进行数据的迁移和备份的主要方式是:
- 使用Sqoop将数据迁移到Hadoop:
- 将RDBMS中的数据导入到Hive、HBase等组件。
- 支持全量数据迁移与增量数据迁移。
- 支持反向将数据从Hadoop导出到RDBMS。
- 使用Sqoop实现Hadoop间数据迁移:
- 将HDFS或Hive中的数据迁移到HBase。
- 反向将HBase中的数据迁移到HDFS或Hive。
- 支持不同Hadoop生态组件间的数据迁移。
- 使用Flume或Sqoop实现Hadoop数据实时迁移:
- Flume从各类日志或消息队列采集实时数据到Hadoop。
- Sqoop监听数据库变化日志并进行实时增量迁移。
- 实现大数据的实时ETL。
- 使用Distcp进行Hadoop数据迁移与备份:
- 在不同集群或HDFS实例之间迁移大量数据。
- 实时同步主备HDFS集群或不同HDFS存储层。
- 基于时间点(时间戳)创建数据备份。
- Distcp实现HDFS数据备份示例:
- 同步主备HDFS文件数据:
hadoop distcp hdfs://master:8020/user/hive/default.db hdfs://backup:8020/user/hive/
- 基于时间点创建备份:
hadoop distcp hdfs://master:8020/user/hive/default.db hdfs://backup:8020/user/hive/backup-20191231
数据迁移和备份的主要作用是:
- 将数据从各类数据源迁移到大数据平台。
- 实现大数据生态间的数据交互与迁移。
- 建立大数据的高可靠存储与实时备份。
- 支持大数据的实时ETL与实时业务。
来看一些简单示例:
- Sqoop 全量/增量迁移:
- 全量:
sqoop import --connect jdbc:mysql://db.example.com/corp --table employees
- 增量:
sqoop import --connect jdbc:mysql://db.example.com/corp --table employees --check-column id --incremental lastmodified
- Distcp 实时同步或备份:
- 同步两个HDFS:
hadoop distcp hdfs://master:8020/user/hive/ hdfs://backup:8020/user/hive/
- 创建时间点备份:
hadoop distcp hdfs://master:8020/user/hive/ hdfs://backup:8020/user/hive/backup-20191231
所以通过Sqoop进行广义的数据迁移,加上Distcp同步不同HDFS或创建备份,我们可以构建一套完备的大数据迁移与备份方案。