Centos7.4.1离线部署CDH5.14.2

一、注意事项

1. 所有步骤如无特别说明都是要在所有服务器上都执行一遍
2. 所有的准备工作都要做,不要漏了或者错了,不然后面出现各种问题再改都是轻的,由此引发的其他的问题就严重多了
3. 所有操作均在root用户下进行
4. 以下是Centos7以tar包形式安装
5. 操作系统为Centos7, 下载的对应Tar包是centos7的,parcels包是el7,否则版本不符合会有n多坑(请各位大侠勿跳)

在生产环境中,很多时候集群管理者并没有开放root权限给你来安装CDH,这时候管理者只会开放部分权限,这时涉及这些已经开放的权限时,必须运用sudo执行。本文接下来先从root权限入手

二、软件包下载地址

这里下载的主要是CM Tar包离线安装, 因为后续安装需要MySQL数据库,所以后续需要下载Mysql的驱动Jar包,还需要下载Oracle的官方JDK1.7以上

  1. 再强调一遍,操作系统为Centos7: 下载的对应Tar包是centos7的,parcels包是el7,否则版本不符合会有n多坑
  2. Cloudera ManagerTar包下载地址(选择centos7的版本):Tar包下载地址
    Centos7.4.1离线部署CDH5.14.2
  3. CDH安装包地址(下载对应的3个文件包):CDH parcels包下载地址
    Centos7.4.1离线部署CDH5.14.2
  4. jdbc驱动的MySQL下载地址:驱动下载
  5. Oracle JDK下载:下载地址

三、安装步骤

1. 首先得安装Centos7操作系统(安装步骤略)

2.修改网络配置和主机名(切换到root用户下)

vi /etc/sysconfig/network
加上
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=gxqpt_cdh01
NTPSERVERARGS=iburst 

3.修改网卡信息注释IPV6相关信息

注意:cdh搭建需禁止ipv6(NETWORKING_IPV6 = no)
如果不禁止ipv6会导致通信产生问题,通信一有问题,各个进程可能挂掉,进程超时等问题
Centos7.4.1离线部署CDH5.14.2

4、关闭防火墙和selinux,并设置开机关闭(所有节点)

1)关闭防火墙
查看防火前状态: systemctl status firewalld 
查看防火墙是否在运行:firewall-cmd --state
关闭防火墙: systemctl stop firewalld
禁用防火墙:systemctl disable firewalld
2)关闭selinux
 vi /etc/sysconfig/selinux 修改SELINUX=disabled

5、修改主机域名映射:vi /etc/hosts(所有节点)

127.0.0.1      localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
192.168.30.85   cdh01
192.168.30.86   cdh02
192.168.30.87   cdh03

6、windows电脑也添加域名映射,路径是:

C:\Windows\System32\drivers\etc\hosts,修改和Linux主机名
192.168.30.85  cdh01
192.168.30.86   cdh02
192.168.30.87   cdh03

7、禁用IPV6

	echo "#禁用IPv6   " >> /etc/modprobe.d/tuned.conf
	echo "alias net-pf-10 off" >> /etc/modprobe.d/tuned.conf 
	echo "alias ipv6 off" >> /etc/modprobe.d/tuned.conf 
  查看是否追加成功 tail /etc/modprobe.d/tuned.conf

8、关闭透明大页面(所有节点)

1) 临时关闭透明大页面(立即生效)
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled 
2) 永久关闭透明大页面(重启生效)
echo '            ' >> /etc/rc.local 
echo '# 关闭大透明页面' >> /etc/rc.local 
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local 
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local 
3)查看是否已经关闭
cat /sys/kernel/mm/transparent_hugepage/defrag
cat /sys/kernel/mm/transparent_hugepage/enabled

9、修改swappiness

#临时生效
sysctl -w vm.swappiness=10
 重启后永久修改
echo "vm.swappiness=10" >> /etc/sysctl.conf

10、修改好以后重启系统

	Reboot

11、打通ssh,设置无密码登陆(所有节点)

1)生成秘钥
执行ssh-****** -t rsa,一路回车,生成无密码的**对。
2)复制公钥:
cd ~/.ssh/
cp id_rsa.pub authorized_keys
# 下面的命令是把其他主机的公钥复制到本机
ssh-copy-id  -i  /root/.ssh/id_rsa.pub  -p 53535 [email protected]主机名
3)测试
这时候连接的时候需要加上端口号才能连接  ssh -p 53535 主机名

