如何为Kerberos环境的CDH集群在线扩容数据节点

时间:2022-05-06
本文章向大家介绍如何为Kerberos环境的CDH集群在线扩容数据节点,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢

1.文档编写目的


Hadoop集群其中一个优点就是可伸缩性(横向扩展),通过增加计算节点使服务容量产生线性增长的能力。可伸缩的应用程序的主要特点是:只需要增加资源,而不需要对应用程序本身进行大量修改。在集群资源紧张的情况下可通过动态的扩容节点来增加集群的计算能力,前面Fayson的文章讲过《如何在非Kerberos环境下对CDH进行扩容》、《如何使用Cloudera Manager在线为集群减容》。本篇文章主要介绍如何为Kerberos环境的CDH集群在线扩容数据节点。Kerberos和非Kerberos的集群减容步骤是一样的,Fayson不会专门用文章来介绍。

  • 内容概述

1.创建DataNode模板

2.DataNode节点前置准备

3.上线DataNode节点并应用模板

4.执行Balance均衡集群数据

  • 测试环境

1.CM和CDH版本为5.11.2

  • 前置条件

1.CDH集群已安装成功并正常运行

2.集群已启用Kerberos

2.扩容集群环境说明


1.扩容前集群节点信息

2.扩容前HDSF容量

3.扩容前Yarn资源池情况

3.创建DataNode节点主机模板


1.登录Cloudera Manager Web界面,进入“主机模板”界面

2.点击“创建”,创建一个datanode主机模板,并为模板选择角色

3.点击“创建”,完成DataNode模板创建

4.DataNode节点的前置准备


前置准备请参考Fayson之前的文章《CDH安装前置准备》,主要包括以下步骤:

1.确保OS的yum源可以正常使用,通过yum repolist命令可以查看到匹配的OS的所有包

2.确保Cloudera Manager的yum源运行正常

3.hosts文件配置,需要将Gateway节点的IP和hostname加入到CDH集群节点的hosts文件中,并同步到所有机器包括Gateway节点

4.禁用SELinux

5.关闭防火墙

6.设置swap为10

7.关闭透明大页面

8.配置时钟同步

9.为待上线节点安装Kerberos客户端并配置krb5.conf文件

sudo yum -y install krb5-libs krb5-workstation

将KDC服务器上/etc/krb5.conf文件拷贝至新节点的/etc目录下

测试Kerberos客户端是否安装成功

kinit -kt fayson.keytab fayson
klist

显示如上截图则表示初始化成功。

关于Kerberos客户安装可参考Fayson前面的文章《如何给Kerberos环境下的CDH集群添加Gateway节点》和《如何在CDH集群启用Kerberos》。

请务必确保以上操作都已完成,并成功配置,否则接下来的增加节点操作会失败!

5.上线DataNode节点


1.点击“所有主机”,进入主机列表

2.点击“向集群添加新主机”

3.点击“经典向导”,进入添加新主机引导页

4.点击“继续”,输入要添加的新主机ip或hostname

点击“搜索”

5.选择需要添加到集群的主机,点击“继续”

6.输入Cloudera Manager Agent的parcel库地址,点击“继续”

勾选Java开发工具包及无限制强度加密策略文件。

7.安装JDK,点击“继续”

8.输入ec2-user用户密码,点击“继续”

向集群添加新主机,等待安装成功。

9.安装完成,点击“继续”

向新主机分发并激活parcel

10.激活成功,点击“继续”

11.主机正确性检查通过,点击“继续”,选择主机模板

12.点击“继续”,启动主机角色

13.启动成功后,点击“继续”,部署客户端配置

14.点击“完成”,进入主机列表

至此,向CDH已完成向CDH集群添加数据节点。

节点上线后各服务节点磁盘使用情况

可以看到新添加的DataNode节点,磁盘几乎未使用,说明暂未有数据写入该数据节点。接下来对DataNode节点进行数据平衡操作。

