
(CDH5.13.1版)
| 版本 | v1.0 |
| 作者 | 郭维忠 |
| 发布日期 | 2018-03-10 |
1.1.软件环境
本文将介绍Centos7.4离线安装CDH和ClouderaManager过程,软件版本如下:
| NO. | 软件名称 | 版本 |
| 1. | 操作系统 | Centos7.4位 |
| 2. | JDK | jdk-8u151-linux-x |
| 3. | ClouderManager | 5.13.1 |
| 4. | CDH | 5.13.1 |
| 5. | 数据库 | Mysql5.7 |
| 6. | JDBC | mysql-connector-java-.jar |
本次安装共5台服务器,服务器配置及用途如下:
| NO. | 机器名称 | 内网IP | 配置 | 用途 |
| 1. | node168 | 8C/32Gb/1TB | 主,CM,MysqlDB | |
| 2. | node169 | 9 | 8C/32Gb/1TB | 从 |
| 3. | node170 | 70 | 8C/32Gb/1TB | 从 |
| 4. | node171 | 71 | 8C/32Gb/1TB | 从 |
| 5. | node172 | 72 | 8C/32Gb/1TB | 从 |
1)JDK环境:
JDK版本:51
jdk-8u151-linux-x.rpm
下载地址:
2)CM包:
CM版本:5.13.1
下载地址:
3)CDH包
CDH版本:5.13.1,
;
.sha1;
manifest.json
下载地址:
4)JDBC连接jar包:
jar包版本:5.1.43,
mysql-connector-java-5.1.43.jar
下载地址:
1.4.修改机器名(所有节点)
1)修改机器名称
#hostnamectlset-hostnamexxx//设置机器名
| #hostname//查看本机名 |
2)每个节点机器,都要配置hosts
| #vi/etc/hosts |
1localhost//建议保留此行
node168
node169
node170
node171
| node172 |
注:为了简便,可以先关闭防所有节点火墙,安装完成后,再按照下面步骤设置。
防火墙常用命令:
#firewall-cmd--state(查询防火墙状态)
#systemctlstopfirewalld.service(关闭防火墙)
#systemctlstartfirewalld.service(开启防火墙)
| #systemctldisablefirewalld.service(禁止firewall开机启动) |
//集群机器间可以相互访问
firewall-cmd--permanent--add-rich-rule="rulefamily='ipv4'sourceportprotocol='tcp'port='0-65535'accept"
firewall-cmd--permanent--add-rich-rule="rulefamily='ipv4'sourceportprotocol='tcp'port='0-65535'accept"
firewall-cmd--permanent--add-rich-rule="rulefamily='ipv4'sourceportprotocol='tcp'port='0-65535'accept"
firewall-cmd--permanent--add-rich-rule="rulefamily='ipv4'sourceportprotocol='tcp'port='0-65535'accept"
firewall-cmd--permanent--add-rich-rule="rulefamily='ipv4'sourceportprotocol='tcp'port='0-65535'accept"
//设置可以访问的端口
firewall-cmd--permanent--add-port=0-65535/tcp
| firewall-cmd--reload |
1.6.配置免密码登录SSH
将子节点设置为从主节点ssh无密码登陆(主节点访问从节点需要无密码互通,否则后面会出现问题)
在主节点上执行:
#cd~//进入到根目录
| #ssh-keygen-trsa |
把公钥拷贝至node169服务器上?:
| #scp/root/.ssh/id_rsa.pubroot@node169:~//输入node169机器上root用户密码拷备成功 |
然后在node169服务器上,把公钥的内容追加到authorized_keys文件末尾(这个文件也在隐藏文件夹.ssh下,如果没有可以新建):
#catid_rsa.pub>>~/.ssh/authorized_keys
如果提示下面信息,则需要创建./ssh目录:
-bash:/root/.ssh/authorized_keys:Nosuchfileordirectory
//创建/.ssh目录,再追加公钥内容
#mkdir~/.ssh
| #catid_rsa.pub>>~/.ssh/authorized_keys |
| #chmod600~/.ssh/authorized_keys |
在node168节点出现下面表示成功登录node169节点:
以同样的方式将公钥拷贝至其他节点服务器上。
1.7.关闭SELINUX(所有节点)
关闭linuxSELINUX安全内核
| #setenforce0(临时生效) |
| #vi/etc/selinux/config |
| SELINUX=disabled |
| #reboot |
| #sestatus |
1.8.修改Linux内核参数(所有节点)
为避免安装过程中出现的异常问题,首先调整Linux内核参数。
1)设置swappiness,控制换出运行时内存的相对权重,Cloudera建议将swappiness设置为10:
//查看swappiness
#cat/proc/sys/vm/swappiness
//永久性修改,执行下面两条命令
#sysctl-wvm.swappiness=10
| #echovm.swappiness=10>>/etc/sysctl.conf |
自CentOS6版本开始引入了TransparentHugePages(THP),从CentOS7版本开始,该特性默认就会启用。尽管THP的本意是为提升内存的性能,不过某些数据库厂商还是建议直接关闭THP,否则可能会导致性能出现下降。
首先查看透明大页是否启用,[always]never表示已启用,always[never]表示已禁用:
#cat/sys/kernel/mm/transparent_hugepage/defrag
[always]madvisenever
#cat/sys/kernel/mm/transparent_hugepage/enabled
| [always]madvisenever |
临时关闭(重启机器会变回默认开启状态):
#echonever>/sys/kernel/mm/transparent_hugepage/defrag
| #echonever>/sys/kernel/mm/transparent_hugepage/enabled |
//编辑/etc/rc.d/rc.local
#vi/etc/rc.d/rc.local
//在文件后添加下面内容:
iftest-f/sys/kernel/mm/transparent_hugepage/enabled;then
echonever>/sys/kernel/mm/transparent_hugepage/enabled
fi
iftest-f/sys/kernel/mm/transparent_hugepage/defrag;then
echonever>/sys/kernel/mm/transparent_hugepage/defrag
| fi |
| #chmod+x/etc/rc.d/rc.local |
3)修改文件句柄数:
修改系统文件句柄数:
//查看文件句柄数,显示1024,显然太小
#ulimit-n
1024
//修改
#vi/etc/security/limits.conf
//在文件后加入下面内容:
*softnofile100000
| *hardnofile100000 |
1.9.其他安装与配置(所有节点)
为避免安装过程中出现异常问题,安装相关依赖包:
#yum-yinstallpsmiscMySQL-pythonatbcbind-libsbind-utilscups-clientcups-libscyrus-sasl-gssapicyrus-sasl-plainedfusefuse-libshttpdhttpd-toolskeyutils-libs-develkrb5-devellibcom_err-devellibselinux-devellibsepol-devellibverto-develmailcapnoarchmailxmod_sslopenssl-develpcre-develpostgresql-libspython-psycopg2redhat-lsb-coreredhat-lsb-submod-securityx86_spaxtimezlib-devel
#yuminstall-ypython-lxml
#yuminstallkrb5-develcyrus-sasl-gssapicyrus-sasl-develibxml2-devellibxslt-develmysqlmysql-developenldap-develpython-develpython-simplejsonsqlite-devel
#chmod+x/etc/rc.d/rc.local
#yum-yinstallrpcbind
#systemctlstartrpcbind
| #echo"systemctlstartrpcbind">>/etc/rc.d/rc.local |
集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。具体建设过程如下:
所有节点安装相关组件:
| #yum?installntpntpdate-y |
1)查找时间同步服务器:
打开网址,内容如下:
2)编辑/etc/ntp.conf:
#vi/etc/ntp.conf
//在文件中输入上面网页内容:
server
server
server
| server |
| #systemctlstart?ntpd |
| #systemctl?enablentpd.service? |
#查看?chronyd设置状态
| #systemctlstatuschronyd |
以面表明,chronyd显示为开机启动状态。
将chronyd设为禁用状态:
| #systemctldisablechronyd.service |
5)检查是否设置成功:
#ntpq-p
//更新时间
| #timedatectl? |
6)远程客户端时间同步测试
#date
| #ntpdate |
7)客户端设置计划任务,每30分钟同步时间
#crontab-e
//加入内容:
| 0-59/30****/usr/sbin/ntpdate&&/sbin/hwclock-w |
//设置开机启动
#systemctlenablecrond.service
//查看状态
| #systemctlstatuscrond |
下载rpm安装包jdk-8u151-linux-x.rpm
CentOS系统一般自带OpenJdk,需要卸载掉自带的OpenJdk,使用
| #rpm-qa|grepjava |
| #rpm-e–nodeps+包名 |
| #rpm-ivhjdk-8u151-linux-x.rpm |
修改/etc/profile文件配置环境变量,执行命令:
| #vi/etc/profile |
exportJAVA_HOME=/usr
| exportPATH=$PATH:$JAVA_HOME/bin |
#source/etc/profile//使修改立即生效
#echo$PATH//查看PATH值
| #echo$JAVA_HOME//查看JAVA_HOME值 |
#vi/etc/bashrc
//在文件最后加入:
exportJAVA_HOME=/usr
exportPATH=$PATH:$JAVA_HOME/bin
//使修改立即生效
#source/etc/bashrc
//查看JAVA_HOME值
| #echo$JAVA_HOME |
到官网选择对应安装包:
1)下载安装包
| #wget |
#tar-xvf
| //解压后文件列表: |
按common–>libs–>client–>server的顺序安装:
#rpm-ivh
#rpm-ivh
#rpm-ivh
#rpm-ivh
#rpm-ivh
//安装下面包,否则Hue安装报连接错误
| #rpm-ivh |
#systemctlstartmysqld
查看状态:
| #systemctlstatusmysqld |
1、先修改配置文件/etc/my.cnf令MySQL跳过登录时的权限检验,在[mysqld]下加入一行:
skip-grant-tables
2、重启MySQL
#servicemysqldrestart
3、免密码登录MySQL。
#mysql
4、mysql客户端执行如下命令,修改root密码
mysql>usemysql;
mysql>UPDATEuserSETauthentication_string=password('your-password')WHEREhost='localhost'ANDuser='root';
mysql>selecthost,user,authentication_string,password_expiredfromuser;
mysql>updateusersetpassword_expired='N'wherepassword_expired='Y'//密码不过期
mysql>updateusersethost='%'whereuser='root'andhost='localhost';//远程可访问
mysql>flushprivileges;//刷新
mysql>exit;//退出
5、修改配置文件/etc/my.cnf删除此前新增那一行skip-grant-tables,并重启MySQL(这一步非常重要,不执行可能导致严重的安全问题)
| #servicemysqldrestart//重启Mysql |
2.1.传包,解包
在主节点上下载相关软件包,这里将软件包下载到/data/cdh/目录下。
| #cd/data/cdh |
| #wget |
| #wget |
#wget
#wget.sha1
| #wget |
#tar-zxvf-C/opt/
#ls/opt/
| clouderacm-5.13.1 |
在主节点上:
#mysql-uroot-p//加参数-指定本机方式,否则可能不允许执行grant
Enterpassword:\\\\输入数据库密码
//在MariaDB[(none)]>命令状态输入下面脚本:
createdatabasehiveDEFAULTCHARSETutf8COLLATEutf8_general_ci;
createdatabaseamonDEFAULTCHARSETutf8COLLATEutf8_general_ci;
createdatabasehueDEFAULTCHARSETutf8COLLATEutf8_general_ci;
createdatabasemonitorDEFAULTCHARSETutf8COLLATEutf8_general_ci;
createdatabaseoozieDEFAULTCHARSETutf8COLLATEutf8_general_ci;
grantallprivilegeson*.*toroot@localhostidentifiedby'root'withgrantoption;
grantallon*.*toroot@"%"Identifiedby"root";
flushprivileges;
exit;
//复制MysqlJDBC包到/opt/cm-5.13.1/share/cmf/lib/目录
#cp/opt/cm-5.13.1/share/cmf/lib/
//初始化CM,执行下面脚本
#mysqlcm-hnode168-uroot-proot--scm-hostnode168scmscmscm
//如果出现下面错误:
:Accessdeniedforuser'root'@'localhost'(usingpassword:YES)
//解决办法:
在/etc/hosts文件中,加上
| 1localhost.node168 |
脚本/scm_prepare_database.sh执行成功界面:
2.3.创建用户
在所有节点上执行:
| #useradd--system--home=/opt/cm-5.13.1/run/cloudera-scm-server--shell=/bin/false--comment"ClouderaSCMUser"cloudera-scm |
在主节点上:
//进入软件包目录
#cd/data/cdh
//拷贝三个文件到/opt/cloudera/parcel-repo/目录
#cpCDHmanifest.json/opt/cloudera/parcel-repo/
//进入/opt/cloudera/parcel-repo/目录
#cd/opt/cloudera/parcel-repo/
//修改文件名
| #mv1.cdh |
2.5.拷贝jar包
在所有节点上:
//如果没有/usr/share/java/目录,则创建
| #cp/usr/share/java/mysql-connector-java.jar |
//将mysqlJDBCjar包拷贝到/opt/cm-5.13.1/share/cmf/lib/目录
| #cp/opt/cm-5.13.1/share/cmf/lib/ |
在主节点上,修改/opt/cm-5.13.1/etc/cloudera-scm-agent/config.ini文件:
//将config.iniserver_host=localhost内容改为server_host
| #sed-i"s/server_host=localhost/server_host/opt/cm-5.13.1/etc/cloudera-scm-agent/config.ini |
//将cm-5.13.1打包,并复制到其他节点
#cd/opt
#tarczfcm-5.13.1.tar.gzcm-5.13.1/
//复制到其他节点
#scpcm-5.13.1.tar.gznode169:/opt/
#scpcm-5.13.1.tar.gznode170:/opt/
#scpcm-5.13.1.tar.gznode171:/opt/
| #scpcm-5.13.1.tar.gznode172:/opt/ |
//将cm-5.13.1包解压
#cdopt
#tar-xzvfcm-5.13.1.tar.gz
//解压后删除
| #rm-rfcm-5.13.1.tar.gz |
在主节点上,启动cloudera-scm-server:
| #/opt/cm-5.13.1/etc/init.d/cloudera-scm-serverstart |
在所有节点上,启动cloudera-scm-agent:
| #/opt/cm-5.13.1/etc/init.d/cloudera-scm-agentstart |
地址:主节点IP:7180
用户名、密码:admin
3.安装CDH
3.1.登录后界面
接受协议:
3.2.选择CM版本
本文档选择ClouderaExpress免费版。
3.3.指定主机
在搜索主机名和IP地址框输入node[169-172],这里输入的内容支持正则表达式。输入后点【搜索】按钮,出现机器列表:
选择“当前管理的主机“选择项卡,点【继续】。
3.4.选择CDH版本
这里需要选择制作本地源时的版本,如果选择别的版本的就会去官网下载,那样安装速度会很慢。
点【继续】按钮,进入安装界面。
3.4.1.出现“主机运行状态不良”错误
遇到节点“主机运行状态不良”的提示,解决办法是删除故障节点Agent服务cm_guid文件:
| #rm-rfcloudera-scm-agent/cm_guid |
| etc/init.d/cloudera-scm-agentrestart |
注:出现故障原因是,因为我之前在故障节点启动过cloudera-scm-agent服务。
3.5.检查主机正确性
确保全部验证通过。
3.6.选择安装的服务
本文选择的是安装所有服务。
3.7.角色分配
这里应该根据实际需求和服务器的硬件参数自己选择
3.8.数据库设置
指定的数据库名称,要与2.2节创建的数据库(hive,monitor,oozie,hue)保持一致,并输入对应的数据库用户名和密码,为了简便这里用的是root账号名和密码。
全部输入完,之后【测试连接】:
3.8.1.测试连接报错:
测试连接,Hue测试报错:Unabletoverifydatabaseconnection:
原因是缺少Mysqlmysql-community-libs-compat安装包,安装后,问题解决:
//进入安装包所在目标
#cd/data/mysql/
| #rpm-ivh |
3.9.群集设置
可以根据自己的实际情况更改设置,本文采用默认配置。这些配置也可以在集群安装完成后再更改。
3.10.开始安装
安装过程没有任何错误,显示安装完成。
3.11.安装完成
第一次安装完成后,会出现一些配置的警告信息。这些可以根据提示信息更改。
3.11.1.警告信息:
发现节点有异常信息,显示所有主机,发现node71节点运行状态不良。
按照主机->所有主机->进入节点查看:
选择“配置“页签,拉到页面底部,修改”主机时钟偏差阈值“,设为”从不“,点【保存更改】,异常消失。
4.常见错误
4.1.初始化数据库错误:
在这个环节,出现的问题较多,但总的来说,是与数据库参数配置,和帐号权限配置有关。
如在执行scm_prepare_database.sh脚本时,出现的错误:
| :Yourpassworddoesnotsatisfythecurrentpolicyrequirements |
可以通过my.cnf配置文件关闭validate_password插件。
通过修改/etc/my.cnf目录下配置文件,修改设置密码策略的级别,只需要在[mysqld]下添加一行
validate_password=off
如图所示:
编辑完配置文件后,重启mysqld服务即可生效。
4.2.未能连接到HostMonitor
后台tail-fcloudera-scm-server/cloudera-scm-server.log日志报错信息:
com.cloudera.cmon.MgmtServiceLocatorException:CouldnotfindaHOST_MONITORINGnozzlefromSCM.
此问题原因:有些网上说是由文件句柄数引起,所以按照网上说明进行了修改:
在主节点上,修改/opt/cm-5.13.1/etc/cloudera-scm-agent/config.ini文件:
//查看文件句柄数,显示1024,显然太小
#ulimit-n
1024
//修改
#vi/etc/security/limits.conf
//在文件后加入下面内容:
*softnofile100000
| *hardnofile100000 |
注:按照上面过程操作,但问题依然存在,后来通过用3.4节中“主机运行状态不良”故障问题解决办法,问题得到解决。
