你好,游客 登录 注册 搜索
背景:
阅读新闻

Hadoop集群间Hadoop方案探讨

[日期:2015-03-06] 来源:CSDN博客  作者:jingling_zy [字体: ]

Hadoop

  在日常的工作过程中,我们经常会碰到在不同的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上,实践可用,供紧急需求时参考。





收藏 推荐 打印 | 录入:Cstor | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款