CDH_Hadoop5.13.3集群离线部署(三台主机)
//
前言:想学习大数据开发,搭建大数据CDH_Hadoop集群是免不了的工作,这一步至关重要。而搭建CDH_Hadoop不是一件容易的事情,步骤很多,配置繁琐,这也是大数据门槛高的一个体现,很多新手都卡在这一关。经过实践和参考相关资料,个人总结整理成文档,为自己为他人,希望都有帮助。
//
现在有三台虚拟机:node01、node02、node03。
安装规划是:node01作为主节点,node02和node03作为从节点。
操作系统:centos6.8(已经搭建好)
备注:centos6.8和centos6.5,都是稳定版本,推荐使用;而centos7听说内核变化较大,建议新手使用centos6。
虚拟机:3台(node01、node02、node03)
内存:物理机内存至少需要16G才行,如果这点满足不了,就算可以搭建成功,最后集群也运行不起来。
安装文件准备:
CentOS-6.8-x86_64-minimal.iso,
cloudera-manager-el6-cm5.13.3_x86_64.tar.gz,
CDH-5.13.3-1.cdh5.13.3.p0.2-el6.parcel,
CDH-5.13.3-1.cdh5.13.3.p0.2-el6.parcel.sha,
manifest.json,
jdk-8u121-linux-x64.rpm,
mysql-connector-java.jar,
mysql-connector-java-5.1.33-bin.jar
备注:mysql-connector-java-5.1.33-bin.jar和mysql-connector-java.jar其实是同一个文件,只是把mysql-connector-java-5.1.33-bin.jar改名成mysql-connector-java.jar。
JDK版本建议使用8版本,7版本有点落后了。
cm5.13.3是稳定性和新特性比较均衡的版本,目前很多企业都是使用这个版本。
部署规划列表
配置项 node01 node02 node03
JDK8 √ √ √
免密登录 √ √ √
时间同步 √ √ √
关闭防火墙 √ √ √
关闭Selinux √ √ √
Host文件IP和主机名映射 √ √ √
三台虚拟机都关机,做好快照,再开机
安装MYSQL √ × ×
MYSQL建表 √ × ×
相关依赖包 √ √ √
主节点关机,做好快照,再开机
上传cloudera-manager压缩包 √ √ √
上传cdh的parcel包 √ × ×
创建cloudera-scm用户 √ √ √
创建Parcel目录 √ × ×
创建parcels目录 √ √ √
启动CM Server服务 √ × ×
启动CM Agent服务 √ √ √
一、前期环境配置
1、网络配置(所有节点)
vi /etc/sysconfig/network 修改hostname:
通过 service network restart 重启网络服务生效
vi /etc/hosts ,修改ip与主机名的对应关系
192.168.40.11 node01
192.168.40.12 node02
192.168.40.13 node03
然后复制到其它节点
scp -r /etc/hosts root@192.168.40.12:/etc/
scp -r /etc/hosts root@192.168.40.13:/etc/
2、SSH免密码登录
node01执行:
ssh-keygen -t rsa
连续按两个回车
cd /root/.ssh/
ll
查看生成的秘钥
-rw------- 1 root root 1188 Jul 1 19:36 authorized_keys
-rw------- 1 root root 1675 Jul 1 19:34 id_rsa
-rw-r–r-- 1 root root 396 Jul 1 19:34 id_rsa.pub
然后将公钥上传到node01、node02、node03服务器的
ssh-copy-id root@192.168.40.11
ssh-copy-id root@192.168.40.12
ssh-copy-id root@192.168.40.13
免密登录验证
ssh root@192.168.40.11
ssh root@192.168.40.12
ssh root@192.168.40.13
如果不没有提示要输入密码,能登录成功,则表示配置成功。
node02、node03重复上面的执行步骤。
3、关闭防火墙
临时关闭:
service iptables stop
重启后生效:
chkconfig iptables off
4、关闭SELINUX
临时关闭:
setenforce 0
修改配置文件/etc/selinux/config(重启生效):
将SELINUX=enforcing改为SELINUX=disabled
查看SELINUX状态:
1、/usr/sbin/sestatus –v
SELinux status: enabled(enabled:开启;disabled:关闭)
2、使用命令:getenforce
5、安装JDK
rpm -ivh jdk-8u121-linux-x64.rpm
配置环境变量,修改/etc/profile:
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_121
export PATH=
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:PATH
export CLASSPATH=.:
J
A
V
A
H
O
M
d
E
/
l
i
b
/
d
t
.
j
a
r
:
JAVA_HOMdE/lib/dt.jar:
JAVAHOMdE/lib/dt.jar:JAVA_HOME/lib/tools.jar
生效:
source /etc/profile
查看版本:
[root@slave6 cdh]# java -version
java version “1.8.0_121”
Java™ SE Runtime Environment (build 1.8.0_121-b01)
Java HotSpot™ 64-Bit Server VM (build 25.121-b01, mixed mode)
6、设置NTP
所有节点安装NTP:
yum -y install ntp
配置开机启动:
chkconfig ntpd on
检查是否设置成功:
chkconfig --list ntpd (2-5为on状态则成功)
设置同步:
ntpdate -u ntp.sjtu.edu.cn(时钟服务器根据实际环境设置、本文采用210.72.145.44-国家授时中心服务器IP地址)
//
三台虚拟机都关机,做好快照,再开机
//
7、安装配置MySql(主节点)
安装mysql(需要root权限)并创建CDH相关的表【只需要在node01节点安装】
1.1 使用yum安装mysql数据库。
输入:
sudo yum -y install mysql-server mysql mysql-devel ,命令
将:mysql-server、mysql、mysql-devel都安装好,当结果显示为“Complete!”即安装完毕。
注:安装mysql只是安装了数据库,只有安装mysql-server才相当于安装了客户端。
1.2 设置开机启动:sudo chkconfig mysqld on
1.3 启动mysql
输入:sudo service mysqld start
1.4 修改mysql密码
安装好mysql是没有密码的,需要进行设置,进入msyql将密码修改为你自己的,我这里将密码修改成root
输入:mysql -uroot
mysql> use mysql;
mysql> update user set password=password(‘root’) where user=‘root’ and host=‘localhost’;
mysql> flush privileges;
1.5 验证密码是否修改成功
输入:mysql -uroot -proot
能够进入mysql的shell界面,代表成功。
1.6 修改mysql的访问权限
输入:mysql -uroot -proot
mysql> grant all privileges on . to ‘root’@‘node01’ identified by ‘root’;
mysql> flush privileges;
1.7 创建表cdh相关默认库(也可以后创建)
输入命令;mysql -uroot -proot 进入mysql,执行以下sql建库语句
mysql> create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> create database reports DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> create database navigatoraudit DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> create database navigatormetadata DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
8、下载依赖包
yum -y install chkconfig
yum -y install bind-utils
yum -y install psmisc
yum -y install libxslt
yum -y install zlib
yum -y install sqlite
yum -y install cyrus-sasl-plain
yum -y install cyrus-sasl-gssapi
yum -y install fuse
yum -y install portmap
yum -y install fuse-libs
yum -y install redhat-lsb
//
主节点node01关机,做好快照,再开机
//
二、安装Cloudera Manager和CDH
1、安装Cloudera Manager Server&Agent(所有节点)
所有节点,先创建一个目录
mkdir /software
cd /software
拷贝cloudera-manager-el6-cm5.4.3_x86_64.tar.gz到这个目录
然后创建cm目录:
mkdir /opt/cloudera-manager
解压cm压缩包:
tar xvzf cloudera-manager*.tar.gz -C /opt/cloudera-manager
2、创建用户cloudera-scm(所有节点)
执行:
useradd --system --home=/opt/cloudera-manager/cm-5.13.3/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment “Cloudera SCM User” cloudera-scm
3、配置CM Agent(所有节点)
修改文件/opt/cloudera-manager/cm-5.13.3/etc/cloudera-scm-agent/config.ini中server_host以及server_port(server_host,本机地址,server_port为7180)
vi /opt/cloudera-manager/cm-5.13.3/etc/cloudera-scm-agent/config.ini
4、拷贝mysql的连接驱动(所有节点)
1)拷贝mysql-connector-java-5.1.33-bin.jar到目录/opt/cloudera-manager/cm-5.13.3/share/cmf/lib
2)拷贝mysql-connector-java.jar到目录/usr/share/java/
5、在主节点【node01】初始化CM5的数据库
cd /opt/cloudera-manager/cm-5.13.3/share/cmf/schema
./scm_prepare_database.sh mysql -h localhost -uroot -proot --scm-host localhost scm root root
这一步是成败的关键,这一步没有报错,则基本没有问题;如果报错,搞不定的话,就恢复前面备份好的快照,重新来一次。
6、创建Parcel目录
主节点node01创建目录/opt/cloudera/parcel-repo,执行:
mkdir -p /opt/cloudera/parcel-repo
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
将下载好的文件(CDH-5.13.3-1.cdh5.13.3.p0.2-el6.parcel、CDH-5.13.3-1.cdh5.13.3.p0.2-el6.parcel.sha、manifest.json,)拷贝到该目录下。
所有节点node01、node02、node03创建目录/opt/cloudera/parcels,执行:
mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
7、启动CM Server&Agent服务
主节点node01执行:
Server:/opt/cloudera-manager/cm-5.13.3/etc/init.d/cloudera-scm-server start
所有节点node01、node02、node03执行:
Agents:/opt/cloudera-manager/cm-5.13.3/etc/init.d/cloudera-scm-agent start
访问:http://ManagerHost:7180,若可以访问(用户名、密码:admin),则安装成功。
Manager启动成功需要等待一段时间,过程中会在数据库中创建对应的表需要耗费一些时间。
三、Clouder Manager 安装过程异常情况处理
1 异常1
已启用“透明大页面”,它可能会导致重大的性能问题。版本为“CentOS release 6.3 (Final)”且版本为“2.6.32-279.el6.x86_64”的 Kernel 已将 enabled 设置为“[always] never”,并将 defrag 设置为“[always] never”。请运行“echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag”以禁用此设置,然后将同一命令添加到一个 init 脚本中,如 /etc/rc.local,这样当系统重启时就会设置它
(每个节点)
解决方案
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never >> /etc/rc.local
2 异常2
Cloudera 建议将 /proc/sys/vm/swappiness 设置为 0。当前设置为 60。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf 以在重启后保存该设置。您可以继续进行安装,但可能会遇到问题,Cloudera Manager 报告您的主机由于交换运行状况不佳。以下主机受到影响:
解决方案:
echo 0 > /proc/sys/vm/swappiness
sysctl vm/swappiness
echo ‘vm.swappiness = 0’>/etc/sysctl.conf
sysctl -p
个人心得:集群搭建好后,一定要做好快照备份。
在操作系统已经安装好,机器配置高、网速快的情况下,顺利的话,搭建三台CDH_Hadoop集群环境,只需要两个小时左右。实际工作中,两台之内,完成没有问题。搭建CDH_Hadoop集群是从事大数据开发工作的重要一步,当看到集群成功运行的时刻,是非常激动的。
愿这篇部署说明对新手有帮助。