技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统架构 --> Hadoop集群间Hadoop方案探讨

Hadoop集群间Hadoop方案探讨

浏览:3678次  出处信息

    在日常的工作过程中,我们经常会碰到在不同的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. Facebook的实时Hadoop系统    (阅读:10520)
  2. HBase技术介绍    (阅读:6580)
  3. hadoop rpc机制 && 将avro引入hadoop rpc机制初探    (阅读:5059)
  4. Hadoop的map/reduce作业输入非UTF-8编码数据的处理原理    (阅读:4446)
  5. 解析Google集群资源管理系统Omega    (阅读:4462)
  6. 快速构建实时抓取集群    (阅读:4296)
  7. Hadoop超级安装手册    (阅读:3910)
  8. 百度是如何使用hadoop的    (阅读:3621)
  9. 使用hadoop进行大规模数据的全局排序    (阅读:3390)
  10. storm集群的监控    (阅读:3362)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1