专栏首页Hadoop实操如何通过CM为HDFS启用Federation

如何通过CM为HDFS启用Federation


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.

本文分享自微信公众号 - Hadoop实操(gh_c4c535955d0f),作者:罗康

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • HDFS Federation(联邦)简介

    本文主要介绍HDFS Federation(联邦)相关知识,为后续文章《如何为CDH集群启用Federation(联邦)》做一个简单的铺垫。Federation...

    Fayson
  • 0688-6.2.0-特殊用户名在Hue和YARN中测试

    本文测试OpenLDAP中特殊用户名(test.user_357)能否正常使用,和使用principal名为test.user_357的Kerberos账号能否...

    Fayson
  • HDFS Router-based Federation

    Hadoop 社区为了解决 HDFS 横向扩展的问题,早前的版本中实现了基于 ViewFs 的 Federation 架构,而在最新的 Hadoop 版本中,社...

    Fayson
  • MySQL基础篇(02):从五个维度出发,审视表结构设计

    MySQL的字段类型有很多种,可以根据数据特性选择合适的,这里只描述常见的几种类型。

    知了一笑
  • 通过导入SQL生成管理系统

    通过导入 sql 文件, 选择相应字段生成elementui + vue 的后台管理系统工具:工具地址

    工具人
  • @ModelAttribute注解的详解

    被该注解定义的方法,会在该方法所在的controller的任何目标方法执行之前执行

    用户2409797
  • Yii框架实现对数据库的CURD操作示例

    本文实例讲述了Yii框架实现对数据库的CURD操作。分享给大家供大家参考,具体如下:

    砸漏
  • Mybatis学习笔记(四)调用存储过程

    存储过程有如下几个优点 1.执行速度更快 – 在数据库中保存的存储过程语句都是编译过的

    萌萌哒的瓤瓤
  • Spring Boot入门系列(二十)快速实现Restful API 接口

    随着互联网化等逐渐深入,应用系统也变得越来越复杂,系统架构正在朝着微服务化,中台化的方向发展。这就需要各个系统、各个厂家之间的数据频繁交互。所以,使用 Rest...

    架构师精进
  • Java Web之SpringMVC 进行数据回显

    基本介绍 数据回显:模型数据导向视图(模型数据 ---> Controller ---> 视图) 说明:SpringMVC在调用方法前会创建一个隐含的模型对象...

    YungFan

扫码关注云+社区

领取腾讯云代金券