- 官网文档 https://docs.cloudera.com/documentation/enterprise/5-16-x/topics/introduction.html
- 版本选择 https://cloud.tencent.com/developer/article/1419293
- 推荐角色分配 https://docs.cloudera.com/documentation/enterprise/5-16-x/topics/cm_ig_host_allocations.html
1. 集群环境及安装包
1.1. 集群环境
| 主机名 | IP | 系统版本 | 部署服务 |
|---|---|---|---|
| master | 10.19.200.49 | CentOS6.5_64 | CM Server、Agent、MySQL |
| slave1 | 192.168.19.12 | CentOS6.5_64 | CM Agent |
| slave2 | 192.168.19.13 | CentOS6.5_64 | CM Agent |
| slave3 | 192.168.19.14 | CentOS6.5_64 | CM Agent |
| slave4 | 192.168.19.15 | CentOS6.5_64 | CM Agent |
| slave5 | 192.168.19.16 | CentOS6.5_64 | CM Agent |
| slave6 | 192.168.19.17 | CentOS6.5_64 | CM Agent |
| slave7 | 192.168.19.18 | CentOS6.5_64 | CM Agent |
1.2. 准备安装包
mysql-5.7.27-1.el6.x86_64.rpm-bundle.tarmysql-connector-java-5.1.47.jarjdk-8u221-linux-x64.tar.gzCDH-5.16.2-1.cdh5.16.2.p0.8-el6.parcelCDH-5.16.2-1.cdh5.16.2.p0.8-el6.parcel.sha1cloudera-manager-el6-cm5.16.2_x86_64.tar.gzmanifest.json
2. 环境准备
2.1. 配置hosts映射
vi /etc/hosts
2.2. 配置SSH免密登录
ssh-keygen -t rsa cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys ssh-copy-id -i slave
2.3. 配置时间同步
1、更换时区
cp /etc/localtime /etc/localtime.bak cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2、同步最新时间
ntpdate asia.pool.ntp.org
3、定时同步
crontab -e
* ntpdate asia.pool.ntp.org
4、安装 ntp
yum install -y ntp
5、开启 ntp
service ntpd start
6、配置 ntp 开机启动
chkconfig ntpd on
7、检查 ntp 开机启动是否成功 2-5 为 on 表示成功
chkconfig —list ntpd
2.4. 关闭防火墙
1、关闭防火墙
service iptables stop
2、验证
service iptables status
3、关闭防火墙的自动运行
chkconfig iptables off
4、验证
chkconfig —list | grep iptables
2.5. 关闭SELINUX
vi /etc/selinux/config
SELINUX=disabled
2.6. 修改Linux内核参数
查看linux内核参数:vm.swappiness,vm.swappiness值的范围为0~100,作用是控制应用数据在物理内存和虚拟内存之间的交换,值越低,交换的越少。默认值为60。
查看 cat /proc/sys/vm/swappiness`
配置 echo “10” > /proc/sys/vm/swappiness
2.7. 关闭大页面压缩
查看THG
cat /sys/kernel/mm/transparent_hugepage/defrag
关闭THG
echo never > /sys/kernel/mm/transparent_hugepage/defrag<br />echo never > /sys/kernel/mm/transparent_hugepage/enabled
2.8. 修改linux 文件最大打开数
修改文件最大打开数,最大只能写100w,超过了会导致开不了机
vi /etc/security/limits.conf
# End of file
soft nofile 1000000
hard nofile 1000000
2.9. 系统运行最大进程数量修改
vi /etc/security/limits.d/90-nproc.conf 把 1024 改为 102400
* soft nproc 102400
root soft nproc unlimited
2.10. 安装lrzsz、httpd、mod_ssl
yum -y install lrzsz
yum -y install httpd
yum -y install mod_ssl
2.11. 关闭交换空间
Cloudera建议将交换空间设置为0,过多的交换空间会引起GC耗时的激增,所以还是关闭的为好。执行命令 (所有节点)
echo “vm.swappiness = 0” >> /etc/sysctl.conf
3. 安装JDK
3.1. 卸载Linux自带的openJDK
查找自带的jdk
rpm -qa | grep java
卸载所有的java包
rpm -e —nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
rpm -e —nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
rpm -e —nodeps tzdata-java-2013g-1.el6.noarch
3.2. 解压安装JDK
cd /home/
tar -zxvf jdk-8u221-linux-x64.tar.gz
mv jdk1.8.0_221 /opt/tools/java
mkdir /usr/java
ln -s /opt/tools/java /usr/java/default
这里需要建立java软连接到 /usr/java/default ,因为CDH默认会找这个路径
3.3. 配置环境变量
vi /etc/profile
export JAVA_HOME=/opt/tools/java
export PATH=.:$PATH:$JAVA_HOME/bin
source /etc/profile
3.4. 校验
java -version
4. 安装 MySQL
4.1. 卸载自带的MySQL
查找已有MySQL
rpm -qa | grep mysql
卸载rpm包,例如我这里的 mysql-libs-5.1.71-1.el6.x86_64 已安装,卸载掉
rpm -e —nodeps mysql-libs-5.1.71-1.el6.x86_64
4.2. 安装自己下载的MySQL
tar -xvf mysql-5.7.27-1.el6.x86_64.rpm-bundle.tarmkdir mysqlmv ./mysql-* mysql/cd mysql/rpm -qa | grep mysqlrpm -ivh mysql-community-common-5.7.27-1.el6.x86_64.rpmrpm -ivh mysql-community-libs-5.7.27-1.el6.x86_64.rpmrpm -ivh mysql-community-libs-compat-5.7.27-1.el6.x86_64.rpmrpm -ivh mysql-community-client-5.7.27-1.el6.x86_64.rpmrpm -ivh mysql-community-server-5.7.27-1.el6.x86_64.rpm
4.3. 启动MySQL
service mysqld start
4.4. 设置 root 密码
mysql 默认密码在 /var/log/mysqld.log 中
直接找到 temporary password
mysql -uroot -p
Enter password: 此处输入刚才日志文件中的随机密码
修改密码:
SET PASSWORD = PASSWORD(‘xxxxxx’);
此处的密码需要一定的复杂度,否则不能通过,因为mysql5.7的密码校验插件比较复杂,当然也可以卸掉该插件
4.5. 配置MySQL
vi /etc/my.cnf
datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockcharacter-set-server=utf8
Disabling symbolic-links is recommended to prevent assorted security riskslower_case_table_names=1bulk_insert_buffer_size=64Msymbolic-links=0
log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidsql_mode='NO_ENGINE_SUBSTITUTION'
4.6. 重启MySQL
service mysqld restart
4.7. 赋权MySQL root用户远程访问
grant all privileges on . to ‘root’@’%’ identified by ‘root’;
flush privileges;
(如果报错不能创建数据库就执行下面的语句
grant all privileges on . to ‘root’@’%’ identified by ‘root’ with grant option;)
4.8. 创建oozie、hive、amon、hue数据库
— hive数据库
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
— 集群监控数据库
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
— hue数据库
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
— oozie数据库
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
5. 安装CM
5.1. 解压
tar -zxvf cloudera-manager-el6-cm5.16.2_x86_64.tar.gz
解压之后有两个文件夹 cloudera cm-5.16.2
把这个两个文件夹放到一个文件夹里面 /opt下的 只能在opt下,因为cm默认路径是opt
mv cloudera /opt/
mv cm-5.16.2 /opt/
5.2. 添加 cloudera-scm 用户
useradd —system —home=/opt/cm-5.16.2/run/cloudera-scm-server —no-create-home —shell=/bin/false —comment “Cloudera SCM User” cloudera-scm
5.3. jdbc驱动
cp /home/mysql/mysql-connector-java-5.1.47.jar /opt/cm-5.11.0/share/cmf/lib/
5.4. 配置CM
vi /opt/cm-5.16.2/etc/cloudera-scm-agent/config.ini
修改下面的 server_host 改为管理节点的主机名
server_host=master
5.4.2. 修改CM的时区
vi /opt/cm-5.16.2/share/cmf/bin/cmf-server
CMF_OPTS=”$CMF_OPTS -Duser.timezone=GMT+08”
5.5. 为Cloudera Manager 建树数据库
/opt/cm-5.16.2/share/cmf/schema/scm_prepare_database.sh mysql cm -h master -uroot -proot --scm-host master scm scm scm
正式环境:
/data/cloudera/cm-5.16.2/share/cmf/schema/scm_prepare_database.sh mysql cm -h 172.16.16.212 -uroot -P3306 -pyouai123 --scm-host h1 mysql root
或者
cm-5.16.2/share/cmf/schema/scm_prepare_database.sh mysql cm root root
格局是: scm_prepare_database.sh 数据库类型 数据库 服务器 用户名 暗码 –scm-host Cloudera_Manager_Server主机名
5.6. 复制cm-5.16.2到集群所有节点
scp -rq /opt/cm-5.16.2 hadoop33:/opt/ scp -rq /opt/cm-5.16.2 hadoop34:/opt/
5.7. 其他节点也添加 cloudera-scm 用户
useradd —system —home=/opt/cm-5.16.2/run/cloudera-scm-server —no-create-home —shell=/bin/false —comment “Cloudera SCM User” cloudera-scm
5.8. 启动CM-server、CM-agent
5.8.1. hadoop32上启动 cloudera-scm-server
/opt/cm-5.16.2/etc/init.d/cloudera-scm-server start
设置成开机启动:
cp /opt/cm-5.16.2/etc/init.d/cloudera-scm-server /etc/init.d/cloudera-scm-server chkconfig cloudera-scm-server on
5.8.2. 所有节点启动 cloudera-scm-agent
/opt/cm-5.16.2/etc/init.d/cloudera-scm-agent start
设置成开机启动:
cp /opt/cm-5.16.2/etc/init.d/cloudera-scm-agent /etc/init.d/cloudera-scm-agent chkconfig cloudera-scm-agent on
6. 安装CDH
6.1. 准备CDH安装包
CDH-5.16.2-1.cdh5.16.2.p0.8-el6.parcelCDH-5.16.2-1.cdh5.16.2.p0.8-el6.parcel.shamanifest.json
6.2. 重命名 parcel.sha1 为 parcel.sha
这点必须注意,否则,系统会重新下载 CDH-5.16.2-1.cdh5.16.2.p0.8-el6.parcel 文件
mv /home/CDH-5.16.2-1.cdh5.16.2.p0.8-el6.parcel.sha1 /home/CDH-5.16.2-1.cdh5.16.2.p0.8-el6.parcel.sha
6.3. 拷贝CDH安装包到CM目录
mkdir /opt/cloudera/parcel-repo/ mv /home/CDH-5.16.2-1.cdh5.16.2.p0.8-el6.parcel* /opt/cloudera/parcel-repo/ mv /home/manifest.json /opt/cloudera/parcel-repo/
6.4. 通过浏览器安装CDH
浏览器打开CM。
http://master:7180/cmf/login
默认账号密码:admin/admin
如果配置成功,那么下载部分应该是秒级100%的。
注意Hive Metastore Server、Oozie Server、Service Monitor、Hue Server安装节点都要选择MySQL那台机器。 开始安装各个服务,安装Hive的时候可能会报错,因为我们使用了MySql作为hive的元数据存储,hive默认并没有带mysql的驱动,拷贝一个就行了:
这时hive通过了oozie会出现错误,错误原理与hive雷同,通过观察日志我们发现oozie会去一个默认路径下copy mysql的驱动,所以cp一个驱动过去即可,记得驱动的名称改成日志中需要的格式,否则依旧审核不通过,这点很重要
6.5. 测试
sudo -u hdfs hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 100
