欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CDH6.3.2集群部署

程序员文章站 2022-07-14 21:53:23
...

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

相关标签: cdh