免密出现权限问题:
ssh登录出现:permission denied(publickey.gssapi-with-mic)
解决方法:
修改/etc/ssh/sshd-config文件,将其中的:
PermitRootLogin no修改为yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys前面加上#屏蔽掉
PasswordAuthentication no修改为yes
最后重启sshd服务即可!

12、操作系统语言统一采用英文版

# 查看操作系统系统语言
echo $LANG
# 修改操作系统系统语言
vim /etc/sysconfig/i18n
LANG="en_US.UTF-8"

四、JDK环境

CDH运行环境是Oracle的JDk1.7/1.8环境,需要卸载Centos系统自带的jdk,安装自己的JDK,下载OracleJDK需要注意的是JDK会有两个版本(奇数版本和偶数版本,强烈推荐奇数版本,奇数版本是bug修复的版本),安装CDH自带JDK

1、卸载原有JDK

1)查看原有JDK
	rpm -qa|grep java 查看已安装的JDK信息
	rpm –ga|grep gcj 
2)卸载之
rpm -e --nodeps tzdata-java-2018e-3.el6.noarch java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64 java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 java-1.7.0-openjdk-1.7.0.181-2.6.14.10.el6.x86_64 java_cup-0.10k-5.el6.x86_64 	

2、安装JDK

 rpm -ivh jdk-8u201-linux-x64.rpm

3、验证是否安装成功

	1)输入java 
 
	2)javac

	3)java -version

注意:其他机器也需要同样的JDK环境

4、JDK安装完成后配置环境变量

 Vi /etc/profile编辑后加入jdk路径信息,安装的jdk路径默认在/usr/java/目录下
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=/usr/java/jdk1.8.0_201-amd64/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

5、source /etc/profile

四、Centos7安装时间同步器保证时间同步ntp

Yum install –y ntp
启动:systemctl start ntpd
开机启动:chkconfig ntpd on

注:集群必须保证时间同步,如果时间不同步后面安装的组件会挂掉

五、卸载、安装Mysql并创建表

1、卸载:

1)检查mysql老版本
 rpm -qa|grep -i mysql
2)停止mysqld服务
Service mysqld stop
3)删除之前的mysql安装包
rpm -e –-nodeps mysql 包名..
4)查找mysql相关文件目录
find / -name mysql
将找到的文件夹或文件删除
5)再次查看是否还有mysql安装包
  rpm -qa|grep -i mysql
6)如果有则删之、无则安装自己下载的mysql

2、安装mysql

#注意:CentOS7 yum不再按照默认的MySQL了,而是使用MariaDB

1)安装MariaDB
  yum install -y mysql mysql-devel
  yum install -y mariadb mariadb-server
2)启动mariadb
systemctl start mariadb
3)修改密码
/usr/bin/mysql_secure_installation

安装好的mariadb初始密码没有设置的话是空,直接回车后就可以修改免密
Centos7.4.1离线部署CDH5.14.2

4)、进行Mysql的密码设置及其他基本配置 /usr/bin/mysql_secure_installation --user=mysql

Centos7.4.1离线部署CDH5.14.2

5)登陆Mysql数据库
  	mysql -uxxx -pxxx

Centos7.4.1离线部署CDH5.14.2

6)添加远程登陆权限
Grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
重新加载权限
7)flush privileges;
8) Window通过navicat远程访问连接成功

Centos7.4.1离线部署CDH5.14.2

六、驱动jar包拷贝

1、将Mysql驱动包放入三台服务器的Java 共享目录下

mv mysql-connector-java-5.1.41.jar mysql-connector-java.jar

2、远程拷贝到其他服务器上

scp /usr/share/java/ mysql-connector-java.jar cdh02: /usr/share/java/
scp /usr/share/java/ mysql-connector-java.jar cdh03: /usr/share/java/	

3、必备数据库 创建及授权

create database if not exists amon default charset utf8 collate utf8_general_ci; 
create database if not exists rman default charset utf8 collate utf8_general_ci; 
create database if not exists nav default charset utf8 collate utf8_general_ci; 
create database if not exists navms default charset utf8 collate utf8_general_ci;
 create database if not exists hue default charset utf8 collate utf8_general_ci;
 create database if not exists sentry default charset utf8 collate utf8_general_ci; 
