1.1 CM简介
1.1.1 CM简介
Cloudera Manager是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具,使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提高集群管理的效率。
1.1.2 CM架构
1.2 环境准备
1.2.1 虚拟机准备
克隆三台虚拟机(hadoop102、hadoop103、hadoop104),配置好对应主机的网络IP、主机名称、关闭防火墙。
设置hadoop102、hadoop103、hadoop104的主机对应内存分别是:8G、4G、4G
1.2.2 SSH免密登录
配置hadoop102对hadoop102、hadoop103、hadoop104三台服务器免密登录。
1)生成公钥和私钥:
[root@hadoop102 .ssh]$ ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
2)将公钥拷贝到要免密登录的目标机器上
[root@hadoop102 .ssh]$ ssh-copy-id hadoop102
[root@hadoop102 .ssh]$ ssh-copy-id hadoop103
[root@hadoop102 .ssh]$ ssh-copy-id hadoop104
3)重复1和2的操作,配置hadoop103对hadoop102、hadoop103、hadoop104三台服务器免密登录。
1.2.3 集群同步脚本
1)在/root目录下创建bin目录,并在bin目录下创建文件xsync,文件内容如下:
[root@hadoop102 ~]$ mkdir bin
[root@hadoop102 ~]$ cd bin/
[root@hadoop102 bin]$ vi xsync
在该文件中编写如下代码
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=103; host<105; host++)); do
echo ------------------- hadoop$host --------------
rsync -av $pdir/$fname $user@hadoop$host:$pdir
done
2)修改脚本 xsync 具有执行权限
[root@hadoop102 bin]$ chmod 777 xsync
1.2.4 安装JDK(三台)
1)在hadoop102的/opt目录下创建module和software文件夹
[root@hadoop102 opt]# mkdir module
[root@hadoop102 opt]# mkdir software
2)用SecureCRT将jdk-8u144-linux-x64.tar.gz导入到hadoop102的/opt/software目录
3)在Linux系统下的opt目录中查看软件包是否导入成功
[root@hadoop102 software]$ ls
jdk-8u144-linux-x64.tar.gz
4)解压JDK到/opt/module目录下,并修改文件的所有者和所有者组为root
[root@hadoop102 software]$ tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
[root@hadoop102 module]# chown root:root jdk1.8.0_144/ -R
5)配置JDK环境变量
(1)打开/etc/profile文件
[root@hadoop102 software]$ vi /etc/profile
在profile文件末尾添加JDK路径
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
(2)让修改后的文件生效
[root@hadoop102 jdk1.8.0_144]$ source /etc/profile
6)测试JDK是否安装成功
[root@hadoop102 jdk1.8.0_144]# java -version
java version "1.8.0_144"
7)将hadoop102中的JDK和环境变量分发到hadoop103、hadoop104两台主机
[root@hadoop102 opt]# xsync /opt/module/
[root@hadoop102 opt]# xsync /etc/profile
分别在hadoop103、hadoop104上source一下
[root@hadoop103 ~]$ source /etc/profile
[root@hadoop104 ~]# source /etc/profile
1.2.5 集群整体操作脚本
1)在/root/bin目录下创建脚本xcall.sh
[root@hadoop102 bin]$ vim xcall.sh
2)在脚本中编写如下内容
#! /bin/bash
for i in hadoop102 hadoop103 hadoop104
do
echo --------- $i ----------
ssh $i "$*"
done
3)修改脚本执行权限
[root@hadoop102 bin]$ chmod 777 xcall.sh
4)将/etc/profile文件追加到~/.bashrc后面
[root@hadoop102 module]# cat /etc/profile >> ~/.bashrc
[root@hadoop103 module]# cat /etc/profile >> ~/.bashrc
[root@hadoop104 module]# cat /etc/profile >> ~/.bashrc
5)测试
[root@hadoop102 bin]# xcall.sh jps
1.2.6 安装MySQL
注意:一定要用root用户操作如下步骤;先卸载MySQL再安装
1)安装包准备
(a)查看MySQL是否安装
[root@hadoop102 桌面]# rpm -qa|grep mysql
mysql-libs-5.1.73-7.el6.x86_64
(b)如果安装了MySQL,就先卸载
[root@hadoop102 桌面]#
rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64
(c)上传mysql-libs.zip到hadoop102的/opt/software目录,并解压文件到当前目录
[root@hadoop102 software]# unzip mysql-libs.zip
[root@hadoop102 software]# ls
mysql-libs.zip
mysql-libs
(d)进入到mysql-libs文件夹下
[root@hadoop102 mysql-libs]# ll
总用量 76048
-rw-r--r--. 1 root root 18509960 3月 26 2015 MySQL-client-5.6.24-1.el6.x86_64.rpm
-rw-r--r--. 1 root root 3575135 12月 1 2013 mysql-connector-java-5.1.27.tar.gz
-rw-r--r--. 1 root root 55782196 3月 26 2015 MySQL-server-5.6.24-1.el6.x86_64.rpm
2)安装MySQL服务器
(a)安装MySQL服务端
[root@hadoop102 mysql-libs]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm
(b)查看产生的随机密码
[root@hadoop102 mysql-libs]# cat /root/.mysql_secret
AFXaCuS6IBdG21kB
(c)查看MySQL状态
[root@hadoop102 mysql-libs]# service mysql status
(d)启动MySQL
[root@hadoop102 mysql-libs]# service mysql start
3)安装MySQL客户端
(a)安装MySQL客户端
[root@hadoop102 mysql-libs]# rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm
(b)链接MySQL(密码替换成产生的随机密码)
[root@hadoop102 mysql-libs]# mysql -uroot -pOEXaQuS8IWkG19Xs
(c)修改密码
mysql>SET PASSWORD=PASSWORD('000000');
(d)退出MySQL
mysql>exit
4)MySQL中user表中主机配置
配置只要是root用户+密码,在任何主机上都能登录MySQL数据库。
(1)进入MySQL
[root@hadoop102 mysql-libs]# mysql -uroot -p000000
(2)显示数据库
mysql>show databases;
(3)使用MySQL数据库
mysql>use mysql;
(4)展示MySQL数据库中的所有表
mysql>show tables;
(5)展示user表的结构
mysql>desc user;
(6)查询user表
mysql>select User, Host, Password from user;
(7)修改user表,把Host表内容修改为%
mysql>update user set host='%' where host='localhost';
(8)删除root用户的其他host
mysql>
delete from user where Host='hadoop102';
delete from user where Host='127.0.0.1';
delete from user where Host='::1';
(9)刷新
mysql>flush privileges;
(10)退出
mysql>quit;
1.2.7 创建CM用的数据库
在MySQL中依次创建监控数据库、Hive数据库、Oozie数据库、Hue数据库
1)启动数据库
[root@hadoop102 ~]# mysql -uroot -p000000
2)集群监控数据库
mysql> create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
3)Hive数据库
mysql> create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
4)Oozie数据库
mysql> create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
5)Hue数据库
mysql> create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
6)关闭数据库
mysql> quit;
1.2.8 下载第三方依赖
依次在三台节点(所有Agent的节点)上执行下载第三方依赖(注意:需要联网)
[root@hadoop102 ~]# yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb
[root@hadoop103 ~]# yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb
[root@hadoop104 ~]# yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb
1.2.9 关闭SELINUX
安全增强型Linux(Security-Enhanced Linux)简称SELinux,它是一个 Linux 内核模块,也是Linux的一个安全子系统。为了避免安装过程出现各种错误,建议关闭,有如下两种关闭方法:
1)临时关闭(不建议使用)
[root@hadoop102 ~]# setenforce 0
但是这种方式只对当次启动有效,重启机器后会失效。
2)永久关闭(建议使用)
修改配置文件/etc/selinux/config
[root@hadoop102 ~]# vim /etc/selinux/config
将SELINUX=enforcing 改为SELINUX=disabled
SELINUX=disabled
3)同步/etc/selinux/config配置文件
[root@hadoop102 ~]# xsync /etc/selinux/config
4)重启hadoop102、hadoop103、hadoop104主机
[root@hadoop102 ~]# reboot
[root@hadoop103 ~]# reboot
[root@hadoop104 ~]# reboot
1.3 CM安装部署
1.3.1 CM下载地址
1)CM下载地址:http://archive.cloudera.com/cm5/cm/5/
2)离线库下载地址:http://archive.cloudera.com/cdh5/parcels
1.3.2 CM安装
注:以下所有操作均使用root用户
1)创建/opt/module/cm目录
[root@hadoop102 module]# mkdir –p /opt/module/cm
2)上传cloudera-manager-el6-cm5.12.1_x86_64.tar.gz到hadoop102的/opt/software目录,并解压到/opt/module/cm目录
[root@hadoop102 software]# tar -zxvf cloudera-manager-el6-cm5.12.1_x86_64.tar.gz -C /opt/module/cm
3)分别在hadoop102、hadoop103、hadoop104创建用户cloudera-scm
[root@hadoop102 module]#
useradd \
--system \
--home=/opt/module/cm/cm-5.12.1/run/cloudera-scm-server \
--no-create-home \
--shell=/bin/false \
--comment "Cloudera SCM User" cloudera-scm
[root@hadoop103 module]#
useradd \
--system \
--home=/opt/module/cm/cm-5.12.1/run/cloudera-scm-server \
--no-create-home \
--shell=/bin/false \
--comment "Cloudera SCM User" cloudera-scm
[root@hadoop104 module]#
useradd \
--system \
--home=/opt/module/cm/cm-5.12.1/run/cloudera-scm-server \
--no-create-home \
--shell=/bin/false \
--comment "Cloudera SCM User" cloudera-scm
参数说明:
–system 创建一个系统账户
–home 指定用户登入时的主目录,替换系统默认值/home/<用户名>
–no-create-home 不要创建用户的主目录
–shell 用户的登录 shell 名
–comment 用户的描述信息
注意:Cloudera Manager默认去找用户cloudera-scm,创建完该用户后,将自动使用此用户。
4)修改CM Agent配置
修改文件/opt/module/cm/cm-5.12.1/etc/cloudera-scm-agent/ config.ini的主机名称
[root@hadoop102 cloudera-scm-agent]# vim /opt/module/cm/cm-5.12.1/etc/cloudera-scm-agent/config.ini
修改主机名称
server_host=hadoop102
5)配置CM的数据库
拷贝mysql-connector-java-5.1.27-bin.jar文件到目录 /usr/share/java/
[root@hadoop102 cm]# mkdir –p /usr/share/java/
[root@hadoop102 mysql-libs]# tar -zxvf mysql-connector-java-5.1.27.tar.gz
[root@hadoop102 mysql-libs]# cp /opt/software/mysql-libs/mysql-connector-java-5.1.27/mysql-connector-java-5.1.27-bin.jar /usr/share/java/
[root@hadoop102 mysql-libs]# mv /usr/share/java/mysql-connector-java-5.1.27-bin.jar /usr/share/java/mysql-connector-java.jar
注意:jar包名称要修改为mysql-connector-java.jar
6)使用CM自带的脚本,在MySQL中创建CM库
[root@hadoop102 cm-5.12.1]#
/opt/module/cm/cm-5.12.1/share/cmf/schema/scm_prepare_database.sh mysql cm -hhadoop102 -uroot -p000000 --scm-host hadoop102 scm scm scm
参数说明
-h:Database host
-u:Database username
-p:Database Password
–scm-host:SCM server’s hostname
7)分发cm
[root@hadoop102 module]# xsync /opt/module/cm
8)创建Parcel-repo
[root@hadoop102 module]# mkdir -p /opt/cloudera/parcel-repo
[root@hadoop102 module]# chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
9)拷贝下载文件manifest.json 、CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel.sha1 、CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel到hadoop102的/opt/cloudera/parcel-repo/目录下
[root@hadoop102 parcel-repo]# ls
CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel.sha1
manifest.json
10)将CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel.sha1:需改名为
CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel.sha
[root@hadoop102 parcel-repo]# mv CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel.sha1 CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel.sha
11)在hadoop102上创建目录/opt/cloudera/parcels,并修改该目录的所属用户及用户组为cloudera-scm
[root@hadoop102 module]# mkdir -p /opt/cloudera/parcels
[root@hadoop102 module]# chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
12)分发/opt/cloudera/
[root@hadoop102 opt]# xsync /opt/cloudera/
1.3.3 启动CM服务
1)启动服务节点:hadoop102
[root@hadoop102 cm]# /opt/module/cm/cm-5.12.1/etc/init.d/cloudera-scm-server start
Starting cloudera-scm-server: [确定]
2)启动工作节点:hadoop102、hadoop103、hadoop104
[root@hadoop102 cm]# /opt/module/cm/cm-5.12.1/etc/init.d/cloudera-scm-agent start
[root@hadoop103 cm]# /opt/module/cm/cm-5.12.1/etc/init.d/cloudera-scm-agent start
[root@hadoop104 cm]# /opt/module/cm/cm-5.12.1/etc/init.d/cloudera-scm-agent start
注意:启动过程非常慢,Manager启动成功需要等待5分钟左右,过程中会在数据库中创建对应的表需要耗费一些时间。
3)查看被占用则表示安装成功了!!!
[root@hadoop102 cm]# netstat -anp | grep 7180
tcp 0 0 0.0.0.0:7180 0.0.0.0:* LISTEN 5498/java
4)访问http://hadoop102:7180,(用户名、密码:admin)
1.3.4 关闭CM服务
1)关闭工作节点:hadoop102、hadoop103、hadoop104
[root@hadoop102 cm]# /opt/module/cm/cm-5.12.1/etc/init.d/cloudera-scm-agent stop
Stopping cloudera-scm-agent: [确定]
[root@hadoop103 cm]# /opt/module/cm/cm-5.12.1/etc/init.d/cloudera-scm-agent stop
Stopping cloudera-scm-agent: [确定]
[root@hadoop104 cm]# /opt/module/cm/cm-5.12.1/etc/init.d/cloudera-scm-agent stop
Stopping cloudera-scm-agent: [确定]
2)关闭服务节点:hadoop102
[root@hadoop102 cm]# /opt/module/cm/cm-5.12.1/etc/init.d/cloudera-scm-server stop
停止 cloudera-scm-server: [确定]
1.4 CM的集群部署
1.4.1 接受条款和协议
1.4.2 选择免费
1.4.3 指定主机
1.4.4 选择CDH的版本5.12.1
1.4.5 等待下载安装
2.1 HDFS、YARN、Zookeeper安装
2.1.1 选择自定义安装
2.1.2 选择安装服务
2.1.3 分配节点
2.1.4 集群设置全部选默认即可
2.1.5 自动启动进程
2.1.6 修改HDFS的权限检查配置
关闭HDFS中的权限检查:dfs.permissions。
2.1.7 配置Hadoop支持LZO
1)点击主机,在下拉菜单中点击Parcel
2)点击配置
3)找到远程Parcel存储库URL,点击最后一栏的加号,增加一栏,输入http://archive.cloudera.com/gplextras/parcels/latest/,之后点击保存更改
4)返回Parcel列表,可以看到多出了LZO,选择下载,下载完成后选择分配,分配完成后选择激活。
5)安装完LZO后,打开HDFS配置,找到“压缩编码解码器”一栏,点击加号,添加com.hadoop.compression.lzo.LzopCodec
后保存更改
6)打开YARN配置,找到MR 应用程序 Classpath,添加/opt/cloudera/parcels/HADOOP_LZO/lib/hadoop/lib/hadoop-lzo-cdh4-0.4.15-gplextras.jar
7)更新过期配置,重启进程