searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

修改HDFS的NameService ID实践

2023-07-26 01:15:08
95
0

背景

 启用HDFS的NameNode高可用时,需要指定一个nameservice ID。这个ID用来标识由2个NameNode组成的单个HDFS实例。默认情况下,在启用NameNode高可用时,这个nameservice ID使用的是nameservice1。在启用HA的时候,我们可以通过指定dfs.nameservices参数来设置nameservice ID,但我们一样可以在后期修改nameservice ID,即在已经成功启用HA的集群中。
 集群规划时未考虑新旧集群互通互联的问题,故没有在NameService ID和kdc relam上做区分,该隐患会在集群数据互通时体现。比如如下场景,distcp无法通过NameService ID以高可用的方式进行数据迁移,relam的重名将会导致集群间互信的配置变得难以执行。因为本集群存在NameService ID重名问题,故本次操作只修改NameService ID。

实操步骤

1.停止集群

通过运维管理平台停止hdfs集群

2.修改hdfs配置文件

将hdfs-site.xml拷贝到nodepad++中批量处理。替换ns名称。
批量查找ctyunns1替换成dmns2,批量查找ctyunns替换成dmns1。
将hdfs-site.xml拷贝回hadoop01节点,文件为/tmp/hdfs-site.xml
执行如下命令进行文件比对

# vimdiff  /tmp/hdfs-site.xml  /etc/hadoop/conf/hdfs-site.xml

得到如下比对结果
  
根据高亮提示在翼MR运维管理平台上修改配置文件
修改完成后进行配置同步

3.jourlnode修改editlog目录

此次操作同步修改journalnode数据目录到数据盘中。

# cp -a /software/hadoop/hdfs/journal/ /data01/hadoop/hdfs/

修改edits目录对应的nameservice名称。

[root@bigdata-gx-nn-hadoop-03 journal]# cd /data01/hadoop/hdfs/journal/
[root@bigdata-gx-nn-hadoop-03 journal]# ls
ctyunns  ctyunns1
[root@bigdata-gx-nn-hadoop-03 journal]# mv ctyunns dmns1
[root@bigdata-gx-nn-hadoop-03 journal]# mv ctyunns1 dmns2 
[root@bigdata-gx-nn-hadoop-03 journal]# ls

重复执行如上步骤修改所有的journalnode节点。

4.通过进入ZK的CLI,来手动更新nameservice,如下。

访问zkcli

# ./zkCli.sh  -server bigdata-gx-nn-hadoop-01

删除nameservice对应的znode

[zk: bigdata-gx-nn-hadoop-01(CONNECTED) 10] deleteall /hadoop-ha/ctyunns
[zk: bigdata-gx-nn-hadoop-01(CONNECTED) 11] deleteall /hadoop-ha/ctyunns1

5.格式化zkfc

分别登录两组namenode的主节点执行格式化操作。

[root@bigdata-gx-nn-hadoop-01 bin]# ./hdfs zkfc -formatZK
[root@bigdata-gx-nn-hadoop-03 bin]# ./hdfs zkfc -formatZK

提示如下信息表示格式化成功
  

关联集群配置更新

1.yarn集群配置更新

修改mapred-site.xml

mapreduce.job.hdfs-servers
hdfs://dmns1,hdfs://dmns2,hdfs://dfsrouter

同步配置,重启yarn集群。

2.hive集群配置更新

更新hive元数据

3.spark集群配置更新

更新

spark.yarn.access.hadoopFileSystems hdfs://dmns1,hdfs://dmns2,hdfs://dfsrouter
spark.eventLog.dir=hdfs://dmns1/spark3-history/
spark.history.fs.logDirectory=hdfs://dmns1/spark3-history/

4.trino集群配置更新

5.重启kyuubi

墨子配置

1.修改HDFS目录浏览器配置

修改tenant数据库hdfs_config表

mysql> use mozi_tenant
mysql> update hdfs_config set namespaces='["dmns1", "dmns2"]' where id=1;

2.重新启用HDFS目录浏览器

 

0条评论
0 / 1000
封****畅
4文章数
0粉丝数
封****畅
4 文章 | 0 粉丝
原创

