目录

准备工作

安装

关闭防火墙

时钟同步

数据库准备

主节点部署JDBC

安装CM

安装CDH

尾巴


今天用虚拟机离线安装CDH6集群,现在CDP7已经出了,但没有社区版了,CDP7装起来只能用个60天,相比于CDH6的组件只有hive和spark进行了大版本更新以及加入几个新的组件,所以这里还是装CDH6,主要还是因为好久以前就下好了parcel包。。。

准备工作

下载地址

CM:https://archive.cloudera.com/cm6/6.3.1/repo-as-tarball/

下载 cm6.3.1-redhat7.tar.gz

CDH:https://archive.cloudera.com/cdh6/6.3.2/parcels/

下载 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel manifest.json

除此之外下面四个步骤也是要准备的: 

三台虚拟机(略)

主节点安装MySQL5.7以及准备MYSQL5的connector jar包(略)

所有节点安装JDK1.8(略)

虚拟机互相免密登录且hosts中有彼此的域名(略)

虚拟机渣配置如下

HostNameIPcpumemorydisk

角色

系统
node01192.168.142.9124G40server(主)CentOS7
node02192.168.142.9222G40agent(从)CentOS7
node03192.168.142.9322G40agent(从)CentOS7

安装

关闭防火墙

每个节点上执行

systemctl stop firewalld && systemctl disable firewalld && iptables -F

#关闭集群selinux,修改成disabled之后 重启linux系统生效
vi /etc/selinux/config 
SELINUX=disabled

时钟同步

#所有节点设置亚洲上海时区(三台都需要执行)
timedatectl set-timezone Asia/Shanghai

#所有节点安装ntp
yum install -y ntp

# 主节点
vi /etc/ntp.conf
#添加下面的内容
server 127.127.1.0 iburst local clock
restrict 192.168.142.0 mask 255.255.255.0 nomodify notrap

#然后主节点执行
systemctl start ntpd
systemctl status ntpd
ntpq -p

# 从节点
systemctl stop ntpd
systemctl disable ntpd
ntpdate node01
crontab -e
#添加下面的内容
# 分 时 日 月 周,每天00:00执行该脚本
00 00 * * * /usr/sbin/ntpdate cdh-server01

数据库准备

在准备好的mysql5数据上执行下面的内容:

create database cmf DEFAULT CHARACTER SET utf8;
create database amon DEFAULT CHARACTER SET utf8;
grant all on cmf.* TO 'cmf'@'%' IDENTIFIED BY '123456';
grant all on amon.* TO 'amon'@'%' IDENTIFIED BY '123456';
flush privileges;

主节点部署JDBC

将提前准备好的mysql jar包上传到主节点并进行下面的操作 

mkdir -p /usr/share/java
cp mysql-connector-java-5.1.47.jar /usr/share/java/
cd /usr/share/java/
mv mysql-connector-java-5.1.47.jar mysql-connector-java.jar

安装CM

1. 上传并解压CM:

mkdir /opt/cloudera-manager
tar -zxf cm6.3.1-redhat7.tar.gz -C /opt/cloudera-manager

2. 在node01节点上安装cm server服务:

cd /opt/cloudera-manager/cm6.3.1/RPMS/x86_64/
rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
rpm -ivh cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm --nodeps --force 

3. 在所有节点上安装cm agent服务:

cd /opt/cloudera-manager/cm6.3.1/RPMS/x86_64
rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm --nodeps --force #[主节点在上面执行过这句所以就不用重复执行了]
rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force

4. 所有节点上修改cm agent的配置,指向server节点为node01:

sed -i "s/server_host=localhost/server_host=node01/g" /etc/cloudera-scm-agent/config.ini

5. 修改node01主节点的cm server配置:

vim /etc/cloudera-scm-server/db.properties
-------------------------------------------------
com.cloudera.cmf.db.type=mysql

com.cloudera.cmf.db.host=node01

com.cloudera.cmf.db.name=cmf

com.cloudera.cmf.db.user=cmf

com.cloudera.cmf.db.password=123456

com.cloudera.cmf.db.setupType=EXTERNAL

6. 启动cm server和cm agent:

#主节点启动server
systemctl restart cloudera-scm-server
#查看server运行状态
service cloudera-scm-server status
#查看server日志
tail /var/log/cloudera-scm-server/cloudera-scm-server.log


