cdh搭建
1.软件准备
软件 | 版本 |
---|---|
os | Centos 7.3(64位) |
cm | cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz |
cdh | CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel & CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1 & manifest.json |
mysql | mysql-community-common-5.7.27-1.el7.x86_64.rpm & mysql-community-libs-5.7.27-1.el7.x86_64.rpm & mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm & mysql-community-devel-5.7.27-1.el7.x86_64.rpm & mysql-community-client-5.7.27-1.el7.x86_64.rpm & mysql-community-server-5.7.27-1.el7.x86_64.rpm |
jdk | jdk-8u221-linux-x64.rpm |
jdbc | mysql-connector-java-5.1.48.tar |
2.主机配置规划
ip | 配置 | 角色 | 需执行以下步骤 |
---|---|---|---|
192.168.16.236 | 4C 8G 1T | slave1 | 3,4,5,6,7,10,13 |
192.168.16.237 | 4C 16G 320G | master | 3,4,5,6,7,8,9,10,11,12,13 |
192.168.16.238 | 4C 16G 1T | slave2 | 3,4,5,6,7,10,13 |
3.配置host
shell> vi /etc/hosts
在host文件中加入以下内容:
127.0.0.1 localhost
192.168.16.237 master
192.168.16.236 slave1
192.168.16.238 slave2
4.关闭防火墙和selinux安全工具
shell> systemctl stop firewalld.service(关闭防火墙)
shell> systemctl disable firewalld.service(禁止开机启动)
shell> firewall-cmd --state(状态查询)
关闭linux SELINUX安全内核
shell> setenforce 0(临时有效)
修改配置文件使其永久有效
shell> vi /etc/selinux/config
在config文件中找到SELINUX并设置为:
SELINUX=disabled
shell> reboot
shell> sestatus(状态查询)
5.linux系统参数调整
将swappiness设为0以便可以最大限度使用内存,内存使用完才使用swap交换分区
shell> echo 0 > /proc/sys/vm/swappiness
shell> echo "vm.swappiness=0" >> /etc/sysctl.conf
shell> "echo 0" > /proc/sys/vm/swappiness" >> /etc/rc.d/rc.local
禁用huge大页(cm在安装组件的时候会有要求,若不禁用会导致cpu消耗过高)
shell> echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.d/rc.local
shell> echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.d/rc.local
修改linux最大句柄数
shell> echo "* soft nofile 128000" >> /etc/security/limits.conf
shell> echo "* hard nofile 128000" >> /etc/security/limits.conf
shell> echo "* soft nproc 128000" >> /etc/security/limits.conf
shell> echo "* hard nproc 128000" >> /etc/security/limits.conf
shell> sed -i 's/1024/unlimited/' /etc/security/limits.d/90-nproc.conf
shell> ulimit -SHn 12800
shell> ulimit -SHu 12800
6.配置ssh免密登陆和ntp时钟同步(参考https://blog.51cto.com/abezoo/2394680 中软件应用部分)
7.安装jdk及配置java环境变量
查看系统是否自带有jdk并将其卸载
shell> rpm -qa |grep java
shell> rpm -e -nodeps 包名
卸载后安装下载的jdk
shell> rpm -ivh jdk-8u221-linux-x64.rpm
配置环境java环境变量
shell> vi /etc/profile
在profile文件末尾加入以下内容:
export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
export PATH=.:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
然后激活上面的配置项
shell> source /etc/profile
shell> echo $JAVA_HOME(查看是否配置成功)
8.安装mysql(参考https://blog.51cto.com/abezoo/2402906)
mysql这里需要注意两点:
(1)mysql的密码策略,mysql默认的中级,我们在这里除了要把其改为低级外,还要将密码的长度设置为3,因为我们后面cdh中通用的scm库的密码通常正好是3位
mysql> set global validate_password_policy=LOW;
mysql> set validate_password_number_count=0;
mysql> set validate_password_length=3;
mysql> SHOW VARIABLES LIKE 'validate_password%'; (查看密码策略中的各项参数)
(2)给root用户和scm用户赋权
mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'root' with grant option;
mysql> grant all privileges on *.* to 'root'@'127.0.0.1' identified by 'root' with grant option;
mysql> grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
mysql> create user scm;
mysql> grant all privileges on *.* to 'scm'@'localhost' identified by 'scm' with grant option;
mysql> grant all privileges on *.* to 'scm'@'127.0.0.1' identified by 'scm' with grant option;
mysql> grant all privileges on *.* to 'scm'@'%' identified by 'scm' with grant option;
mysql> flush privileges;
9.cdh所需数据库创建
mysql> create database hive default charset utf8;
mysql> create database oozie default charset utf8;
mysql> create database hue default charset utf8;
mysql> create database scm default charset utf8;
10.依赖软件安装
shell> yum install -y psmisc libxslt zlib sqlite fuse fuse-libs redhat-lsb cyrus-sasl-plain cyrus-sasl-gassapi chkconfig bind-utils perl
11.安装http服务
cm的管理界面是web方式,在主节点上安装并启动http服务
shell> yum install -y httpd
shell> chkconfig httpd on
shell> service httpd start
12.cm安装
在每台服务器上创建CM使用的用户
shell> useradd --system --home=/opt/cm-5.15.0/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
shell> mv CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1 CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha
shell> tar -zxvf cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz -C /opt/
shell> mv CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha manifest.json /opt/cloudera/parcel-repo
解压jdbc,并将其移到相应位置
shell> tar -xvf mysql-connector-java-5.1.48.tar
shell> cd mysql-connector-java-5.1.48
shell> cp mysql-connector-java-5.1.48-bin.jar /opt/cm-5.15.0/share/cmf/lib
shell> cp mysql-connector-java-5.1.48-bin.jar /usr/share/java
初始化cm服务器
shell> /opt/cm-5.15.0/share/cmf/schema/scm_prepare_database.sh mysql -hlocalhost -uroot -proot --scm-host localhost scm scm scm
直到出现your scm database is configured correctly!则表示初始化成功,才可接着配置agent
shell> vi /opt/cm-5.15.0/etc/cloudera-scm-agent/config.ini
找到文件中的server_host并设置为:
server_host=master
将cm复制到slave上
shell> scp -r /opt/cm-5.15.0 root@slave1:/opt
shell> scp -r /opt/cm-5.15.0 root@slave2:/opt
启动服务
shell> /opt/cm-5.15.0/etc/init.d/cloudera-scm-server start
shell> /opt/cm-5.15.0/etc/init.d/cloudera-scm-server statue(查看是否成功启动)
shell> /opt/cm-5.15.0/etc/init.d/cloudera-scm-agent start
注意:master、slave1、slave2三台机器都需要启动agent
输入:http://192.168.16.237:7180/ 就可以访问到CM的管理界面用户名密码都是:admin
13.组件安装
为避免在安装hive或oozie时出现无法连接mysql元数据库的问题,先执行以下命令
shell> cp /opt/cm-5.7.1/share/cmf/lib/mysql-connector-java-*-bin.jar /opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hive/lib/
shell> cp /opt/cm-5.7.1/share/cmf/lib/mysql-connector-java-*-bin.jar /opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/oozie/lib/
shell> cp /opt/cm-5.7.1/share/cmf/lib/mysql-connector-java-*-bin.jar /var/lib/oozie/
14.安装完成后可能会出现hue load balancer无法启动的情况,主要原因是缺少包导致,执行以下语句并重启hue即可解决
shell> yum install -y hhtpd mod_ssl
15.按照网上的流程安装上tez后,hive后端可以正常使用,但是hue里面还是无法正常使用,其原因主要是没有在配置文件中进行配置。先将/usr/local/apache-tez-0.8.5-src/tez-dist/target/tez-0.8.5目录上传到hdfs上
shell> hdfs dfs -put /usr/local/apache-tez-0.8.5-src/tez-dist/target/tez-0.8.5 /apps
接着修改/etc/hive/conf(有些人可能是放在/etc/tez/conf)中的tez-site.xml,加入以下语句,修改后将该文件copy到集群中其它每台机器上
tez.lib.uris
${fs.defaultFS}/apps/tez-0.8.5,${fs.defaultFS}/apps/tez-0.8.5/lib
shell> scp /etc/hive/conf/tez-site.xml root@slave1:/etc/hive/conf