前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何通过CM为HDFS启用Federation

如何通过CM为HDFS启用Federation

作者头像
Fayson
发布2018-09-29 10:22:11
2.2K0
发布2018-09-29 10:22:11
举报
文章被收录于专栏:Hadoop实操

1 文档编写目的

本文主要讲述如何通过CM为HDFS启用Federation。如果你对HDFS的Federation不太了解或者想知道Federation能够解决什么问题的话,建议先阅读我之前写的这篇文章《HDFS Federation(联邦)简介》

测试环境:

操作系统版本为CentOS 6.8

CM和CDH版本为5.11.2

文章目录结构:

1. 文档编写目的

2. 启用Federation

2.1 配置挂载点

2.2 启用Federation

2.3 启用HA

2.4 更新Hive Metastore Namenode

3. 总结

2 启用Federation

2.1 配置挂载点

1、在命令行执行如下命令,列出HDFS根目录的子目录列表

hdfs dfs -ls /

2、在CM管理界面,点击HDFS->配置->搜索“mount”,配置挂载点

挂载点对应的是Namenode管理的namespace,为保证每组Namenode的独立性,每组独立的Namenode管理的namespace不能交叉,一个挂载点只能被一个Namenode管理。比如HDFS根目录下有个叫“/user”的子目录,“/user”目录下有a、b、c三个目录,A组Namenode和B组Namenode都可以选择不挂载“/user”目录,但如果要挂载“/user”目录,那么A或者B都可选择完全挂载或者部分挂载“/user”目录,但是不能出现交叉挂载的情况。比如A完全挂载“/user”目录,那么就不允许B再对“/user”及其子目录进行挂载。如果A部分挂载“/user”目录,比如挂载了“/user/a”目录,那么B可以挂载“/user/b”或者“/user/c”或者“/user/b和/user/c”,但是不能再挂载“/user”或者“/user/a”,否则会造成namespace冲突。

简而言之,就是启用Federation必须满足的条件是:每组Namenode管理的namespace的交集必然为空集,但是namespace的并集不一定等于HDFS的namespace的全集,一定是其的子集。

2.2 启用Federation

1、点击“Federation与High Availability”按钮,进入启用Federation引导界面,该按钮也是启用HDFS HA的入口。

2、点击“添加Nameservice”按钮,添加一个新的Nameservice。

3、为新添加的Nameservice选择装入点,实际上就是挂载点。

4、为新添加的Nameservice选择部署Namenode和SecondaryNamenode角色的主机。

5、配置新添加的Nameservice的数据目录,默认会从“Namenode Default Group”继承配置路径,同时勾选下面两个附件选项,点击“继续”按钮,等待CM启用Federation,自动重启相关服务,部署客户端即可。

6、启用Federation成功后,集群新增了一个Nameservice,NameNode也变为了三个,同时新增了一个SecondaryNamenode,效果如下所示

2.3 启用HA

1、为新添加的Nameservice启用HA

2、选择部署备用Namenode角色所在主机,建议JournalNode另外部署一组,我这里因为服务器数量有限,和原始的Namenode共用了一组JournalNode。

3、按照启用HA引导流程,等待HA启用完成即可。如果有配置需要修改,可依据实际需要进行配置参数的修改。

4、注意,启用HA完成后,需要更新Hive Metastore Namenode,因为HDFS默认的Schema变成了ViewFS。如果不更新的话,无法正常访问原集群的Hive表数据。

5、启用HA后,效果如下所示

从上面三张图可以观察到:

  • HDFS拥有两组Namenode,每组Namenode具备HA,一主一备;Failover Controller有两组,每组两个;因为是共用JournalNode,所以只有3个JN,如果不共用的话,也应该是两组,每组3个JN。
  • HDFS的根目录下多出了一个/nameservices的子目录,其下分别对应两组Namenode的Nameservice名称,再往下一层目录,就是对应Namenode管理的Namespace。

2.4 更新Hive Metastore Namenode

启用Federation前,Hive不包含任何库表,此步可跳过。

1、停止Hive服务,点击“更新Hive Metastore Namenode”按钮进行Hive的元数据更新,主要是更改Hive表的location信息,把原始的Schema改为ViewFS。

2、等待更新完成即可。

3 总结

1、启用Federation必须满足的条件是:每组Namenode管理的namespace的交集必然为空集,但是namespace的并集不一定等于HDFS的namespace的全集,一定是其的子集。

2、Federation可以为HDFS配置多组互相独立的Namenode,每组Namenode依据其下配置的挂载点分配Namespace。

3、启用Federation和HA并不冲突,每组Namenode都可以在启用Federation的同时启用HA,防止发生Namenode单点故障导致集群部分数据目录不可用的情况。

4、启用Federation后,HDFS的默认Schema会变更为ViewFS,Hive的元数据需要更新。当然,你可以通过更改hdfs的高级配置,将fs.defaultFS的值改回原集群的Schema。


When your talent can’t support your ambition,

You should calm down and learn. When your ability cannot realize you dreams, You should practice with all your heart. Ask yourself, What kind of life you pursue.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 文档编写目的
  • 2 启用Federation
    • 2.1 配置挂载点
      • 2.2 启用Federation
        • 2.3 启用HA
          • 2.4 更新Hive Metastore Namenode
          • 3 总结
          相关产品与服务
          专用宿主机
          专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档