#所有节点启动agent
systemctl restart cloudera-scm-agent  
#查看agent运行状态
service cloudera-scm-agent  status
#查看agent日志
/var/log/cloudera-scm-agent/cloudera-scm-agent.log

错误解决

(1). agent日志报错:

ERROR Error, CM server guid updated, expected 7cda865f-a833-40d1-9fa6-761631c74326, received e2678b78-7c5e-4703-91b6-c52e2875988c

解决办法: 产生的原因是服务器以前作为集群节点安装过agent服务,再次使用时没有卸载干净,配置中记录着之前用的uuid,将cm_guid目录删掉即可。 

rm -rf /var/lib/cloudera-scm-agent/cm_guid 
service cloudera-scm-agent restart

(2). server日志报错:

ERROR avro-servlet-hb-processor-0:com.cloudera.server.cmf.AgentProtocolImpl: Dropped heartbeat from a known host node91 with bad incoming host name node92 since 2020-09-02T05:38:27.024Z.

解决办法:将对应机器上的agent服务删掉,并且删除所有残留文件(必须要删残留文件)重新安装即可。

yum remove cloudera-manager-agent-6.3.1-1466458.el7.x86_64 
find / -name cloudera-scm-agent 
rm -rf /etc/cloudera-scm-agent 
rm -rf /var/lib/cloudera-scm-agent 
rm -rf /var/log/cloudera-scm-agent 
#重新安装启动agent 
rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force 
sed -i "s/server_host=localhost/server_host=node01/g" /etc/cloudera-scm-agent/config.ini 
systemctl restart cloudera-scm-agent 
service cloudera-scm-agent status 
tail -f /var/log/cloudera-scm-agent/cloudera-scm-agent.log

(3). agent日志启动报错:

error: [Errno 111] Connection refused

ps -ef | grep supervisord
kill -9 该进程ID

启动完成后应该可以打开CM页面了,默认密码为admin/admin,地址为:http://node01:7180 

7. 部署离线parcel源

CM先不管,我们既然要离线安装CDH,这时候parcel包该派上用场了吧,利用httpd将parcel放在上面由CM安装。

#安装httpd
yum install -y httpd 

#部署离线parcel源
mkdir -p /var/www/html/cdh6_parcel
#将parcel包放在httpd的目录下
cp cdh/CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel /var/www/html/cdh6_parcel/
mv cdh/CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha1 /var/www/html/cdh6_parcel/CDH-6.3.1
mv cdh/CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha1 /var/www/html/cdh6_parcel/CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha
mv cdh/manifest.json /var/www/html/cdh6_parcel/

#启动httpd服务
systemctl start httpd

启动后可以在浏览器访问 http://node01/cdh6_parcel/ 

看到下面的内容表示成功部署parcel离线源

安装CDH

回到CM页面:

(1). 使用admin/admin登录CM,这里肯定是选择社区版:

(2). 选择所有主机,如果agent有问题的话这里是看不到那个机器的,必须要解决agent之后再来添加主机:

(3). 选择我们的离线parcel源,点击更多选项,将apache的那些都删掉,添加一个我们刚刚的源 http://node01/cdh6_parcel/ (注意这里是http不是https):

(4). 点击“继续”,等待解压,这一步很漫长需要静心等待。

这一步如果出现主机运行状态不良。

解决办法:

进入 /var/lib/cloudera-scm-agent下,把cm_guid文件 删除。然后重启代理服务节点
命令: service cloudera-scm-agent restart
重启之后 cloudera manager 等待片刻自动安装

(5). 检查集群,有问题就解决,没问题就下一步,或者点最后一项忽略风险。

(6). 选择安装的组件,CDH给提供了几个类型,可以按需选择,我这里是自定义的。

(7). 选择每个机器上的角色,默认了。

(8). 数据库配置,有些数据库在前面已经配置好了,直接填上就行,有的组件需要新增数据库,也需要在mysql端新增库和用户:

(9). 审核更改,配置全部默认了,下一步。

(10). 最后一步,等待安装完成即可。

尾巴

我的虚拟机配置太低了,内存和CPU都吃紧,安装不成功,我直接放弃,自己玩玩还是用apache的得了。

希望本文对你有帮助,请点个赞鼓励一下作者吧~ 谢谢! 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