CDH6.3.2集群部署
CDH 6.3.2 组件版本
Component | Component Version |
---|---|
Apache Avro | 1.8.2 |
Apache Flume | 1.9.0 |
Apache Hadoop | 3.0.0 |
Apache HBase | 2.1.4 |
HBase Indexer | 1.5 |
Apache Hive | 2.1.1 |
Hue | 4.3.0 |
Apache Impala | 3.2.0 |
Apache Kafka | 2.2.1 |
Kite SDK | 1.0.0 |
Apache Kudu | 1.10.0 |
Apache Solr | 7.4.0 |
Apache Oozie | 5.1.0 |
Apache Parquet | 1.9.0 |
Parquet-format | 2.4.0 |
Apache Pig | 0.17.0 |
Apache Sentry | 2.1.0 |
Apache Spark | 2.4.0 |
Apache Sqoop | 1.4.7 |
Apache ZooKeeper | 3.4.5 |
完整参考:https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rgcdh63packaging.html#cdh632_packaging
1. 四台机器配置及ip,每个节点的包和程序都放在/opt下,包放在/opt/cdh下
centos7 主节点 ip:190.168.137.20
centos7 从节点 ip:190.168.137.21
centos7 从节点 ip:190.168.137.22
centos7 从节点 ip:190.168.137.23
2. 修改主机名
hostnamectl set-hostname cdh01
hostnamectl set-hostname cdh02
hostnamectl set-hostname cdh03
hostnamectl set-hostname cdh04
3. 配置免密登录(所有节点)
#1.在root的根目录生成**:
ssh-****** -t rsa
#2.所有节点分发秘钥
在cdh01上分发**:
ssh-copy-id -i ~/.ssh/id_rsa.pub cdh01
ssh-copy-id -i ~/.ssh/id_rsa.pub cdh02
ssh-copy-id -i ~/.ssh/id_rsa.pub cdh03
ssh-copy-id -i ~/.ssh/id_rsa.pub cdh04
在cdh02上分发**:
ssh-copy-id -i ~/.ssh/id_rsa.pub cdh01
ssh-copy-id -i ~/.ssh/id_rsa.pub cdh02
ssh-copy-id -i ~/.ssh/id_rsa.pub cdh03
ssh-copy-id -i ~/.ssh/id_rsa.pub cdh04
在cdh03上分发**:
ssh-copy-id -i ~/.ssh/id_rsa.pub cdh01
ssh-copy-id -i ~/.ssh/id_rsa.pub cdh02
ssh-copy-id -i ~/.ssh/id_rsa.pub cdh03
ssh-copy-id -i ~/.ssh/id_rsa.pub cdh04
在cdh04上分发**:
ssh-copy-id -i ~/.ssh/id_rsa.pub cdh01
ssh-copy-id -i ~/.ssh/id_rsa.pub cdh02
ssh-copy-id -i ~/.ssh/id_rsa.pub cdh03
ssh-copy-id -i ~/.ssh/id_rsa.pub cdh04
4. 各个节点添加hosts,做好能相互解析(所有节点)
vim /etc/hosts
cat /etc/hosts
5.关闭SeLinux(所有节点)
# 1.getenforce指令查看selinux状态
getenforce
# 2.如果上步结果输出为:enforcing,则需要修改/etc/selinux/config文件
# 3.将/etc/selinux/config中的SELINUX=enforcing修改为SELINUX=disabled
Sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config
# 4.临时生效执行
setenforce 0
# 5.永久生效
reboot
6.关闭防火墙(所有节点)
Systemctl stop firewalld #关闭防火墙
Systemctl disable firewalld #禁用防火墙开机自启
systemctl status firewalld #查看防火墙状态
7. 禁用透明大页(所有节点)
# 1.查看透明大页的设置和启动状态
cat /sys/kernel/mm/transparent_hugepage/defrag
cat /sys/kernel/mm/transparent_hugepage/enabled
# 2.操作
#临时关闭透明大页面
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
#永久关闭透明大页面
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.d/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
#验证:
cat /etc/rc.d/rc.local
8.修改Linux swappiness参数(所有节点)
# 切换到对应目录查看vm.swappiness参数信息
cd /usr/lib/tuned
grep "vm.swappiness" * -R
# 为了避免服务器使用swap功能而影响服务器性能,一般都会把vm.swappiness修改为0(cloudera建议10以下)
#方法一:
sed -i s/"vm.swappiness=30"/"vm.swappiness=10"/g /usr/lib/tuned/virtual-guest/tuned.conf
#方法二:
echo 'vm.swappiness=10' >> /etc/sysctl.conf
#查看vm.swappiness参数信息
sysctl -p
9. 设置ntp时间同步服务(所有节点)
# 1.查看服务器、客户端操作系统版本
#查看服务器、客户端操作系统版本
cat /etc/redhat-release
#查看系统版本信息
lsb_release -a
#查看CPU型号(逻辑CPU)
cat /proc/cpuinfo |grep "name" |cut -f2 -d: |uniq -c
#查看物理CPU个数
cat /proc/cpuinfo | grep "physical"| sort |uniq -c
# 2.查看服务器是否安装ntp,系统默认安装ntpdate
rpm -qa | grep ntp
# 3.安装ntp ntpdate,其中ntpdate默认安装,可以只安装ntp
yum install ntp ntpdate -y
# 4.查看是否已安装完成
rpm -qa | grep ntp
# 5.查看ntp服务器状态
systemctl status ntpd
# 6.下载安装ntp服务
yum install -y ntp
9.1 将master设置为主服务器(在master节点操作,cdh01)
1.修改配置文件/etc/ntp.conf
vim /etc/ntp.conf
把如下四行代码注释掉
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
#在上述注释掉服服务下添加如下服务并启用
# 中国这边最活跃的时间服务器 : [http://www.pool.ntp.org/zone/cn](http://www.pool.ntp.org/zone/cn)
server 210.72.145.44 perfer # 中国国家受时中心
server 202.112.10.36 # 1.cn.pool.ntp.org
server 59.124.196.83 # 0.asia.pool.ntp.org
# allow update time by the upper server
# 允许上层时间服务器主动修改本机时间
restrict 210.72.145.44 nomodify notrap noquery
restrict 202.112.10.36 nomodify notrap noquery
restrict 59.124.196.83 nomodify notrap noquery
# 外部时间服务器不可用时,以本地时间作为时间服务
server 127.0.0.1 # local clock
fudge 127.0.0.1 stratum 10
2.重启服务
#重启服务
systemctl restart ntpd
#停止ntpd服务
systemctl stop ntpd
启动服务
systemctl start ntpd
#开机启动
systemctl enable ntpd
#检测NTP服务是否运行
ps -ef |grep ntpd
3.查看同步状态
netstat -lnutp | grep ntp #如果看到123端口,说明ntp服务成功启动
netstat -ln|grep 123 #查看123端口
systemctl status ntpd #查看同步状态
#查看时间同步状态
ntpstat
#查看ntp服务器与上层ntp同步状态
ntpq -p
9.2 设置slave到master 的同步(在slave节点操作,如:cdh02/cdh03/cdh04)(各个从节点)
a.修改配置文件,将刚刚搭建好的NTP服务器作为客户端上游时间服务器(修改ntp服务器配置,将所有节点的ntp同步指向ntpd Server服务器)
vi /etc/ntp.conf
#注释掉其他上游时间服务器
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
#配置上游时间服务器为本地的ntpd Server服务器
server 192.168.137.20 #
#配置允许上游时间服务器主动修改本机的时间
restrict 192.168.137.20 nomodify notrap noquery
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
b. 启动客户端ntp服务
#重启服务
systemctl restart ntpd
#关闭服务
systemctl stop ntpd
#启动服务
systemctl start ntpd
#开机启动
systemctl enable ntpd
c.查看ntp服务时间同步信息
#手动同步
ntpdate -u 192.168.137.20
#查看NTP客户端调试模式下同步详情信息
ntpdate -d NTP 192.168.137.20
#查看上级时间同步服务器状态
ntpq -p
#查看时间同步状态
ntpstat
#查看ntpd服务状态
systemctl status ntpd
10. 安装JDK(所有节点)
注意:CDH的安装 要求使用指定版本的oracle-j2sdk1.8
10.1. 查询是否有已经安装的jdk
rpm -qa |grep java
10.2. 如果之前先安装java组件,先将其卸载
yum remove java* -y
10.3.上传安装包oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm到/opt目录下
10.4.切换到/opt目录安装jdk
cd /opt
rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
10.5.查找jdk安装路径
find / -name java
查看指定jdk版本的路径为:/usr/java/jdk1.8.0_181-cloudera/bin/java
10.6.配置JAVAHOME环境变量
#add for JAVA_HOME
echo 'export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera/' >> /etc/profile
echo 'export PATH=.:$JAVA_HOME/bin:$PATH' >> /etc/profile
source /etc/profile
10.7.查看java版本
java -version
11.下载jdbc依赖,上传JDBC依赖包(所有节点)
#切换到opt目录
cd /opt
#1.创建目录
mkdir -p /usr/share/java
#2.重命名mysql-connector-java-8.0.18.jar为mysql-connector-java.jar
mv mysql-connector-java-8.0.18.jar mysql-connector-java.jar
3.将mysql-connector-java.jar 移动或复制到/usr/share/java中
cp mysql-connector-java.jar /usr/share/java
4.当前节点下的mysql-connector-java.jar远程复制到其它节点
scp mysql-connector-java.jar cdh01:/usr/share/java
scp mysql-connector-java.jar cdh02:/usr/share/java
scp mysql-connector-java.jar cdh03:/usr/share/java
scp mysql-connector-java.jar cdh04:/usr/share/java
12.安装mysql数据库(master节点:cdh01)
安装数据库mysql(master节点:cdh01,下载版本为8)
# mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz 安装包上传到/opt目录
#1.查询出已安装的Mariadb
rpm -qa |grep mariadb
# 2.卸载Mariadb
#rpm -e --nodeps 文件名(文件名为上述命令查询出来的文件)
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
# 3.解压安装包
tar Jxvf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
# 4.重命名
mv mysql-8.0.18-linux-glibc2.12-x86_64 mysql
# 5.移动mysql到/usr/local目录下
mv mysql /usr/local
# 6.创建数据目录
mkdir -p /usr/local/mysql/data
修改my.cnf配置文件
# 7.创建并编辑my.cnf文件
vim /etc/my.cnf
#填入以下内容
[client]
port = 3306
#根据实际情况调整mysql.sock配置
socket = /tmp/mysql.sock
[mysqld]
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id = 1
#服务端口号 默认3306
port = 3306
# 用户
user = mysql
#设置socke文件所在目录
socket = /tmp/mysql.sock
#mysql安装根目录
basedir = /usr/local/mysql
#mysql数据文件所在位置
datadir = /usr/local/mysql/data
#数据库错误日志文件
log_error = /usr/local/mysql/error.log
#pid
pid-file = /usr/local/mysql/mysql.pid
#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation = READ-COMMITTED
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
sql_mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
设置mysql帐户及权限
# 8.切换到opt目录
cd /opt
# 9.创建组用户
groupadd mysql
# 10.创建用户
useradd -g mysql mysql
# 11.修改目录权限
# 12.将/usr/local/mysql给予mysql用户
chown -R mysql:mysql /usr/local/mysql
# 13.将/usr/local/mysql权限设置为755
chmod -R 755 /usr/local/mysql
# 14.初始化mysql
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql
# 15.尝试启动mysql
cd /usr/local/mysql
./support-files/mysql.server start
# 16. 将mysql添加为系统服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
# 17.将/etc/init.d/mysql权限设置为755
cd /etc/init.d
chmod 755 /etc/init.d/mysql
# 18.设置开机启动
chkconfig --add mysql
chkconfig --level 345 mysql on
service mysql restart
#19.配置mysql环境变量
echo 'export MYSQL_HOME=/usr/local/mysql' >> /etc/profile
echo 'export PATH=.:$MYSQL_HOME/bin:$PATH' >> /etc/profile
source /etc/profile
# 20 登录mysql
cd /usr/local/mysql
cat /usr/local/mysql/error.log #查看临时密码
日志中查看临时密码: rBkm9fPdu?0p
# 使用默认密码登录mysql
mysql -uroot -p 回车后输入密码:rBkm9fPdu?0p
#在MySQL8中第一次登陆需要重新设置root密码123456
alter user 'root'@'localhost' IDENTIFIED BY '123456';
# 21.开启远程访问
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
#这里注意要提前创建好库,要不然cdh集群启动会报错
create database cmserver;
13.安装Apache Httpd服务(Master节点)
#安装
yum install -y httpd
#启动httpd
systemctl start httpd
#设置开机启动
systemctl enable httpd
14.配置Cloudera Manager安装包yum源(master节点,此集群中为cdh01,cdh02,cdh03和cdh04要配置该源)
#1.创建目录
mkdir -p /var/www/html/cloudera-repos/cm6
#2.切换目录到/var/www/html/cloudera-repos/cm6
cd /var/www/html/cloudera-repos/cm6
#3.将下载好的rmp安装包及allkeys.asc文件上传到/var/www/html/cloudera-repos/cm6
#4.创建仓库
cd /var/www/html/cloudera-repos/cm6
yum install -y createrepo
createrepo .
- 创建repo文件(所有节点)
# 5.创建repo文件(所有节点)
# master节点
vim /etc/yum.repos.d/cloudera-manager.repo
[cloudera-manager]
name=Cloudera Manager 6.3.1
baseurl=http://cdh01/cloudera-repos/cm6
#gpgkey=https://archive.cloudera.com/cm6/6.3.1/redhat7/yum/RPM-GPG-KEY-cloudera
gpgcheck=1
enabled=1
autorefresh=0
type=rpm-md
- 清理并缓存(所有节点):更新yum源
#清理并缓存(所有节点):更新yum源
yum clean all
yum makecache
yum repolist
- 查看cloudera源http://cdh01/cloudera-repos/cm6/
- 上传parcel文件(仅master节点)
mkdir -p /var/www/html/cloudera-repos/cdh6
- 上传parcel文件(仅master节点)至/var/www/html/cloudera-repos/cdh6目录下
- 查看大数据组件源信息
- 将本地yum文件分发至从节点
# 将/etc/yum.repos.d/cloudera-manager.repo文件复制到其它各个子节点
scp /etc/yum.repos.d/cloudera-manager.repo cdh02:/etc/yum.repos.d/
scp /etc/yum.repos.d/cloudera-manager.repo cdh03:/etc/yum.repos.d/
scp /etc/yum.repos.d/cloudera-manager.repo cdh04:/etc/yum.repos.d/
- 清理并缓存(所有节点):更新yum源
#清理并缓存(所有节点):更新yum源
yum clean all
yum makecache
yum repolist
15.安装 Cloudera Manager(master节点,此集群中为cdh01)
#执行安装
yum install -y cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
- 安装完CM后/opt/ 下会出现cloudera目录
- 上传CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel和sha文件到/opt/cloudera/parcel-repo目录
#执行校验
sha1sum CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel | awk ‘{print $1}’ > CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha
- 执行CM初始化脚本
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cmserver root 123456
- 启动cm服务
systemctl start cloudera-scm-server.service
查看服务状态为启动
systemctl status cloudera-scm-server.service
16.其他服务安装及页面安装
在Windows C:Windows/system32/drivers/etc/hosts中进行添加192.168.137.20 cdh01
方便浏览器可以访问 http://cdh01:7180/ 或者http://192.168.137.20:7180/ 用户名密码:admin/admin
推荐阅读
-
ZooKeeper基础:快速部署
-
Python数据可视化高级库pyecharts的用法,相关环境的安装部署和第一个简单的可视化柱状统计图
-
MySQL Cluster 7.2.4集群配置_MySQL
-
Spark yarn集群搭建
-
CentOS 7部署ElasticSearch7.7.0
-
阿里云部署Ubuntu 1.4 Flask + WSGI + Nginx 详解
-
Kubernetes 实战教学,手把手教您运行第一个 Nginx 集群 ...
-
从零开始搭建Kubernetes集群(一)----虚拟机的安装
-
【K8s】第一次部署项目
-
hadoop2.2.0集群配置 - RedHat 使用CentOS的yum源