IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

Hadoop集群间Hadoop方案探讨

量子数科院 2011-06-02 13:26:27 累计浏览 4,503 次
本机暂存

    在日常的工作过程中,我们经常会碰到在不同的Hadoop集群间来回copy数据的需求。这些不同的集群,他们的Hadoop版本可能不同,不同机房的acl也可能不通,给我们的distcp带来了很多困难。这里整理曾经遇到的各种需求,供各位看官参考:

    1.机房影响

    这里假设有两个Hadoop集群,a和b,版本一致,但位于不同的机房A1和B1(A1的机器变化较少,B1的机器变化更频繁,acl推荐从A1打通到B1),任务计划于机房A1的机器gateway_a上提交。需要做的工作是:打通集群A1的所有机器,到集群B1的所有机器间的acl,主要包括:Namenode端口、jobtracker端口等

    acl打通完成后,直接使用命令即可:

    hadoop distcp -i hdfs://sourcename:/URI_soure hdfs://destname:/URI_dest

    2.版本影响

    同理,假设有两个集群c和d,c的版本为0.20.2,d的版本为0.19.1,我们需要把c的数据传输到d上。想实现这个需求,推荐的方案为:

    任务提交到集群d上,gateway_d能够访问集群c的nn、jt、dfs http等端口,命令如:

    hadoop distcp -i hftp://sourcename:50070/URI_soure hdfs://destname:/URI_dest

    这里,需要额外关注的是,从0.20开始,hadoop修改了它的rpc协议,导致提交到0.20的jobtracker的distcp任务,是无法写入到0.19版本的集群的,如果想做distcp操作,任务必须启动在0.19版本的集群上。

    3.机房和版本的共同影响

    这种情况,综合上述两种操作即可,首先,我们需要做集群间的acl,考虑源和目标集群哪个的变动更频繁,来决定开通acl的方向;acl搞定后,接着步骤2执行就行。相信各位聪明的看官,就不再赘述了。

    最后的最后,补充遇到过的一种复杂情形:有集群e(0.20)/f(0.19)/g(0.19),其中e/f位于同一机房,g位于另外一个机房,f->g的acl已经打通,如果临时需要从e推送数据到g的话,可以考虑将job提交到f集群上,通过hftp的方式,将e的数据distcp到g上,实践可用,供紧急需求时参考。

    备注:distcp的工作原理,请参考《Hadoop The Definitive Guide》 章节3.7

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. HFile存储格式 (累计阅读 15,976)
  2. hbase介绍 (累计阅读 12,367)
  3. Zookeeper工作原理 (累计阅读 12,202)
  4. Facebook的实时Hadoop系统 (累计阅读 11,492)
  5. 海量数据面试题举例 (累计阅读 11,114)
  6. redis在大数据量下的压测表现 (累计阅读 8,293)
  7. HBase技术介绍 (累计阅读 8,076)
  8. 淘宝数据魔方技术架构解析 (累计阅读 7,956)
  9. HBase随机写以及随机读性能测试 (累计阅读 7,547)
  10. 大数据下的工行 (累计阅读 6,643)