路漫漫其修远兮
吾将上下而求索

cloudera manager cdh安装配置

总结一下cloudera-manager的安装过程,网上参考了很多的文章,说法不一,遇到了很多坑,前前后后重新安装了有5,6次才成功,而且是线上的机器, 不能出错直接还原镜像方便,只能手动卸载包,删除文件,删除数据库,一步一步来。

环境:

系统:centos6.9

ssh端口:22,如果非22,在/etc/ssh/ssh_config配置中添加:Port xxxx,默认通过xxxx来进行ssh通信

cdh版本:到20170921,最新的版本是5.12.1,就安装这个版本

机器:3台,非常耗内存,每台机器内存至少8G,磁盘50G以上

3台机器的主机名对应的ip为

192.168.210.230   master
192.168.210.231   slave1
192.168.210.232   slave2

下载文件

下面两个域名都可以下载下面的文件,可以自行选择下载

http://archive-primary.cloudera.com  网速比较快,推荐
http://archive.cloudera.com

Cloudera Manager:包括服务端和客户端

http://archive-primary.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.12.1_x86_64.tar.gz

cdh5安装包和校验文件

http://archive-primary.cloudera.com/cdh5/parcels/5.12.1/CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel
http://archive-primary.cloudera.com/cdh5/parcels/5.12.1/CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel.sha1

kafka安装包和校验文件

http://archive-primary.cloudera.com/kafka/parcels/2.2.0/KAFKA-2.2.0-1.2.2.0.p0.68-el6.parcel
http://archive-primary.cloudera.com/kafka/parcels/2.2.0/KAFKA-2.2.0-1.2.2.0.p0.68-el6.parcel.sha1

配置信息

http://archive-primary.cloudera.com/cdh5/parcels/5.12.1/manifest.json

下面的rpm包也需要下载,虽然Cloudera Manager可以自动下载安装,但是文件比较大,速度很慢,可以手动安装

http://archive-primary.cloudera.com/cm5/redhat/6/x86_64/cm/5.12.1/RPMS/x86_64/
cloudera-manager-agent-5.12.1-1.cm5121.p0.6.el6.x86_64.rpm
cloudera-manager-daemons-5.12.1-1.cm5121.p0.6.el6.x86_64.rpm

jdk-8u144-linux-x64.tar.gz 

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

mysql-connector-java

http://download.softagency.net/MySQL/Downloads/Connector-J/mysql-connector-java-5.1.42.zip

官方的安装文档,出问题可以在官方文档中查找

https://www.cloudera.com/documentation/enterprise/latest/topics/installation.html

开始安装

上面的文件在master节点下载完成后如下

[root@master ~/file]#tree .
.
├── CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel
├── CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel.sha1
├── cloudera-manager-el6-cm5.12.1_x86_64.tar.gz
├── jdk-8u144-linux-x64.tar.gz
├── KAFKA-2.2.0-1.2.2.0.p0.68-el6.parcel
├── KAFKA-2.2.0-1.2.2.0.p0.68-el6.parcel.sha1
├── manifest.json
├── mysql-connector-java-5.1.42.zip
└── rpm
    ├── cloudera-manager-agent-5.12.1-1.cm5121.p0.6.el6.x86_64.rpm
    └── cloudera-manager-daemons-5.12.1-1.cm5121.p0.6.el6.x86_64.rpm

下面3台机器同时操作,都是一些基础的配置,这里只列出需要的步骤,临时生效,线上环境要考虑写入配置文件,以及开机自启

关闭selinux,并修改配置文件永久生效

[root@master ~]#sestatus
SELinux status:                 disabled

同步时钟,并将其添加到定时任务中

[root@master ~]#ntpdate time1.aliyun.com
21 Sep 15:55:41 ntpdate[1611]: adjust time server 115.28.122.198 offset 0.008693 sec

还需要配置ntp服务,不然报错

https://www.cloudera.com/documentation/enterprise/5-7-x/topics/install_cdh_enable_ntp.html

防火墙允许3台机器在内网之间互相通信,因为通信的端口很多,只能限制ip层面,master配置如下,允许其他三台机器访问。其他三台机器配置类似

[root@master ~]#cat /etc/sysconfig/iptables
-A INPUT -s 192.168.210.230/32 -j ACCEPT
-A INPUT -s 192.168.210.231/32 -j ACCEPT
-A INPUT -s 192.168.210.232/32 -j ACCEPT

