总结一下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
点击同意,继续
点击免费,继续
继续
当前管理4个节点能正常显示,选定。如果不能正常显示,可以输入ip或者主机名来搜索,选定,继续
可以选择更多来选择界面下载rpm的地址,因为已经提前安装了,这里默认,下面的都默认,点继续
然后安装 ,继续
然后检查主机,继续
选择安装自定义,安装如下所选,继续
配置如下,继续
下面是连数据库的操作,这里需要创建用户和权限,输入后点击测试,继续
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;
下来是设置一些文件的目录,下面是我的磁盘分配,会自动识别大磁盘目录,然后自动调整,默认就挺好的,点击继续
[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
下面就开始安装了,安装好后继续
安装成功,进入界面,把不好的修改过来,因为内存较小,这里显示警告
以下角色供参考,为四台机器的时候可能的角色分部
功能测试
[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
参考文档:离线安装指南
–
–
–
评论前必须登录!
注册