注意:配置CDH6.2.0时,内存至少32G起步,不然会出现集群启动没反应等问题
集群准备
测试环境目前3台机:
ip |
名称 |
内存大小 |
磁盘空间 |
10.0.2.138 |
data-dev-staging-01 |
64G |
200G |
10.0.2.139 |
data-dev-staging-02 |
64G |
200G |
10.0.2.140 |
data-dev-staging-03 |
64G |
200G |
系统环境配置
1、主机名和IP地址修改
确认主机名和IP,这部分因为运维部门已提前完成,减少了部分工作。修改主机名可通过以下2种方式:
vim /etc/hostname set-hostname XXX
分别ping其他服务器,确认网络连接正常:
ping data-dev-staging-01ping data-dev-staging-02ping data-dev-staging-03
这部分内容没有需要修改的所以可以直接跳过。
2、登录root用户
测试环境登录无密码,可直接切换至root账户:
sudo -i
这部分内容没有需要修改的所以可以直接跳过。
3、域名映射
解释:在集群安装过程中,不能在所有的地方都写ip地址,主要也是为了便捷性和安全性考虑,所以修改和添加以下内容:
vim /etc/hosts 10.0.2.138 data-dev-staging-01 data-dev01 10.0.2.139 data-dev-staging-02 data-dev02 10.0.2.140 data-dev-staging-03 data-dev03
4、SSH免密认证
每台服务器生成私钥id_rsa和公钥id_rsa.pub,然后追加到每台机器的授权authorized_keys中:
生成私钥和公钥命令:
ssh-keygen
然后三次回车,得到公钥和私钥。生成密钥后,追加到authorized_keys文件即可。
基于安全性考虑,在此文档不直接给出具体的私钥和公钥,内容大体如下(半截图):
这部分内容,有一个危险点,就是在进行ssh的时候,注意原本运维小伙伴在配置的时候,是增加了跳板机的公钥在里面的,这部分内容一定要确保正确。切记!!!
5、防火墙相关
防火墙在服务器给到大数据组的时候,是直接关闭了的,因为有跳板机的缘故,在安全方面的隐患肯定会小很多。这个时候,主要还是考虑到后续的端口开放问题(主要就是指MySQL的访问端口)。
systemctl status firewalld # 查看防火墙状态systemctl start firewalld # 启动防火墙 firewall-cmd --list-all # 查看所有开放端口firewall-cmd --query-port=3306/tcp # 查看是否开启3306端口firewall-cmd --permanent --add-port=3306/tcp # 开放3306端口 systemctl restart firewalld # 重启防火墙firewall-cmd --query-port=3306/tcp # 查看是否开启3306端口yessystemctl stop firewalld # 关闭防火墙
6、Selinux相关
需要关闭SELINUX,服务器给到大数据组的时候,是直接关闭了的,所以可直接跳过。
setenforce 0vim /etc/selinux/config
7、JDK安装+Scala安装
这个就是老生常谈了,但是在CDH集群安装的时候,需要注意JAVA_HOME的位置设置,修改环境变量的时候,需要将其固定到/usr/java/目录,不然后续的CDH安装过程会直接报JAVA_HOME异常,处理起来很麻烦。
通过Jumpserver将压缩包上传到每台服务器,然后解压安装之后配置环境变量即可:
tar -zxvf jdk-8u181-linux-x64.tar.gz -C /usr/java/ tar -zxf scala-2.11.8.tar -C /opt/ vim /etc/profile # JDK Configuration export JAVA_HOME=/usr/java/jdk1.8.0_181 export JRE_HOME=/$JAVA_HOME/jre export PATH=$JAVA_HOME/bin:$JAVA_HOME:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar:$JRE_HOME/lib # Scala Configuration export SCALA_HOME=/opt/scala-2.11.8 export PATH=$SCALA_HOME/bin:$SCALA_HOME:$PATH source /etc/profile # 完成后应用环境变量配置
然后查看是否安装成功:
java -version scala -version
8、NTP相关
NTP这个服务,主要是做时间同步的,确保时间同步,否则在集群任务中会出现异常和数据丢失的情况。
yum install -y ntp # 安装ntp服务 vim /etc/ntp.conf # 修改ntp服务配置 # local clock server 127.127.1.0 server 10.0.2.138 iburst # 增加本地同步时间master fudge 127.127.1.0 stratum 10 vim /etc/sysconfig/ntpd #末尾增加一句 SYNC_CLOCK=yes systemctl start ntpd.service # 启动ntp服务 systemctl enable ntpd.service # 设置自动启用 systemctl ntpd status # 查看ntpd状态
9、修改系统参数
sysctl vm.swappiness=10 echo 'vm.swappiness=10' >> /etc/sysctl.conf echo never > /sys/kernel/mm/transparent_hugepage/defrag echo never > /sys/kernel/mm/transparent_hugepage/enabled echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
10、Httpd相关
yum -y install httpd service httpd start service httpd status
11、MySQL——保存集群元数据
之所以安装MySQL,是要存储集群元数据信息和集群基本数据。采用rpm的方式直接安装即可:
rpm -qa | grep mysql # 查看是否已安装mysql数据库 yum -y remove mysql # 删除原有MySQL数据库 // 依次安装下载的6个rpm包 rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm --nodeps --force rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm --nodeps --force rpm -ivh mysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm --nodeps --force rpm -ivh mysql-community-devel-5.7.19-1.el7.x86_64.rpm --nodeps --force rpm -ivh mysql-community-client-5.7.19-1.el7.x86_64.rpm --nodeps --force rpm -ivh mysql-community-server-5.7.19-1.el7.x86_64.rpm --nodeps --force systemctl start mysqld # 启动mysql systemctl enable mysqld # 设置自动启用mysql grep 'temporary password' /var/log/mysqld.log # 获取mysql原始密码 2021-06-08T07:31:15.682598Z 1 [Note] A temporary password is generated for root@localhost: qjRhwhJpb2#D 通过原始密码登录mysql,然后修改密码 mysql> use mysql; mysql> update user set authentication_string=password("123456") where user='root'; # 修改root账户密码为123456 mysql> flush privileges; # 刷新权限 mysql> quit; // 再次进入mysql数据库,并建几个DB mysql> create database cmf default character set = 'utf8'; mysql> create database scm default character set = 'utf8'; mysql> create database amon default character set = 'utf8'; mysql> create database hue default character set = 'utf8'; mysql> create database oozie default character set = 'utf8'; mysql> create database ke default character set = 'utf8'; mysql> create database hive default character set = 'utf8';
mysql的连接器包,需要放到指定位置:
mv mysql-connector-java-5.1.39.jar /usr/sharc/java/mysql-connector.jar
CM和CDH组件安装
写在前面:
在安装CDH集群的时候,我们将分配以下角色到测试环境:
ip |
名称 |
角色 |
10.0.2.138 |
data-dev-staging-01 |
master |
10.0.2.139 |
data-dev-staging-02 |
slave1 |
10.0.2.140 |
data-dev-staging-03 |
slave2 |
1、CM组件和节点安装
将CM的rpm安装包分发到不同的节点,其中,所有节点都需要上传agent包和daemons包,master还需上传server包。
# 所有节点需要安装agent和daemons yum localinstall -y cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm yum localinstall -y cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm # master单独安装server yum localinstall -y cloudera-manager-server-6.2.0-968826.el7.x86_64.rpm
此时,需要对ClouderaManager进行一些配置上的修改,直接提供修改内容如下:
vim /etc/cloudera-scm-server/db.properties # 修改server配置 com.cloudera.cmf.db.type=mysql com.cloudera.cmf.db.host=data-dev-staging-01 com.cloudera.cmf.db.name=scm com.cloudera.cmf.db.user=scm com.cloudera.cmf.db.setupType=EXTERNAL com.cloudera.cmf.db.password=123456 vim /etc/cloudera-scm-agent/config.ini # 修改agent配置 [General] # Hostname of the CM server. #server_host=data-dev-staging-01 server_host=10.0.2.138 # 这里写上面这一行也可以,但是在我安装的过程中,发现有不能识别的情况存在,因为CDH这种开源项目的坑还是有不少的,所以针对不同问题需要对应调整
2、CDH组件和节点安装
# 移动指定资源到指定位置mv CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel* /opt/cloudera/parcel-repo/mv manifest.json /opt/cloudera/parcel-repo/
3、其他parcels的安装(以Phoenix举例)
# 移动指定资源到指定位置 mv PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel* /opt/cloudera/parcel-repo mv PHOENIX-1.0.jar /opt/cloudera/csd/
启动CM并开始CDH集群安装
1、启动CM,开始安装CDH集群:
# 在主节点master上启动server systemctl start cloudera-scm-server # 查看相关日志,有异常就解决异常(这一步其实有很多异常需要逐步修改) tail -200f /var/log/cloudera-scm-server/cloudera-scm-server.log # 在全部节点上启动agent systemctl start cloudera-scm-agent # 端口检测,有内容即可访问web页面 netstat ‐tunlp | grep 7180
初始账户和密码为:admin、admin。
后修改为:***、***
2、操作Web界面
同意协议:
选择免费版本:
欢迎界面:
集群命名:data-dev-staging(图中为HK)
选择管理的主机:data-dev-staging-01、data-dev-staging-02、data-dev-staging-03(图中为cdh1、cdh2、cdh3)
选择CDH的parcel包:
【注意,这里很容易出现识别不了parcel包的情况,这个时候,需要检测sha码是否一致,实在不行重新生成sha码,并确保后缀为.sha。】
等待分发parcel包结束:
验证网络和主机映射:
选择自定义服务,按照我们自己的需求进行安装即可:
分配不同主机的角色:其中主节点为data-dev-staging-01(图中为cdh1)
选择数据库存储部署信息:主机名称为data-dev-staging-01(图中为cdh3)
审核更改和命令详细信息可以直接跳过,然后等待安装完成即可:
下图给出当前测试环境下主界面:
下图给出测试环境各节点角色页面:
提供各组件Web UI——ip:port如下,详细域名请直接联系本人提供(因为涉及到集群运维防止直接对集群造成影响所以不在此文档直接提供)
名称 |
功能 |
原始域名 |
本地域名 |
HDFS NameNode Web UI |
HDFS元数据管理和任务管理 |
请咨询本人 |
|
Yarn ResourceManager Web UI |
Yarn集群监控 |
请咨询本人 |
|
Yarn HistoryServer Web UI |
Yarn任务监控 |
请咨询本人 |
|
HBase Web UI |
HBase数据库管理 |
请咨询本人 |
|
HiveServer2 Web U |
Hive数据管理和监控 |
请咨询本人 |
|
Hue Web UI |
Hue集群监控 |
请咨询本人 |
|
Oozie Web UI |
Oozie任务调度监控 |
请咨询本人 |
|
Kafka Eagle Web UI |
Kafka数据监控 |
请咨询本人 |
|
Spark History Server Web UI |
Spark任务监控 |
请咨询本人 |
主要踩坑记录与注意事项
1、SSH免密认证的时候有一个危险点,注意原本运维小伙伴在配置的时候,是增加了跳板机的公钥在里面的,这部分内容一定要确保正确。切记!!!
2、安装JDK的时候,需要注意安装位置/usr/java/目录下,一旦不是这个位置,在安装CDH的时候就开始疯狂报JAVA_HOME异常,而且这个目录是一开始默认指定的,后续需要改的话,还得从安装完之后修改,相当的麻烦,所以安装CDH大数据集群的时候,一般不会动这个JAVA_HOME的位置。另外,安装完之后,修改环境变量后记得source一下。
3、修改系统参数的部分,不熟悉的一定不要随便添加,这些系统参数的修改,是需要非常严谨地进行使用的。
4、集群内MySQL主要面向集群所需数据存放,不对外提供服务,甚至对大数据组内也不提供数据支持。所需用到的RDBMS技术支持,请直接使用SQLManager。
5、内网集群IP会出现不一致的情况,这个主要是管理主机的环节见下例图:
在安装的时候,IP地址因为堡垒机的影响,会直接出现某一个节点ip为169.254.123.1的情况,此时继续安装,会造成parcel包无法分发的情况,所以必须确保IP地址分别为各节点的内网IP。
这个时候,建议使用我自己的一个小窍门:
# 直接连接mysql数据库,然后使用scm数据库 mysql>use scm; # 修改HOSTS表内容,直接对IP地址进行修改即可,如: mysql>update HOSTS set IP_ADDRESS="10.0.2.139" where NAME="data-dev-staging-02";
此时再进行主机管理,即可成功识别到IP地址。
6、在集群初次安装完成之后,会出现HDFS回退策略码默认值,导致的一个报错:默认策略RS-6-3-1024k的最低节点数为9,因为我们的集群只有3台机,所以会直接报错:
这个时候,修改策略即可,选择No Default Erasure Coding Policy,并禁用此项服务。
7、每个组件的安装,都有对其他更下层组件的依赖,不要随意安装,比如Hue需要HBase的Thrift Server支持,但是这个服务的开启,本身也需要内存资源,是否需要启用是从集群整体资源考虑的。
8、一般会开启HDFS的HA,集群组件的高可用HA,是大数据集群运维的高阶内容,在此文档中不会进行记录。开启HA之后,需要手动执行以下步骤:
将 Hue 服务 Hue 的 HDFS Web 界面角色 配置为 HTTPFS 角色,而非 NameNode。
对于每个 Hive 服务 Hive,停止 Hive 服务,将 Hive Metastore 数据库备份到永久性存储中,运行服务命令"更新 Hive Metastore NameNodes",然后重启 Hive 服务。
9、在CM管理页面可以直接对不同组件进行配置的修改,如修改HDFS的最大缓存:
但是,依然有一部分的集群配置,是在WebUI上不直接体现的,这些内容,属于集群优化的高级内容,在此文档中不会进行记录。。