卸载原有openjdk(CDH不支持openjdk)

[root@master ~]#rpm -qa | grep jdk
[root@master ~]#yum remove java

修改主机名,下面是slave1的配置,修改后退出终端,重新登录便会生效

[root@master ~]#hostname slave1  临时生效
[root@master ~]#cat /etc/sysconfig/network 永久生效
NETWORKING=yes
HOSTNAME=master

添加到/etc/hosts文件中

[root@master ~]#cat /etc/hosts
192.168.210.230   master
192.168.210.231   slave1
192.168.210.232   slave2

安装jdk-8u144

[root@master ~/file]#tar xf jdk-8u144-linux-x64.tar.gz -C /usr/local

[root@master ~]#cat /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/jdk1.8.0_144
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

[root@master ~]#. /etc/profile.d/java.sh

[root@master ~]#java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

cdh优化设置,不然界面报警告

swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面

[root@master ~]#echo "vm.swappiness=0" >> /etc/sysctl.conf  #内存小的改为10
[root@master ~]#sysctl -p

关闭大页面压缩

终端执行,并添加到配置文件开机生效

[root@master ~]#echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@master ~]#echo never > /sys/kernel/mm/transparent_hugepage/defrag

[root@master ~]#vim /etc/rc.local
末尾加上(永久生效)
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

下面的操作只在master上操作

ssh免密登录

[root@master ~]#ssh-keygen  一路回车
[root@master ~]#cd .ssh/
[root@master ~/.ssh]#ls
authorized_keys  id_rsa  id_rsa.pub
[root@master ~/.ssh]#cat id_rsa.pub >> authorized_keys 
[root@master ~/.ssh]#scp * slave1:/root/.ssh/
[root@master ~/.ssh]#scp * slave2:/root/.ssh/

测试正常

[root@master ~/.ssh]#cd
[root@master ~]#ssh slave1
Last login: Thu Sep 21 16:10:35 2017 from 192.168.170.30
[root@slave1 ~]#

安装mysql服务,用来存储管理数据

[root@master ~]#yum install mysql-server
[root@master ~]#service mysqld start
[root@master ~]#chkconfig mysqld on

解压服务端和客户端到/opt目录下面

[root@master ~/file]#tar xf cloudera-manager-el6-cm5.12.1_x86_64.tar.gz -C /opt

[root@master ~/file]#cd /opt
[root@master /opt]#ls
cloudera  cm-5.12.1

复制mysql-connector-java文件到对应的目录下

[root@master ~/file]#unzip mysql-connector-java-5.1.42.zip
[root@master ~/file]#cd mysql-connector-java-5.1.42
[root@master ~/file/mysql-connector-java-5.1.42]#cp mysql-connector-java-5.1.42-bin.jar /opt/cm-5.12.1/share/cmf/lib/
[root@master ~/file/mysql-connector-java-5.1.42]#mkdir /usr/share/java
[root@master ~/file/mysql-connector-java-5.1.42]#cp mysql-connector-java-5.1.42-bin.jar /usr/share/java/
[root@master ~/file/mysql-connector-java-5.1.42]#cd /usr/share/java/
[root@master /usr/share/java]#ls
mysql-connector-java-5.1.42-bin.jar
[root@master /usr/share/java]#ln -sv mysql-connector-java-5.1.42-bin.jar mysql-connector-java.jar
`mysql-connector-java.jar' -> `mysql-connector-java-5.1.42-bin.jar'
[root@master /usr/share/java]#ll
total 976
-rw-r--r-- 1 root root 996444 Sep 21 16:50 mysql-connector-java-5.1.42-bin.jar
lrwxrwxrwx 1 root root     35 Sep 21 16:50 mysql-connector-java.jar -> mysql-connector-java-5.1.42-bin.jar

初始化数据库

[root@master ~]#/opt/cm-5.12.1/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -p --scm-host localhost scm scm scm

登录数据库可以看到cm库

创建用户(3个节点都执行)

[root@server1 cm-5.9.0]# useradd --system --home=/opt/cm-5.12.1/run/cloudera-scm-server/ --no-create-home \
--shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

下面的操作只在master上操作

修改节点配置 

[root@master ~]#vim /opt/cm-5.12.1/etc/cloudera-scm-agent/config.ini
#将server_host 改为主节点主机名
server_host=master