修改HDFS的NameService ID实践

2023-07-26 01:15:08
95
0

背景

 启用HDFS的NameNode高可用时,需要指定一个nameservice ID。这个ID用来标识由2个NameNode组成的单个HDFS实例。默认情况下,在启用NameNode高可用时,这个nameservice ID使用的是nameservice1。在启用HA的时候,我们可以通过指定dfs.nameservices参数来设置nameservice ID,但我们一样可以在后期修改nameservice ID,即在已经成功启用HA的集群中。
 集群规划时未考虑新旧集群互通互联的问题,故没有在NameService ID和kdc relam上做区分,该隐患会在集群数据互通时体现。比如如下场景,distcp无法通过NameService ID以高可用的方式进行数据迁移,relam的重名将会导致集群间互信的配置变得难以执行。因为本集群存在NameService ID重名问题,故本次操作只修改NameService ID。

实操步骤

1.停止集群

通过运维管理平台停止hdfs集群

2.修改hdfs配置文件

将hdfs-site.xml拷贝到nodepad++中批量处理。替换ns名称。
批量查找ctyunns1替换成dmns2,批量查找ctyunns替换成dmns1。
将hdfs-site.xml拷贝回hadoop01节点,文件为/tmp/hdfs-site.xml
执行如下命令进行文件比对

# vimdiff  /tmp/hdfs-site.xml  /etc/hadoop/conf/hdfs-site.xml

得到如下比对结果
  
根据高亮提示在翼MR运维管理平台上修改配置文件
修改完成后进行配置同步

3.jourlnode修改editlog目录

此次操作同步修改journalnode数据目录到数据盘中。

# cp -a /software/hadoop/hdfs/journal/ /data01/hadoop/hdfs/

修改edits目录对应的nameservice名称。

[root@bigdata-gx-nn-hadoop-03 journal]# cd /data01/hadoop/hdfs/journal/
[root@bigdata-gx-nn-hadoop-03 journal]# ls
ctyunns  ctyunns1
[root@bigdata-gx-nn-hadoop-03 journal]# mv ctyunns dmns1
[root@bigdata-gx-nn-hadoop-03 journal]# mv ctyunns1 dmns2 
[root@bigdata-gx-nn-hadoop-03 journal]# ls

重复执行如上步骤修改所有的journalnode节点。

4.通过进入ZK的CLI,来手动更新nameservice,如下。

访问zkcli

# ./zkCli.sh  -server bigdata-gx-nn-hadoop-01

删除nameservice对应的znode

[zk: bigdata-gx-nn-hadoop-01(CONNECTED) 10] deleteall /hadoop-ha/ctyunns
[zk: bigdata-gx-nn-hadoop-01(CONNECTED) 11] deleteall /hadoop-ha/ctyunns1

5.格式化zkfc

分别登录两组namenode的主节点执行格式化操作。

[root@bigdata-gx-nn-hadoop-01 bin]# ./hdfs zkfc -formatZK
[root@bigdata-gx-nn-hadoop-03 bin]# ./hdfs zkfc -formatZK

提示如下信息表示格式化成功
  

关联集群配置更新

1.yarn集群配置更新

修改mapred-site.xml

mapreduce.job.hdfs-servers
hdfs://dmns1,hdfs://dmns2,hdfs://dfsrouter

同步配置,重启yarn集群。

2.hive集群配置更新

更新hive元数据

3.spark集群配置更新

更新

spark.yarn.access.hadoopFileSystems hdfs://dmns1,hdfs://dmns2,hdfs://dfsrouter
spark.eventLog.dir=hdfs://dmns1/spark3-history/
spark.history.fs.logDirectory=hdfs://dmns1/spark3-history/

4.trino集群配置更新

5.重启kyuubi

墨子配置

1.修改HDFS目录浏览器配置

修改tenant数据库hdfs_config表

mysql> use mozi_tenant
mysql> update hdfs_config set namespaces='["dmns1", "dmns2"]' where id=1;

2.重新启用HDFS目录浏览器

 

文章来自个人专栏
hadoop
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0