6.扩容后集群环境说明


1.HDFS容量

2.Yarn资源

7.重启相应服务更新集群拓扑信息


回到CM主页根据提示重启相应服务,提示需要重启或刷新相应配置,主要是更新集群的拓扑信息,如果集群的NameNode、ResourceManager等服务启用了高可用在选择滚动重启,这样不会影响生产环境作业的运行。

8.执行Balance操作


Balance是为了平衡数据,如果不执行该操作,集群将会把新的数据都存放在新的datanode上,这样会造成数据分布不平衡,影响MR的工作效率。

1.进入HDFS服务,选择“重新平衡”菜单

2.点击“重新平衡”

3.点击“重新平衡”,执行重新平衡操作

4.执行成功

Balance参数说明:

重新平衡阈值:值越低各节点越平衡,但消耗时间也更长,默认为10%

dfs.datanode.balance.max.concurrent.moves:允许同时并发复制的块数

9.查看数据分布情况


通过HDFS的http://hostname:50070界面可以看到在执行了“重新平衡”操作后,新加入的DataNode节点磁盘的使用率和其它节点磁盘使用率相差在10%以内,如果需要降低各节点磁盘使用率差则需要调整“重新平衡阈值”该值越低节点磁盘使用率差越低。

10.常见问题


1.在启动新扩容节点DataNode角色时报错,提示:代码块部分可以左右滑动查看噢

+ '[' nfs3 = datanode ']'
+ '[' namenode = datanode -o secondarynamenode = datanode -o datanode = datanode ']'
+ HADOOP_OPTS='-Dsecurity.audit.logger=INFO,RFAS -Djava.net.preferIPv4Stack=true '
+ export 'HADOOP_OPTS=-Dhdfs.audit.logger=INFO,RFAAUDIT -Dsecurity.audit.logger=INFO,RFAS -Djava.net.preferIPv4Stack=true '
+ HADOOP_OPTS='-Dhdfs.audit.logger=INFO,RFAAUDIT -Dsecurity.audit.logger=INFO,RFAS -Djava.net.preferIPv4Stack=true '
+ '[' namenode = datanode -a rollingUpgrade = '' ']'
+ exec /opt/cloudera/parcels/CDH-5.11.2-1.cdh5.11.2.p0.4/lib/hadoop-hdfs/bin/hdfs --config /run/cloudera-scm-agent/process/3479-hdfs-DATANODE datanode
Cannot locate Java Home

异常原因:由于集群将JDK升级至JDK8,在新节点前置准备时未将jdk8安装至/usr/java目录下导致。

解决方法:从集群其它节点将jdk安装包拷贝至新节点的/usr/java目录下

scp -i fayson.pem.txt -r jdk1.8.0_131-cloudera/ ip-172-31-15-138.ap-southeast-1.compute.internal:/usr/java/

关于JDK升级可以参考Fayson前面的文章《如何将CDH集群JAVA升级至JDK8》和《如何将Kerberos环境下CDH集群JAVA升级至JDK8

2.在集群执行MR作业异常日志,提示:代码块部分可以左右滑动查看噢

17/12/24 03:54:51 INFO mapreduce.Job: Task Id : attempt_1514093030036_0001_m_000007_1000, Status : FAILED
Application application_1514093030036_0001 initialization failed (exitCode=255) with output: main : command provided 0
main : run as user is fayson
main : requested yarn user is fayson
User fayson not found

异常原因:由于我们新加入的DataNode节点无fayson用户导致,在执行MR作业时报错“User fayson not found”

解决方法:将集群节点上创建的用户信息同步至新DataNode节点的OS中。

[ec2-user@ip-172-31-15-138 java]$ sudo useradd fayson
[ec2-user@ip-172-31-15-138 java]$ id fayson
uid=1001(fayson) gid=1001(fayson) groups=1001(fayson)
[ec2-user@ip-172-31-15-138 java]$ 

为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看