在下面的配置中添加java_home,不然后面会因为找不到java_home报错

[root@master ~]#vim /opt/cm-5.12.1/lib64/cmf/service/client/deploy-cc.sh
export JAVA_HOME=/usr/local/jdk1.8.0_144

将节点文件分发到各子节点,这里三个点都作为子节点

[root@master /opt]#tar zcf cm-5.12.1.tar.gz cm-5.12.1
[root@master /opt]#ls
cloudera  cm-5.12.1  cm-5.12.1.tar.gz
[root@master /opt]#scp cm-5.12.1.tar.gz slave1:/root
[root@master /opt]#scp cm-5.12.1.tar.gz slave2:/root

下面的操作在所有子节点操作

然后在各个子节点上解压到/opt目录下面 

[root@slave1 ~]#tar xf cm-5.12.1.tar.gz -C /opt

下面的操作只在master上操作

将cdh5的parcel安装包文件放至/opt/cloudera/parcel-repo

[root@master ~/file]#cp CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel /opt/cloudera/parcel-repo/

校验文件复制并重命名

[root@master ~/file]#cp CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel.sha

将kafka的parcel安装包文件放至/opt/cloudera/parcel-repo

[root@master ~/file]#cp KAFKA-2.2.0-1.2.2.0.p0.68-el6.parcel /opt/cloudera/parcel-repo/

校验文件复制并重命名

[root@master ~/file]#cp KAFKA-2.2.0-1.2.2.0.p0.68-el6.parcel.sha1 /opt/cloudera/parcel-repo/KAFKA-2.2.0-1.2.2.0.p0.68-el6.parcel.sha

将下面的包复制到子机上面,这一步不是必须的,cdh会在界面上执行命令来进行安装,但是包比较大,速度很慢,这里直接将这两个包安装上,界面操作比较快些

[root@master ~/file/rpm]#scp cloudera-manager-agent-5.12.1-1.cm5121.p0.6.el6.x86_64.rpm slave1:/root  
[root@master ~/file/rpm]#scp cloudera-manager-daemons-5.12.1-1.cm5121.p0.6.el6.x86_64.rpm slave1:/root

[root@master ~/file/rpm]#scp cloudera-manager-agent-5.12.1-1.cm5121.p0.6.el6.x86_64.rpm slave2:/root
[root@master ~/file/rpm]#scp cloudera-manager-daemons-5.12.1-1.cm5121.p0.6.el6.x86_64.rpm slave2:/root

在需要作为子节点的机器上面安装cloudera-manager-agent和cloudera-manager-daemons包,这里3个节点都安装

[root@master ~/file/rpm]#yi ./cloudera-manager-agent-5.12.1-1.cm5121.p0.6.el6.x86_64.rpm
[root@master ~/file/rpm]#yi ./cloudera-manager-daemons-5.12.1-1.cm5121.p0.6.el6.x86_64.rpm
[root@master ~/file/rpm]#chkconfig cloudera-scm-agent off  #关闭自启,不使用这个服务

启动master节点

/opt/cm-5.12.1/etc/init.d/cloudera-scm-server start

3个节点都启动agent端

/opt/cm-5.12.1/etc/init.d/cloudera-scm-agent start

因为管理界面端口是在7180端口,放行防火墙

-A INPUT -m state --state NEW -m tcp -p tcp --dport 7180 -j ACCEPT

界面操作

浏览器输入:http://192.168.210.230:7180   admin/admin

1.png

点击同意,继续

点击免费,继续

继续

当前管理4个节点能正常显示,选定。如果不能正常显示,可以输入ip或者主机名来搜索,选定,继续

2.png

可以选择更多来选择界面下载rpm的地址,因为已经提前安装了,这里默认,下面的都默认,点继续

3.png

然后安装 ,继续

4.png

然后检查主机,继续

5.png

选择安装自定义,安装如下所选,继续

6.png

配置如下,继续

7.png

下面是连数据库的操作,这里需要创建用户和权限,输入后点击测试,继续

create database hive DEFAULT CHARACTER SET utf8;
create database amon DEFAULT CHARACTER SET utf8;
grant all privileges on hive.* TO 'hive'@'master' IDENTIFIED BY '123456' with grant option; 
grant all privileges on amon.* TO 'amon'@'master' IDENTIFIED BY '123456' with grant option;
flush privileges;

