注意:需要使用官网提供的jdk。
[root@cdh1 opt]# mkdir module
#在/home/gbs/下创建software目录
[root@cdh1 gbs]# mkdir software
[root@cdh1 software]# rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
[root@cdh1 software]# vim /etc/profile.d/my_env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
[root@cdh1 software]# source /etc/profile.d/my_env.sh
[root@cdh1 software]# java -version
java version "1.8.0_181"
注意:分发脚本在附录里面的分发脚本
集群ssh脚本在附录里面的编写集群ssh脚本
[root@cdh1 software]# xsync /usr/java/
[root@cdh1 software]# xsync /etc/profile.d/my_env.sh
#查看三台集群都是否安装成功
[root@cdh1 software]# sshall.sh java -version
注意:一定要用root用户操作如下步骤;先卸载MySQL再安装。
(1)查看MySQL是否安装
[root@cdh1 bin]# rpm -qa | grep -i mysql
mysql-libs-5.1.73-7.el6.x86_64
(2)如果安装了MySQL,就先卸载
[root@cdh1 bin]# rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64
(3)删除阿里云原有MySql依赖
[root@cdh1 bin]# yum remove mysql-libs
(4)下载MySql依赖并安装
[root@cdh1 bin]# yum install libaio
[root@cdh1 bin]# yum -y install autoconf
[root@cdh1 mysql-5.6.24]# pwd
/home/gbs/software/mysql-5.6.24
[root@cdh1 mysql-5.6.24]# wget https://downloads.mysql.com/archives/get/p/23/file/MySQL-shared-compat-5.6.24-1.el6.x86_64.rpm
[root@cdh1 mysql-5.6.24]# wget https://downloads.mysql.com/archives/get/p/23/file/MySQL-shared-5.6.24-1.el6.x86_64.rpm
[root@cdh1 mysql-5.6.24]# rpm -ivh MySQL-shared-5.6.24-1.el6.x86_64.rpm
[root@cdh1 mysql-5.6.24]# rpm -ivh MySQL-shared-compat-5.6.24-1.el6.x86_64.rpm
(5)上传mysql-libs.zip到cdh1的/home/gbs/software/mysql-5.6.24目录,并解压文件到当前目录
[root@cdh1 mysql-5.6.24]# yum install unzip
[root@cdh1 mysql-5.6.24]# unzip mysql-libs.zip
[root@cdh1 mysql-5.6.24]# ll
总用量 81776
drwxr-xr-x. 2 root root 136 6月 26 2015 mysql-libs
-rw-rw-r--. 1 gbs gbs 77807942 6月 14 16:09 mysql-libs.zip
-rw-rw-rw-. 1 root root 1953680 3月 26 2015 MySQL-shared-5.6.24-1.el6.x86_64.rpm
-rw-rw-rw-. 1 root root 3969728 3月 26 2015 MySQL-shared-compat-5.6.24-1.el6.x86_64.rpm
(6)进入到mysql-libs文件夹下
[root@cdh1 mysql-5.6.24]# cd mysql-libs
[root@cdh1 mysql-libs]# ll
总用量 76048
-rw-r--r--. 1 root root 18509960 3月 26 2015 MySQL-client-5.6.24-1.el6.x86_64.rpm
-rw-r--r--. 1 root root 3575135 12月 1 2013 mysql-connector-java-5.1.27.tar.gz
-rw-r--r--. 1 root root 55782196 3月 26 2015 MySQL-server-5.6.24-1.el6.x86_64.rpm
(1)安装MySQL服务端
[root@cdh1 mysql-libs]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm
(2)查看产生的随机密码
[root@cdh1 mysql-libs]# cat /root/.mysql_secret
t9On7OJEB7gpY2Ny
(3)查看MySQL状态
[root@cdh1 mysql-libs]# service mysql status
ERROR! MySQL is not running
(4)启动MySQL
[root@cdh1 mysql-libs]# service mysql start
Starting MySQL. SUCCESS!
[root@cdh1 mysql-libs]# service mysql status
SUCCESS! MySQL running (25869)
(1)安装MySQL客户端
[root@cdh1 mysql-libs]# rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm
(2)链接MySQL(密码替换成产生的随机密码)
[root@cdh1 mysql-libs]# mysql -u root -pt9On7OJEB7gpY2Ny
(3)修改密码
mysql> SET PASSWORD=PASSWORD('123456.');
(4)退出MySQL
mysql> exit;
配置只要是root用户+密码,在任何主机上都能登录MySQL数据库。
(1)进入MySQL
[root@cdh1 mysql-libs]# mysql -u root -p123456.
(2)显示数据库
mysql>show databases;
(3)使用MySQL数据库
mysql>use mysql;
(4)展示MySQL数据库中的所有表
mysql>show tables;
(5)展示user表的结构
mysql>desc user;
(6)查询user表
mysql>select User, Host, Password from user;
(7)修改user表,把Host表内容修改为%
mysql>update user set host='%' where host='localhost';
(8)删除root用户的其他host
mysql> delete from user where host!='%';
mysql>flush privileges;
(10)退出
mysql>quit;
1)在MySQL中创建各组件需要的数据库
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm';
# --mysql 8.0以上版本
SHOW VARIABLES LIKE 'validate_password%';
CREATE USER 'scm'@'%' IDENTIFIED BY 'scm.'; #创建用户
grant all privileges on scm.* to 'scm'@'%' ; #分配权限
FLUSH PRIVILEGES; #刷新权限
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE DATABASE oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE DATABASE hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
(1)将mysql-connector-java-5.1.27-bin.jar拷贝到**/usr/share/java路径下,并重命名**
[root@cdh1 mysql-libs]# tar -zxvf mysql-connector-java-5.1.27.tar.gz
[root@cdh1 mysql-libs]# cd mysql-connector-java-5.1.27
[root@cdh1 mysql-connector-java-5.1.27]# mv mysql-connector-java-5.1.27-bin.jar mysql-connector-java.jar
[root@cdh1 mysql-connector-java-5.1.27]# mkdir /usr/share/java
[root@cdh1 mysql-connector-java-5.1.27]# cp mysql-connector-java.jar /usr/share/java/
[root@cdh1 mysql-connector-java-5.1.27]# xsync /usr/share/java/
集群规划见[cdh部署集群规划]
(2)创建cloudera-manager目录,存放cdh安装文件
[root@cdh1 gbs]# pwd
/home/gbs
[gbs@cdh1 ~]$ mkdir -p opt/cloudera-manager
[gbs@cdh1 mysql-connector-java-5.1.27]$ cd /home/gbs/software/
[gbs@cdh1 software]$ tar -zxvf cm6.3.1-redhat7.tar.gz
[gbs@cdh1 software]$ cd cm6.3.1/RPMS/x86_64/
[gbs@cdh1 x86_64]$ mv cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm /home/gbs/opt/cloudera-manager/
[gbs@cdh1 x86_64]$ mv cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm /home/gbs/opt/cloudera-manager/
[gbs@cdh1 x86_64]$ mv cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm /home/gbs/opt/cloudera-manager/
[gbs@cdh1 x86_64]$ cd /home/gbs/opt/cloudera-manager/
[gbs@cdh1 cloudera-manager]$ ll
总用量 1185872
-rw-r--r--. 1 gbs gbs 10483568 9月 25 2019 cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r--. 1 gbs gbs 1203832464 9月 25 2019 cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r--. 1 gbs gbs 11488 9月 25 2019 cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
(3)安装cloudera-manager-daemons,安装完毕后多出/opt/cloudera目录
[gbs@cdh1 opt]$ pwd
/opt
[gbs@cdh1 opt]$ ll
总用量 0
drwxr-xr-x. 3 cloudera-scm cloudera-scm 16 6月 14 17:03 cloudera
[gbs@cdh1 opt]$ pwd
/home/gbs/opt
[gbs@cdh1 opt]$ xsync cloudera-manager/
[root@cdh2 cloudera-manager]# pwd
/home/gbs/opt/cloudera-manager
[root@cdh2 cloudera-manager]# rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
[root@cdh2 cloudera-manager]# cd /opt/
[root@cdh2 opt]# ll
总用量 0
drwxr-xr-x. 3 cloudera-scm cloudera-scm 16 6月 14 17:10 cloudera
[root@cdh3 /]# cd /home/gbs/opt/cloudera-manager/
[root@cdh3 cloudera-manager]# rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
[root@cdh3 cloudera-manager]# cd /opt/
[root@cdh3 opt]# ll
总用量 0
drwxr-xr-x. 3 cloudera-scm cloudera-scm 16 6月 14 17:11 cloudera
(4)安装cloudera-manager-agent(cdh1-cdh3都要执行)
[root@cdh1 cloudera-manager]# yum install bind-utils psmisc cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 MySQL-python libxslt
[root@cdh1 cloudera-manager]# rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
[root@cdh1 cloudera-manager]# cd /opt/
[root@cdh1 opt]# ll
总用量 0
drwxr-xr-x. 4 cloudera-scm cloudera-scm 32 6月 14 17:16 cloudera
drwxrwxr-x. 3 gbs gbs 26 6月 14 15:20 module
[root@cdh1 opt]# cd cloudera/
[root@cdh1 cloudera]# ll
总用量 12
drwxr-xr-x. 27 cloudera-scm cloudera-scm 8192 6月 14 17:05 cm
drwxr-xr-x. 8 root root 128 6月 14 17:16 cm-agent
(5)安装agent的server节点
[root@cdh1 cloudera-manager]# vim /etc/cloudera-scm-agent/config.ini
server_host=cdh1
[root@cdh2 cloudera-manager]# vim /etc/cloudera-scm-agent/config.ini
server_host=cdh1
[root@cdh3 cloudera-manager]# vim /etc/cloudera-scm-agent/config.ini
server_host=cdh1
(6)安装cloudera-manager-server
[root@cdh1 cloudera-manager]# rpm -ivh cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
[root@cdh1 cloudera]# cd /home/gbs/software/
[root@cdh1 software]# mv CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel* /opt/cloudera/parcel-repo/
[root@cdh1 software]# mv manifest.json /opt/cloudera/parcel-repo/
[root@cdh1 parcel-repo]# mv CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha
[root@cdh1 parcel-repo]# ll
[root@cdh1 parcel-repo]# vim /etc/cloudera-scm-server/db.properties
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=cdh1:3306
com.cloudera.cmf.db.name=scm
com.cloudera.cmf.db.user=scm
com.cloudera.cmf.db.password=scm
com.cloudera.cmf.db.setupType=EXTERNAL
(9)启动server服务
[root@cdh1 parcel-repo]# /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
[root@cdh1 parcel-repo]# systemctl start cloudera-scm-server
[root@cdh1 parcel-repo]# tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
这里的错误可以不管
(10)启动agent节点
[root@cdh1 cloudera-manager]# systemctl start cloudera-scm-agent
[root@cdh2 cloudera-manager]# systemctl start cloudera-scm-agent
[root@cdh3 cloudera-manager]# systemctl start cloudera-scm-agent
http://cdh1:7180/
地址组成说明:
${你的 cloudera-manager-server 安装节点 }:7180
看到上图说明之前的安装成功了
admin/admin
#临时生效
[root@cdh1 gbs]# sysctl vm.swappiness=10 && cat /proc/sys/vm/swappiness
vm.swappiness = 10
10
[root@cdh2 gbs]# sysctl vm.swappiness=10 && cat /proc/sys/vm/swappiness
vm.swappiness = 10
10
[root@cdh3 gbs]# sysctl vm.swappiness=10 && cat /proc/sys/vm/swappiness
vm.swappiness = 10
10
#永久生效
[root@cdh1 gbs]# echo 'vm.swappiness=10'>> /etc/sysctl.conf
[root@cdh2 gbs]# echo 'vm.swappiness=10'>> /etc/sysctl.conf
[root@cdh3 gbs]# echo 'vm.swappiness=10'>> /etc/sysctl.conf
[root@cdh1 gbs]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@cdh1 gbs]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@cdh2 gbs]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@cdh2 gbs]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@cdh3 gbs]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@cdh3 gbs]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
两个问题的解决办法都可以设置临时解决,然后重新运行,就可以得到下图
我这里都设置成永久生效,所以需要重启集群
#关闭agent服务
[root@cdh1 gbs]# systemctl stop cloudera-scm-agent
[root@cdh2 gbs]# systemctl stop cloudera-scm-agent
[root@cdh3 gbs]# systemctl stop cloudera-scm-agent
#关闭server服务
[root@cdh1 gbs]# systemctl stop cloudera-scm-server
#重启
[root@cdh1 gbs]# reboot
[root@cdh2 gbs]# reboot
[root@cdh3 gbs]# reboot
重启后在开启CM集群服务
再次启动集群之前请确保所有节点机器上的nfs服务已经关闭,避免造成集群的NFS Gateway服务启动失败,关闭nfs服务命令如下:
service nfs-kernel-server stop
启动集群
#启动server服务
[root@cdh1 gbs]# systemctl start cloudera-scm-server
#启动agent服务
[root@cdh1 gbs]# systemctl start cloudera-scm-agent
[root@cdh2 gbs]# systemctl start cloudera-scm-agent
[root@cdh3 gbs]# systemctl start cloudera-scm-agent
重启之后遇到集群名已经存在的问题,请参考bug记录集群名已经存在的解决办法进行解决
如果在进行配置时遇到如下问题:
请将集群停止后在启动,不过在启动是一定要在server服务所在节点先运行如下命令
[root@cdh1 gbs]# /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
然后在正常启动即可。
然后把之前的步骤一样,在重新做一遍,到下图位置继续
这里按照之前的解决办法进行解决就可以了
这里就解决了
这里截图配置到后期会报警告,为此这里请dn和nm配置集群cdh[1-3],cdh部署集群规划也已经更新,请参考最新的[cdh部署集群规划](https://www.yuque.com/g/liuqingsong-pekab/tm595f/hhxi36v2fn2iu0ra/collaborator/join?token=KVLMip7BeVp6MEzf# 《cdh部署集群规划》)文档进行配置。
全部选默认即可
下图是后期增加的,因为/dfs路径下挂载的存储不够,所以从新安装选择了/home目录下
可以选择在线安装和离线包安装,在线安装下载时间较长,离线包安装时间较短。这里我们为了节省时间,选择离线安装。
[root@cdh1 tmp]# /opt/cloudera/parcels/CDH/bin/kafka-topics --zookeeper cdh2:2181 --list
进入到/opt/cloudera/parcels/KAFKA目录下分别创建:启动日志主题、事件日志主题。
1)创建topic test
[root@cdh1 tmp]# /opt/cloudera/parcels/CDH/bin/kafka-topics --bootstrap-server chd1:9092,cdh2:9092,cdh3:9092 --create --replication-factor 1 --partitions 1 --topic test
[root@cdh1 tmp]# /opt/cloudera/parcels/CDH/bin/kafka-topics --delete --bootstrap-server chd1:9092,cdh2:9092,cdh3:9092 --topic test
CDH6.x自带spark2.4无需升级
修改yarn.scheduler.maximum-allocation-vcores参数调整4核。
因为节点的总核心才6核
将每个任务容器默认大小从1G调大至8G,当前集群环境下每个节点的物理内存为20G,设置每个yarn可用每个节点内存为8G。
这里只给8g是因为节点1使用的内存较多,请根据实际情况给
修改yarn.scheduler.maximum-allocation-mb每个任务容器内存所需大小。
修改yarn.nodemanager.resource.memory-mb每个节点内存所需大小。
关闭spark.dynamicAllocation.enabled参数否则分配的资源不受控制。
Hive动态分区非严格模式,默认是严格模式,严格模式下,动态分区至少要有一个静态分区字段。
hive.exec.dynamic.partition.mode = nonstrict
为了解决hue在执行调度任务时找不到环境变量。
,PATH= P A T H : PATH: PATH:JAVA_HOME/bin
hive.vectorized.execution.enabled
向量化执行是hive优化的一种方式,但是他必须要求执行引擎是Tez,文件格式是orc,一次批量执行1024行而非一行来提高扫描、聚合、过滤器和连接等操作的性能。
yarn.scheduler.capacity.maximum-am-resource-percent =0.6,设置有多少资源可以用来运行app master,即控制当前激活状态的应用,默认是10%。
由于前面创建集群时,已经创建他了,所以这会报错存在
去他的元数据库,将其删除,
解决办法
把这几个表里面的数据都删除,但是有的表会出现以下错误
直接清空表就可以了,因为之前的集群并没有设置成功,这里清空后重新俩
truncate table CLUSTERS;
注意:几个cluster开头的表,记得都要删除
在/home/gbs下创建bin目录
[root@cdh1 gbs]# mkdir bin
在bin目录下创建集群分发脚本
[root@cdh1 bin]# vim xsync
写入以下内容
#!/bin/bash
#1. 判断参数个数 if [ $# -lt 1 ] then
echo Not Enough Arguement!
exit; fi
#2. 遍历集群所有机器 for host in cdh1 cdh2 cdh3 do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4. 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done done
赋予脚本执行权限:
[root@cdh1 bin]# chmod +x xsync
[root@cdh1 bin]# vim sshall
写入以下内容
#! /bin/bash
for i in cdh1 cdh2 cdh3 do
echo --------- $i ----------
ssh $i "$*" done
赋予脚本执行权限:
[root@cdh1 bin]# chmod +x sshall
[root@cdh1 bin]# vim jpsall
写入以下内容
#!/bin/bash
for host in cdh1 cdh2 cdh3 do
echo =============== $host ===============
ssh $host jps $1 | grep -v Jps done
赋予脚本执行权限:
[root@cdh1 bin]# chmod +x jpsall
SELECT count(*) from ods_customer_full;--15000000
SELECT count(*) from ods_lineitem_full;--600037902
SELECT count(*) from ods_nation_full;--5
SELECT count(*) from ods_orders_full;--150000000
SELECT count(*) from ods_part_full;--20000000
SELECT count(*) from ods_partsupp_full;--80000000
SELECT count(*) from ods_region_full;--5
SELECT count(*) from ods_supplier_full;--1000000
性能测试相关文档见hive on Spark性能测试。