本文主要讲述如何通过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. 总结
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的全集,一定是其的子集。
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,效果如下所示
1、为新添加的Nameservice启用HA
2、选择部署备用Namenode角色所在主机,建议JournalNode另外部署一组,我这里因为服务器数量有限,和原始的Namenode共用了一组JournalNode。
3、按照启用HA引导流程,等待HA启用完成即可。如果有配置需要修改,可依据实际需要进行配置参数的修改。
4、注意,启用HA完成后,需要更新Hive Metastore Namenode,因为HDFS默认的Schema变成了ViewFS。如果不更新的话,无法正常访问原集群的Hive表数据。
5、启用HA后,效果如下所示
从上面三张图可以观察到:
启用Federation前,Hive不包含任何库表,此步可跳过。
1、停止Hive服务,点击“更新Hive Metastore Namenode”按钮进行Hive的元数据更新,主要是更改Hive表的location信息,把原始的Schema改为ViewFS。
2、等待更新完成即可。
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.