8.png

下来是设置一些文件的目录,下面是我的磁盘分配,会自动识别大磁盘目录,然后自动调整,默认就挺好的,点击继续

[root@master ~]#df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       673G   14G  626G   3% /
tmpfs           7.8G     0  7.8G   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot
/dev/sdb1       916G   72M  869G   1% /data1
/dev/sdc1       916G   72M  869G   1% /data2
/dev/sdd1       916G   72M  869G   1% /data3
cm_processes    7.8G  156K  7.8G   1% /opt/cm-5.12.1/run/cloudera-scm-agent/process

下面就开始安装了,安装好后继续

9.png

安装成功,进入界面,把不好的修改过来,因为内存较小,这里显示警告

10.png

以下角色供参考,为四台机器的时候可能的角色分部

image.png

功能测试

[root@master ~]$su - hdfs 
[hdfs@master ~]$cat test.sh 
#!/bin/bash
PATH=/usr/lib64/qt-3.3/bin:/usr/local/mysql/bin:/usr/local/mysql/lib:/usr/local/jdk1.8.0_144/bin:/usr/local/sbin:\
/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
export PATH

export YARN_CONF_DIR=/opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3/lib/hadoop-yarn/etc/hadoop

export HADOOP_CLASSPATH="/opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3/lib/hive/lib/*:\
/opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3/lib/hive/lib/*:/opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3/lib/hbase/*:\
/opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3/lib/hbase/lib/*"

source /opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3/etc/spark/conf.dist/spark-env.sh
export YARN_CONF_DIR=/opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3/lib/hadoop-yarn/etc/hadoop

HADOOP_CONF_DIR=/opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3/lib/hadoop/etc/hadoop
export HADOOP_CONF_DIR

fun_test() {
spark-submit \
    --master yarn-client \
    --class org.apache.spark.examples.SparkPi \
    --driver-memory 512m \
    --executor-memory 512m \
    --executor-cores 2 \
    /opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3/lib/spark/examples/lib/spark-examples-1.6.0-cdh5.12.1-hadoop2.6.0-cdh5.12.1.jar \
    1000
}

fun_test &>> test.log

得到结果

Pi is roughly 3.141565711415657

下面是重点,都是坑

上面的过程是顺利的情况下的安装过程

如果想修改7180端口为默认的80或者443端口,可以在前面添加一个nginx反代,也可以添加上https,然后将请求发送到7180端口上面

kafka包已经放到了repo目录下面,可以在界面直接进行安装

创建普通操作文件的用户,和linux的用户相似,这里不再演示

hbase的参数:客户端 Java 堆大小(字节) 更改为1g,不然执行过程会莫名出错

执行脚本可能用到的环境变量,可以看上面的测试脚本

当在线上执行上面的安装操作,出现错误,想要重新安装的时候,下面是常用的步骤:

停掉server和agent服务

当agent端服务启动的时候,会有supervisord进程在,当agent服务停掉的时候,supervisord进程会还在,需要手动将其杀掉

将mysql的cm库drop掉

将agent包卸载掉

将/opt目录下面的文件删除掉

然后重新进行安装

如果怕环境被污染,可以使用docker进行部署,这样,所有文件都在docker里面,当不想用的时候,可以将docker删除即可,比较方便

如果有新的主机想要添加到集群里面,需要按照上面的教程,配置一个新的从,包括下面用到的cm-5.12.1.tar.gz 压缩包也要重新配置压缩,不能从现有的机器上面拷贝一个出来,不然出错,添加好后,在每个功能里面添加新的实例

提示时钟偏差,要么是ntp服务没有成功启动,要么是设置的ntp站点连不上, 要么是时间不同步

提示副块不足,原因是机器太少:http://blog.csdn.net/HFUTLXM/article/details/77605915#t4

服务重新启动后,如果界面报错,无法加载host图表

Cloudera Management Service > Configration > Search "Descriptor"
Set "Descriptor Fetch Max Tries" to a larger value - 60 (default: 5)
I left "Descriptor Fetch Tries Interval" as default - 2 seconds.

下面是docker安装参考:http://www.cnblogs.com/chengyujia/p/6855436.html

参考文档:离线安装指南

未经允许不得转载:江哥架构师笔记 » cloudera manager cdh安装配置

分享到:更多 ()

评论 抢沙发

评论前必须登录!