create database if not exists cm default charset utf8 collate utf8_general_ci;
create database if not exists reports default charset utf8 collate utf8_general_ci;
create database if not exists hive;
 create database if not exists oozie; 
grant all on hive.* to 'hive'@'%' identified by 'hive' with grant option; 
grant all on oozie.* to 'oozie'@'%' identified by 'oozie' with grant option; 
grant all on hue.* to 'hue'@'%' identified by 'hue' with grant option; 
grant all on amon.* to 'amon'@'%' identified by 'amon' with grant option; 
grant all on rman.* to 'rman'@'%' identified by 'rman' with grant option; 
grant all on nav.* to 'nav'@'%' identified by 'nav' with grant option; 
grant all on navms.* to 'navms'@'%' identified by 'navms' with grant option;
grant all on sentry.* to 'sentry'@'%' identified by 'sentry' with grant option; 
grant all on reports.* to reports @'%' identified by 'reports' with grant option; 
grant all on cm.* to 'cm'@'%' identified by 'cm' with grant option;  
grant all on *.* to reports @'%' identified by '*' with grant option; 

4、flush privileges;

七、安装必备软件

yum -y install psmisc
yum -y install libxslt
yum -y install screen
yum -y install telnet
yum -y install lrzsz

八 、安装依赖

 yum install -y bind-utils libxslt cyrus-sasl-plain cyrus-sasl-gssapi portmap fuselibs /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 MySQL python fuse

九、安装Cloudera Manager Server 和Agent

1、主节点解压cloudera-manager安装包到指定路径/opt/下

     tar -zxf cloudera-manager-el7-cm5.14.2_x86_64.tar.gz -C /opt/cloudera-manager

2、为cloudera-manager创建数据库

 首先拷贝mysql驱动包放到/opt/cm-5.14.2/share/cmf/lib/中
cp ..()路径/mysql-connector-java-5.1.44/mysql-connector-java-5.1.44-bin.jar  /opt/cm-5.14.2/share/cmf/lib/

3、创建用户

sudo useradd --system --home=/opt/cloudera-manager/cm-5.14.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

4、在主节点初始化数据库

 /opt/cloudera-manager/cm-5.14.2/share/cmf/schema/scm_prepare_database.sh mysql -h localhost -uroot -p123456 --scm-host localhost scm root 123456
 scm是初始化数据库名称,如果已经存在删除或者更换名称

5、Agent配置

修改主节点的主机名并同步到其他节点
修改配置文件
vim /opt/cloudera-manager/cm-5.14.2/etc/cloudera-scm-agent/config.ini

将serverhost = cdh02并同步

6、同步Agent到其他节点

scp –P 53535 –r /opt/cloudera-manager/cm-5.14.2 r cdh02:/opt/cloudera-manager
scp –P 53535  -r /opt/cloudera-manager/cm-5.14.2 cdh03:/opt/cloudera-manager

Centos7.4.1离线部署CDH5.14.2

7、准备Parcels,用以安装CDH5

将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中
这些包包括:
最后将CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha1,重命名为CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha
注意:如果不重新命名,系统会重新下载CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha1文件

8、启动cloudera-scm-server和cloudera-scm-agent

启动脚本:通过/opt/cm-5.14.2/etc/init.d/cloudera-scm-server start启动服务端。
通过/opt/cm-5.14.2/etc/init.d/cloudera-scm-agent start启动Agent服务。
上述启动的其实是个service脚本,需要停止服务将以上的start参数改为stop就可以了,重启是restart

9、浏览器访问

通过浏览器访问7180端口,由于CM Server的启动需要花点时间,这里可能要等待一会才能访问),默认的用户名和密码均为admin
Centos7.4.1离线部署CDH5.14.2

十、CDH5的安装配置

Cloudera Manager Server和Agent都启动以后,就可以进行CDH5的安装配置了,

访问7180端口进入页面
Centos7.4.1离线部署CDH5.14.2
Centos7.4.1离线部署CDH5.14.2
点击同意后进入页面

Centos7.4.1离线部署CDH5.14.2

Centos7.4.1离线部署CDH5.14.2

继续下一步,耐心等待群集安装
Centos7.4.1离线部署CDH5.14.2

点击继续,这里会有主机检测,检测全部通过才可以进行下一步
Centos7.4.1离线部署CDH5.14.2

十一、向服务管理平台添加服务,添加服务一项一项添加,首先先添加zookeeper服务

