CDH5.15.0安装文档
一、基础环境
1.1 软件环境
NO. | 软件名称 | 版本 |
---|---|---|
1. | 操作系统 | Centos7.6 64 位 |
2. | JDK | jdk-8u191-linux-x64 |
3. | Clouder Manager | 5.15.0 |
4. | CDH | 5.15.0 |
5. | 数据库 | mysql57-community-release-el7-8.noarch.rpm |
6. | JDBC | mysql-connector-java-5.1.46.jar |
1.2 配置规划
NO. | 机器名称 | 内网IP | 配置 | 用途 |
---|---|---|---|---|
1. | hadoop202 | 192.168.10.202 | 32C/128Gb/1.5TB | 主,CM,MysqlDB |
2. | hadoop201 | 192.168.10.201 | 24C/64Gb/0.5TB | 从 |
3. | hadoop200 | 192.168.10.200 | 24C/64Gb/0.5TB | 从 |
1.3 修改机器名(所有节点)
1)修改机器名称
#hostnamectl set-hostname xxx //设置机器名
#hostname // 查看本机名
这种方式,在Centos7中可以永久性改变主机名称。
或者
vi /etc/sysconfig/network
# 配置如下
NETWORKING=yes
HOSTNAME=[主机名]
- 每个节点机器,都要配置hosts
# vi /etc/hosts
内容都改为:
127.0.0.1 localhost //建议保留此行
192.168.10.202 hadoop202
192.168.10.201 hadoop201
192.168.10.200 hadoop200
注:配置好后可进行ping测试
1.4 设置防火墙(所有节点)
注:为了简便,可以先关闭防所有节点火墙,安装完成后,再按照下面步骤设置。
防火墙常用命令:
#firewall-cmd --state(查询防火墙状态)
#systemctl stop firewalld.service(关闭防火墙)
#systemctl start firewalld.service(开启防火墙)
#systemctl disable firewalld.service(禁止firewall开机启动)
1.5 配置免密登录SSH
注:将子节点设置为从主节点ssh无密码登陆(主节点访问从节点需要无密码互通,否则后面会出现问题)
在主节点上执行:
# cd ~ //进入到 根目录
# ssh-keygen -t rsa
一路回车,生成无密码的密钥对。
把公钥拷贝至所有从服务器上:
# cd /root/.ssh //查看公钥存放目录
# cp id_rsa.pub authorized_keys //将公钥拷贝成authorized_keys
# chmod 600 authorized_keys
#发送公钥
# ssh-copy-id -i hadoop202
# ssh-copy-id -i hadoop201
# ssh-copy-id -i hadoop200
注:配置完后可进行ssh +主机名进行测试
1.6 关闭SELINUX(所有节点)
-
关闭linux SELINUX安全内核
# setenforce 0 (临时生效)
-
修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)
# vi /etc/selinux/config # 内容增加: SELINUX=disabled
-
重启后生效
# reboot
-
查看SELINUX是否关闭:
#sestatus
注:在Centos7中遇到SELINUX无法关闭时,重新启动机器可恢复正常
1.7 配置NTP服务
注:集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。
所有节点安装相关组件:
# yum install ntp ntpdate -y
NTP服务端(主节点):
-
查找时间同步服务器http://www.pool.ntp.org/zone/asia:
-
编辑 /etc/ntp.conf:1
# vi /etc/ntp.conf //在文件中输入上面网页内容: server 0.asia.pool.ntp.org server 1.asia.pool.ntp.org server 2.asia.pool.ntp.org server 3.asia.pool.ntp.org
-
启动ntp服务:
# systemctl start ntpd
-
配置开机启动:
# systemctl enable ntpd.service
注意:如果ntpd 开机启动失效,有可能是因为安装了chronyd 并且是开机自启状态,所以导致ntpd开机自启失败。
# 查看 chronyd设置状态
#systemctl status chronyd
显示如下:
以上显示表明,chronyd显示为开机启动状态。
相关操作:
#systemctl disable chronyd.service //将chronyd设为禁用状态
此时,NTP的服务开机自启动完成!
-
检查是否设置成功【刚启动时需要等10分钟才可以进行更新。会出现错误== no server suitable for synchronization found==】:
# ntpq -p //更新时间 #timedatectl
NTP客户端(所有从节点):
-
远程客户端时间同步测试
# date #ntpdate 192.168.0.202
192.168.0.202是NTP服务端IP,显示如下信息,测试成功:
-
客户端设置计划任务,每30分钟同步时间
#crontab -e //加入内容: 0-59/30 * * * * /usr/sbin/ntpdate 192.168.0.202 && /sbin/hwclock -w
-
设置定时任务开机启动
//设置开机启动 # systemctl enable crond.service //查看状态 # systemctl status crond
二、安装jdk
jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
-
CentOS系统一般自带OpenJdk,需要卸载掉自带的OpenJdk,使用
# rpm -qa | grep java //查看是否安装java相关的包
-
卸载相关包
# rpm -e –nodeps 包名
-
安装相关包
#rpm -ivh jdk-8u151-linux-x64.rpm
配置JAVA_HOME环境变量:
-
修改/etc/profile文件配置环境变量,执行命令
# vi /etc/profile # 在profile文件最后加入如下内容,默认安装路径/usr/java/ export JAVA_HOME=[安装路径]/jdk1.8.0_151 export PATH=$PATH:$JAVA_HOME/bin
-
执行命令使其生效
#source /etc/profile //使修改立即生效 #echo $PATH //查看PATH值 #echo $JAVA_HOME //查看JAVA_HOME值
注:在Centos7中修改/etc/profile文件配置环境变量,机器启动后有时不生效,可以修改/etc/ bashrc文件配置环境变量
#vi /etc/bashrc
//在文件最后加入:
export JAVA_HOME=[安装路径]/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin
//使修改立即生效
# source /etc/bashrc
//查看JAVA_HOME值
#echo $JAVA_HOME
三、Mysql安装(主节点)
-
在master节点安装mysql服务,下载mysql的repo源
# wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
-
安装mysql包
# rpm -ivh mysql57-community-release-el7-8.noarch.rpm
-
安装mysql服务
# yum install mysql-server //如果提示镜像下载未成功需要多次尝试
-
启动mysqld服务
# service mysqld restart
-
查看原始密码
# grep "password" /var/log/mysqld.log
-
使用查询出的原始密码登录
# mysql -uroot -p[原始密码]
登录进mysql后:
-
设置root用户密码:
mysql> alter user 'root'@'localhost' identified by 'Master01#'; mysql> flush privileges; ##忘记密码之后登录方式 在/etc/my.cnf中修改[mysqld]最后添加:skip-grant-tables mysql> update user set authentication_string=password("root") where user="root"; ## 密码严格问题设置为低严格,最少三个字符 mysql> SHOW VARIABLES LIKE 'validate_password%'; mysql> set global validate_password_policy=0; mysql> set global validate_password_length=3;
-
设置开机启动
vim /etc/rc.local ##添加如下内容 service mysqld status
-
配置外部工具连接mysql
mysql> use mysql; mysql> select 'host' from user where user='root'; mysql> update user set host='%' where user='root'; mysql> exit; ##重启mysql服务,这时外部工具就可连接成功 service mysqld restart
四、外部数据库安装与配置
创建CDH服务所需的数据库:
mysql> CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
创建密码并访问权限:
mysql>grant all privileges on hive.* to 'hive'@'%' identified by 'MasterHive01#' with grant option;
mysql> grant all privileges on oozie.* to 'oozie'@'%' identified by 'MasterOozie01#' with grant option;
mysql> grant all privileges on hue.* to 'hue'@'%' identified by 'MasterHue01#' with grant option;
mysql> grant all privileges on scm.* to 'scm'@'%' identified by 'MasterScm01#' with grant option;
mysql> flush privileges;
查看数据库:
注:外部数据库只需要安装在一个节点上即可,我们使用mysql,它的主要作用是用来存储元数据,如hive,oozie等。我们使用主节点来安装mysql。
五、依赖软件安装
所有节点逐一检查一下以下的依赖包是否安装,如果没有,则使用yum install -y进行安装
# yum install -y bind-utils
# yum install -y cyrus-sasl-gssapi
# yum install -y cyrus-sasl-plain
# yum install -y fuse
# yum install -y fuse-libs
# yum install -y gcc
# yum install -y httpd
# yum install -y libxslt
# yum install -y mod_ssl
# yum install -y MySQL-python
# yum install -y openssl-devel
# yum install -y portmap
# yum install -y postgresql-server >= 8.4
# yum install -y psmisc
# yum install -y python >= 2.4.3-43
# yum install -y python-devel >= 2.4.3-43
# yum install -y python-psycopg2
# yum install -y python-setuptools
# yum install -y swig
# yum install -y perl
# //启动web服务器,并将之设置为自动启动:
# systemctl start httpd.service
# systemctl enable httpd.service
六、Cloudera Manager 安装
6.1 CM安装
官方安装文档:http://www.cloudera.com/documentation/enterprise/5-15-x.html
-
在master节点上cd 到/opt 目录上下载
# wget http://archive.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz # wget http://archive.cloudera.com/cdh5/parcels/5.15.0/CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel # wget http://archive.cloudera.com/cdh5/parcels/5.15.0/CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1 # wget http://archive.cloudera.com/cdh5/parcels/5.15.0/manifest.json # wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
-
在每台服务器上创建CM使用的用户
# useradd --system --home=/opt/cm-5.15.0/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
-
在master节点执行如下操作
# mv CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1 CDH-5.15.0-1 z.cdh5.15.0.p0.21-el7.parcel.sha //修改名称 # tar -zxvf cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz -C /opt/ //解压缩 # 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 //移动文件到parcel-repo中
-
将mysql-connector-java-5.1.46.tar.gz解压,生成mysql-connector-java-5.1.46。将mysql-connector-java-5.1.46下的mysql-connector-java-5.1.46-bin.jar
copy到/usr/share/java(如没有则mkdir,新建该目录)和/opt/cm-5.15.0/share/cmf/lib目录下。# tar -zxf mysql-connector-java-5.1.46.tar.gz # cd mysql-connector-java-5.1.46 # cp mysql-connector-java-5.1.46-bin.jar /opt/cm-5.15.0/share/cmf/lib # cp mysql-connector-java-5.1.46-bin.jar /usr/share/java
-
配置agnent,将server_hostg改为master
# vi /opt/cm-5.15.0/etc/cloudera-scm-agent/config.ini
-
复制agent到其他节点
# scp -r /opt/cm-5.15.0 geeky201:/opt # scp -r /opt/cm-5.15.0 geeky200:/opt
-
使用命令配置cm使用的元数据库
# /opt/cm-5.15.0/share/cmf/schema/scm_prepare_database.sh mysql -hlocalhost -uroot -pGeeky.mysql.@admin1 --scm-host geeky202 scm scm MasterScm01#
注:见到类似上面截图的提示则为数据库设置成功,否则请检查数据库配置。
-
启动服务:
# 在master上,启动主服务: # /opt/cm-5.15.0/etc/init.d/cloudera-scm-server start # 在每台服务器上,启动代理服务: # /opt/cm-5.15.0/etc/init.d/cloudera-scm-agent start
等候2~3分钟,系统会完成启动。启动后,就可以在master的7180端口访问scm服务,并进行cdh安装。如果超过10分钟仍无法启动,请检查/var/log/cloudera-scm-server/下的日志文件,并根据日志文件进行错误排查。
访问CM界面:
输入:http://192.168.0.202:7180/ 就可以访问到CM的管理界面用户名密码都是:admin
6.2 CM卸载
-
主节点上停止cm服务
# /opt/cm-5.15.0/etc/init.d/cloudera-scm-server stop
-
所有节点上停止代理服务
# /opt/cm-5.15.0/etc/init.d/cloudera-scm-agent stop # umount /opt/cm-5.15.0/run/cloudera-scm-agent/process
-
所有节点上执行以下命令,清除/var/lib 下cdh的安装组件
# rm -rf /var/lib/hadoop* /var/lib/hue /var/lib/hbase /var/lib/solr /var/lib/oozie /var/lib/hive /var/lib/cloudera-scm-server /var/lib/spark /var/lib/zookeeper /var/lib/kafka /var/lib/impala /var/lib/sqoop* # rm -rf /etc/hadoop* /etc/hbase* /etc/hive* /etc/hue /etc/impala /etc/solr /etc/sqoop* /etc/spark /etc/pig
-
所有节点上执行以下命令,杀掉相关进程
# for u in hdfs mapred cloudera-scm hbase hue zookeeper oozie hive impala flume; do sudo kill $(ps -u $u -o pid=); done
-
所有节点执行以下命令,删除相关的CDH安装包和CM目录
# rm -rf /opt/cloudera/parcel-cache /opt/cloudera/parcels/opt/cloudera-manager/*
-
所有节点删除dfs目录中的内容
# rm -rf /dfs/*
七、异常汇总
7.1 agent 启动异常
查看日志:/opt/cm-5.15.0/log/cloudera-scm-agent/cloudera-scm-agent.out
[05/Nov/2016 06:57:48 +0000] 5975 MainThread agent INFO SCM Agent Version: 5.15.0
Unable to create the pidfile.
解决:
每个节点上创建目录
mkdir /opt/cm-5.15.0/run/cloudera-scm-agent
# 再次启动成功
[root@master init.d]# /opt/cm-5.15.0/etc/init.d/cloudera-scm-agent start
Starting cloudera-scm-agent: [ OK ]
7.2agent启动异常
$ tail -f /var/log/cloudera-scm-agent/cloudera-scm-agent.log
# 查看到报错信息,9000端口已经被占用
ChannelFailures: IOError("Port 9000 not free on 'vm3'",)
$ netstat -tunlp|grep 9000
tcp 0 0 10.171.133.79:9000 0.0.0.0:* LISTEN 4411/python2.6
# 删除pid,杀死端口占用的进程,然后重启
$ rm -rf cloudera-scm-agent.pid
$ kill -9 4411
$ service cloudera-scm-agent start
Starting cloudera-scm-agent: [ OK ]
$ netstat -tunlp|grep 9000
tcp 0 0 10.171.133.79:9000 0.0.0.0:* LISTEN 6562/python2.6
$ service cloudera-scm-agent status
cloudera-scm-agent (pid 6562) is running...
7.3 初始化db时 报错GTID consistency: CREATE TABLE … SELECT.
这是由于安装mysql的配置问题,找到mysql配置修改如下
##################Replication#####################
gtid_mode = off
enforce_gtid_consistency = off
7.4 agent启动异常
解决:
ps -ef |grep supervisor
然后kill掉对应服务
版权声明:本文为博主原创文章,转载请注明出处!
https://me.csdn.net/qq_39657909