微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HdfsDataExchanger hdfs 集群间数据交换

程序名称:HdfsDataExchanger

授权协议: 未知

操作系统: 跨平台

开发语言: Java

HdfsDataExchanger 介绍

当前比较流行的hdfs间数据迁移工具有hadoop认提供的distcp,阿里开源的datax,这些工具能够满足常规的大部分需求,但是当时碰到hadoop版本不一致、keberos授权等场景时就行不通了。针对这些特殊的应用场景和实际需求我就构思并实现了HdfsDataExchanger这种实现方案。通过在一台可以访问两边hadoop集群的中转机上部署HdfsDataExchanger就可以实现将一个集群的数据迁移到另一个集群。HdfsDataExchanger提供单机多线程数据迁移,不支持分布式并行执行。

  1. 不同版本的hdfs间文件迁移。

  2. 本地文件系统与hdfs间文件迁移。

  • 抽象一套hdfs文件操作接口。

  • 使用源集群和目标集群对应版本的hadoop分别实现接口。

  • 使用jetty的WebAppClassLoader分别加载两套(源和目标)hdfs相关的jar,并创建对应的FileSystem

  • 使用源FileSystem读取数据到缓冲区,然后使用目标FileSystem将缓冲区的数据写入到目标文件

  • data-exchanger目录下包含完整的部署目录

  • h1为hadoop1的配置(conf)和相关的jar包(jars)

  • h2为hadoop2的配置(conf)和相关的jar包(jars)

  • main为主程序相关的配置(conf)、相关的jar包(jars)和启动脚本(bin)

  • 配置说明

参数名 说明
thread.count 并行进行迁移数据的线程数量
buffer.size 读取数据缓冲区大小
src/dest.hdfs.resource.path 源/目标hdfs的jar包目录
src/dest.filesystem.implement 源/目标针对抽象出的hdfs接口(com.sebastian.fdx.fs.api.BaseFileSystem)的实现类,WebAppClassLoader根据此配置加载对应的实现
src/dest.hdfs.conf.path 源/目标对应的core-site.xml和hdfs-site.xml
  1. h1和h2的jars目录下应该包含依赖的所有hadoop jar包,当前只包含了fdx-hadoopX-filesystem-1.0-SNAPSHOT.jar,用户在使用时需根据实际的hadoop版本自行编译,并将依赖的jar和编译出来的jar一并放到对应的目录下。

  2. main/jars目录放fdx-executor和fdx-filesystem-api编译出的jar以及依赖的所有jar。

  3. main/conf/parameter.xml

  4. 执行
    bin/run.sh src_path1 src_path2 … dest_path 将src_pathX下的所有文件、目录复制到dest_path下

HdfsDataExchanger 官网

https://github.com/SebastinHe/HdfsDataExchanger

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