Centos7.4.1离线部署CDH5.14.2
Zookeeper安装的节点数最好是奇数台,至少3台
Centos7.4.1离线部署CDH5.14.2

Centos7.4.1离线部署CDH5.14.2
Centos7.4.1离线部署CDH5.14.2
Centos7.4.1离线部署CDH5.14.2
至此Zookeeper添加并启动成功
Centos7.4.1离线部署CDH5.14.2

十二、添加hdfs服务,在主页上点击添加服务

Centos7.4.1离线部署CDH5.14.2

1、选择HDFS

Centos7.4.1离线部署CDH5.14.2
Centos7.4.1离线部署CDH5.14.2
Centos7.4.1离线部署CDH5.14.2

2、检测初始化和启动

Centos7.4.1离线部署CDH5.14.2
Centos7.4.1离线部署CDH5.14.2

十三、添加yarn集群

1、选择服务

Centos7.4.1离线部署CDH5.14.2
Centos7.4.1离线部署CDH5.14.2
Centos7.4.1离线部署CDH5.14.2
Centos7.4.1离线部署CDH5.14.2
至此yarn添加成功

十四、添加spark服务

Centos7.4.1离线部署CDH5.14.2
Centos7.4.1离线部署CDH5.14.2

十五、添加hive服务

以后需要的服务一一添加即可,例添加Hive服务
注意:添加Hive服务需要将Mysql驱动包拷到以下目录,否则会报驱动包找不到
/opt/cloudera-manager/cloudera/parcels/CDH-5.14.2-1.cdh5.14.2.p0.3/lib/hive/lib
Centos7.4.1离线部署CDH5.14.2

1、到CM主页点击添加服务选择Hive添加:

Centos7.4.1离线部署CDH5.14.2
Centos7.4.1离线部署CDH5.14.2

2、输入Mysql中数据库Hive名称,用户名和密码

Centos7.4.1离线部署CDH5.14.2
Centos7.4.1离线部署CDH5.14.2
等待配置都成功了服务就添加成功了!
Centos7.4.1离线部署CDH5.14.2
以后需要添加的服务以此类推,需要数据库在Mysql中创建相应的数据库,并给数据库授权,如果不需要的服务配置过程中按需分配!
另外需要注意的是:安装CM配置CDH的时候服务需要一项一项的添加,如果一次性全部添加完会出现很多问题!

十六、CDH5.14.2添加Flume服务
Centos7.4.1离线部署CDH5.14.2

选择Flume服务
Centos7.4.1离线部署CDH5.14.2
Centos7.4.1离线部署CDH5.14.2

Centos7.4.1离线部署CDH5.14.2
添加成功,等待启动

十七、添加sqoop服务

Centos7.4.1离线部署CDH5.14.2

最后将hive的执行引擎改为spark,这样运行速度会很快
Centos7.4.1离线部署CDH5.14.2

十八、添加作业调度器oozie

Centos7.4.1离线部署CDH5.14.2
Centos7.4.1离线部署CDH5.14.2
Centos7.4.1离线部署CDH5.14.2
Centos7.4.1离线部署CDH5.14.2

十九、最后搭建好的集群状态(perfect!)

Centos7.4.1离线部署CDH5.14.2

二十、问题小结

问题一:集群中副本不足块??

问题描述:
原因是设置的副本备份数与DataNode的个数不匹配。而dfs. replication属性默认是3,也就是说副本数—块的备份数默认为3份。但是我们这里集群只有两个DataNode。所以导致了达不到目标—副本备份不足!
解决办法:
1、 设置目标备份数为2
2、 通过命令更改当前备份数。

1、设置目标备份数为2

点击集群-HDFS-配置,搜索dfs. replication,设置为2后保存更改
Centos7.4.1离线部署CDH5.14.2
Centos7.4.1离线部署CDH5.14.2
dfs.replication这个参数其实只在文件被写入dfs时起作用,虽然更改了配置文件,但是不会改变之前写入的文件的备份数。

2、通过命令更改当前备份数

远程连接上服务器
切换用户:su hdfs
设置Datanode个数:hadoop fs –setrep –R 2 /
Centos7.4.1离线部署CDH5.14.2

设置完后浏览器上刷新,这时hdfs状态变绿了
Centos7.4.1离线部署CDH5.14.2
参考文献:https://blog.csdn.net/makai554892700/article/details/79984460
https://blog.csdn.net/zzq900503/article/details/53393721

相关文章: