CDH-Hadoop5.12.1Parcel离线安装及部署
简介:相比apache的hadoop、cdh版本的稳定性兼容性更好,(常见的hadoop的发行版有hdp、MapR 、EMR…)具体对比如下表:
Cloudera’s distribute Apache Hadoop(cdh)
cdh | apache |
---|---|
版本划分清晰、版本更新快 | 版本管理混乱、维护困难、没有监控 |
文档清晰 | 部署过程繁琐、升级过程复杂 |
兼容性好、稳定 | 兼容性差 |
kerberos安全认证 | 安全性低 |
1. cdh的安装方式
cdh的安装方式有很多种:
-
cloudera manager离线安装(生产过程中的主要安装方式)
-
yum 安装
-
rpm 安装
-
Tarball 安装
1.1的下载地址
5.4 CDH
5.4.3 cloudera manager
1.2 ntpdate时间不同步问题
server 与agent之间心跳连接超时 默认是5次心跳 包ntpdate时间不同步问题
2. cdh安装部署
2.1 系统环境准备
2.1.1 准备相应数量的服务器,并设置网络配置
1、配置好网络ip地址以及hostname vi /etc/sysconfig/network |
---|
2、修改主机名称 vi /etc/hosts |
3、关闭防火墙 (可选) service iptables status(stop)|chkconfig iptable off |
2.1.2 服务器之间ssh免密登陆
1、在不同节点上生成相应的私钥公钥 : ssh-keygen -t rsa |
---|
2、将生成的分发公钥: ssh-copy-id node1 ->ssh-copy-id node2 ->ssh-copy-id node3 |
3、验证方式如下: |
分别在不同节点上 ssh hostname1 、ssh hostname2 、ssh hostname3 |
2.1.3 准备集群同步脚本
mkdir bin
cd bin/
vi xsync 在文件中编辑以下内容:
chmod 777 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.1.4 安装JDK并且配置环境变量
mkdir -p /opt/module
mkdir -p /opt/software
# 解压安装到module目录
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
# 修改文件所有者、持有者为root
chown root:root jdk1.8.0_144 /-R
vi /etc/profile
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk...
export PATH=$PATH:$JAVA_HOME/bin
# export CLASS_PATH=xxxxx
# 必须source一下 不然环境变量不生效
xsync /opt/module/jdkxx
cat /etc/profile >> ~/.bashrc
source /etc/profile
# 验证环境变量是否生效
java -version
2.1.5 集群整体操作
vi all.sh
chmod 777 all.sh
#!/bin/bash
for i in host1 host2 host3
do
echo --------- $i ----------
ssh $i "$*"
done
# 验证方式
all.sh jps
2.1.6 安装Server的database-MySQL
# 查看是否默认安装了mysql
rpm -qa|grep mysql...
#如果安装了就卸载mysql
rpm -e --nodeps mysql....rpm
-----------------------------------------
# 首先安装server
rpm -ivh mysql.server.rpm
# server 安装完之后,会生成一个随机的PASSWORD
cat /root/.mysql_secret
-> xxxxxxxx
# 安装client 并登陆
rpm -ivh mysql..client.rpm
mysql -uroot -pxxxxxxxx
>> SET PASSWORD = PASSWORD('000000')
>> exit
# 然后修改mysql的表结构(user表)
mysql -uroot -p000000
desc user;
select Host,User,Password from user;
update user set host='%' where host='localhost';
mysql>
delete from user where Host='host1';
delete from user where Host='127.0.0.1';
delete from user where Host='::1';
# 这个是必须刷新的
flush previleges;
# 现在就可以在mysql中创建相应组件所用到的元数据库了
# 1.集群监控数据库
mysql> create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
# 2.Hive数据库
mysql> create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
# 3.Oozie数据库
mysql> create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
# 4.Hue数据库
mysql> create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
2.1.7 关闭SELINUX
# 临时关闭
setenforce 0
# 永久关闭(推荐)
vim /etc/selinux/config
SELINUX=disable
# 分发配置
xsync /etc/selinux/config
# 重启
reboot
2.1.8 下载第三方依赖
# 依次在3台节点上执行
yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb
2.2 cloudera manager的安装
2.2.1 CM的下载地址
CM下载地址:http://archive.cloudera.com/cm5/cm/5/
离线库下载地址:http://archive.cloudera.com/cdh5/parcels
2.2.2 CM正式安装
mkdir -p /opt/module/cm
# 解压并安装到指定目录
tar -zxvf cloudera-manager-el6-cm5.12.1_x86_64.tar.gz -C /opt/module/cm
# 分别在host1、host2、host3.....创建用户cloudera-scm
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,创建完该用户后,将自动使用此用户
2.2.3 CM Agent、Server配置
# 修改初始化文件
vi /opt/cloudera-manager/cm-5.4.3/etc/cloudera-scm-agent/config.init
server_host = ?
server_port = (7182 默认通新端口)
# 配置CM的数据库
mkdir -p /usr/share/java
tar -zxvf mysql-connector-java-5.1.27.tar.gz
cp opt/software/mysql-connector-java-5.1.27/mysql-connector-java-5.1.27-bin.jar /usr/share/java/
# 修改连接包的名字
mv mysql-connector-java-5.1.27-bin.jar mysql-connector-java.jar
2.2.4 用CM自带的脚本在MySQL中创建相应的库
/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
2.2.5 分发CM的目录到其他节点
[root@ host1]>> xsync /opt/module/cm
2.2.6 创建Parcel目录
# 创建Parcel目录
Server节点
- mkdir -p /opt/cloudera/parcel-repo
# 修改目录的所有者、使用者为cloudera-scm
- chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
Agent节点
- mkdir -p /opt/cloudera/parcels
- chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
# 拷贝下载文件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到主节点serverhost[host1]的 /opt/cloudera/parcel-repo/目录:
[root@host1 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
# 修改名称
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
=> 制作CDH本地源
- 下载好文件CDH-5.4.0-1.cdh5.4.0.p0.27-el6.parcel以及mainfest.json,将这2个节点放在
server节点的指定目录下:/opt/cloudera/parcel-repo下
- 打开mainfest.json文件,里面是json格式的配置,找到与下版本对应的hash码, 新建文件,文件名
与你的parcel包名一致,并加上.sha后缀,将hash码复制到文件中保存
# 分别在host1、host2、host3上创建agent的/opt/cloudera/parcels
[root@hadoop102 module] mkdir -p /opt/cloudera/parcels
[root@hadoop103 module] mkdir -p /opt/cloudera/parcels
[root@hadoop104 module] mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-paecels
# 最后分发 cloudera目录到其他节点
xsync /opt/cloudera
3. 启动Cloudera Manager
注意:启动过程非常慢,Manager启动成功需要等待5分钟左右,过程中会在数据库中创建对应的表需要耗费一些时间.
# 启动server
/opt/module/cm/cm-5.12.1/etc/init.d/cloudera-scm-server start|stop
Starting cloudera-scm-server.........
# 启动agent
[root@host1 cm] /opt/module/cm/cm-5.12.1/etc/init.d/cloudera-scm-agent start|stop
[root@host2 cm] /opt/module/cm/cm-5.12.1/etc/init.d/cloudera-scm-agent start|stop
[root@host3 cm] /opt/module/cm/cm-5.12.1/etc/init.d/cloudera-scm-agent start|stop
# 检验是否安装成功
netstat -anp | grep 7180
访问 http://hadoop102:7180
账号: admin 密码:admin
4. CM集群的部署
4.1 同意协议和条款
4.2 选择免费
1. 选择Cloudera Express 免费版本、选择继续
4.3 指定主机
1. 选择当前管理的主机
2. 宣布勾选✅
3. 选择CDH的版本 5.12.1.p0.3 点击继续
4. 等待下载、分配、解压、激活