简介
本文重在介绍这两种功能的融合,结构设计即关键配置。版本为hadoop3.0.3
HA即高可用,master-slave模式中通常用来解决单节点风险。
Federation,中文翻译为联邦,多个 NN 共用一个集群里的存储资源,每个 NN 都可以单独对外提供服务。每个 NN 都会定义一个存储池,有单独的 id,每个 DN 都为所有存储池提供存储。DN 会按照存储池 id 向其对应的 NN 汇报块信息,同时,DN 会向所有 NN 汇报本地存储可用资源情况。
官网Federation概念图平常使用最多的是单个nameservice,只有一个namespace,这里Federation功能可以让一个HDFS集群有多个nameservice,多个namespace。
访问不同的namespace中的文件都是不一样的,不同nameservice中的元数据也不一样。
HA+Federation架构设计图上面图是三个nameservice使用同一个datanode集群的架构图,每一个nameservice可以做成传统[namenode,sercondaryname]
也可以做成HA模式。HA解决单节点故障问题,Federation解决namenode内存瓶颈问题。
配置
hdfs-site.xml
由于不知道怎么粘xml格式内容,这里只能使用截图。这些配置在hdfs-default.xml中都有,只是有的需要自己加上后缀nameservice的名字
配置三个nameservice nameservice1的配置 nameservice2的配置 nameservice3的配置core-site.xml
如果配置成功之后在每个datanode节点下面会有多个BlockPool,我实验只配置了两个nameservice。
如果不能切换active,standby,可以检查active NN上fuser命令是否有安装,因为做failover操作的时候会使用这个命令杀死原来的active NN。
如果执行hdfs dfs -ls /提示不能识别默认ns1名字空间,可以检查dfs.client.failover.proxy.provider.[ns2](hdfs-site.xml)是不是没加后缀,这个参数用于管理HA功能中转移请求到active节点。
如果单个HA nameservice已经格式化,其他备用standby的节点namenode无法启动,日志提示没有格式化,那么执行hdfs namenode -initializeSharedEdits。
如果传统[namenode,secondaynode]的nameservice提示不能有ha的配置,那是因为有些应该属于某些ha nameservice的配置没加它的后缀。
由于配置,步骤比较复杂,这里介绍比较粗略,重在介绍概念。有兴趣的伙伴可参考官网,以及本文介绍自行搭建。
官网网址
网友评论