一、了解CDH
在众多 Hadoop 版本中, CDH 是 Hadoop 众多分支中比较出色的版本, 它由Cloudera 发行和维护。CDH 基于 Apache 的 Hadoop 进行重新构建,提供了基于 Web 页面的群集部署和管理操作。
1.1 Hadoop
- 属于开源软件,采用Apache 2.0许可协议
- 官方版本称为社区版Hadoop
1.2 比较流行Hadoop版本
- Apache Hadoop
维护人员比较多,更新频率比较快,稳定性相对比较差 - Cloudera Hadoop(CDH)
Cloudera公司的发行版本,基于Apache Hadoop的二次开发,优化了组件兼容和交互接口、简化安装配置、增加Cloudera兼容特
1.3 Cloudera Hadoop(CDH)概述
- Hadoop发行版除了社区的Apache hadoop外,Cloudera、Hortonworks、MapR、EMC、IBM、INTEL、华为等都提供自己的商业版本
- CDH 基于 Apache 的 Hadoop 进行重新构建,提供了基于 Web 页面的群集部署和管理操作
- CDH常用安装方式
Cloudera Manager在线安装
Parcel安装
YUM安装·RPM安装
二、部署CDH
环境配置
-
资源分配
cdhmaster节点 至少2C6G
cdhslave01/cdhslave02节点至少2C4G
-
修改主机名
hostnamectl set-hostname cdhmaster hostnamectl set-hostname cdhslave01 hostnamectl set-hostname cdhslave02
-
所有节点添加hosts解析
cat >> /etc/hosts << EOF 172.16.10.10 cdhmaster 172.16.10.11 cdhslave01 172.16.10.12 cdhslave02 EOF
-
关闭防火墙
systemctl stop firewalld systemctl disable firewalld
-
关闭内核安全机制
sed -i "s/.*SELINUX=.\*/SELINUX=disabled/g" /etc/selinux/config
-
时间同步
yum -y install chrony systemctl start chronyd chronyc sources -v
2.1 安装JDK环境
- 所有集群节点都要执行
# 解压
tar zxvf jdk-8u171-linux-x64.tar.gz -C /opt
# 改名
mv /opt/jdk1.8.0_171 /opt/jdk
# 修改环境变量
cat >> /etc/profile << EOF
export JAVA_HOME=/opt/jdk
export PATH=\$JAVA_HOME/bin:\$PATH
EOF
# 刷新环境变量
source /etc/profile
# 查看版本
java -version
2.2 配置免密登录
- 仅在cdhmaster节点执行
- cdhmaster 节点需要通过 SSH 对 cdhslave 节点进行管理,需要配置 SSH 免密码登录
ssh-keygen
ssh-copy-id cdhslave01
ssh-copy-id cdhslave02
2.3 交换分区和大页设置
-
所有集群节点都要执行
-
禁用交换分区和透明大页,否则会在安装配置 CDH 群集环境检测中报错
sysctl -w vm.swappiness=0
echo “vm.swappiness=0” >> /etc/sysctl.conf
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never >/sys/kernel/mm/transparent_hugepage/enabled
echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.d/rc.local
echo "echo never > /sys/kernel/mm/transparent_hughugepage/enabled" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
2.4 部署数据库
- 仅在cdhmaster节点执行
#卸载mariadb
for i in $(rpm -qa | grep mariadb);do rpm -e ;done
# 安装mysql
yum -y install libaio
# 创建用户
useradd -s /sbin/nologin mysql
# 解压msyql安装
tar zxf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
# 移动安装路径
mv mysql-5.7.22-linux-glibc2.12-x86_64 /usr/local/mysql
# 初始化数据库
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data
# 复制mysql服务启动文件
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 上传mysql的配置文件my.cnf(需要手写)文件并移动到/etc/下
mv my.cnf /etc/
# 启动mysql
/etc/init.d/mysqld start
# 创建软链接,方便使用mysql命令
ln -s /usr/local/mysql/bin/mysql /usr/sbin/
# 登录mysql
mysql -uroot -p
# 修改密码
alter user 'root'@'localhost' identified by '123456';
# 创建数据库并授权
CREATE DATABASE hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE DATABASE oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
grant all privileges on *.* to 'cdh'@'localhost' identified by '123456' with grant option;
grant all privileges on *.* to 'cdh'@'%' identified by '123456' with grant option;
grant all privileges on *.* to 'root'@'127.0.0.1' identified by '123456' with grant option;
grant all privileges on *.* to 'scm'@'127.0.0.1' identified by '123456' with grant option;
# 刷新权限
flush privileges;
#退出mysql
exit
2.5 部署CDH
2.5.1 安装依赖包
- 所有集群节点都要执行
yum -y install psmisc libxslt libxslt-python perl
2.5.2 安装cloudera-manager
- 仅在cdhmaster节点执行
tar zxf cloudera-manager-centos7-cm5.14.0_x86_64.tar.gz -C /opt/
# 改名
mv /opt/cm-5.14.0/ /opt/cm
2.5.3 安装JDBC驱动
- 仅在cdhmaster节点执行
tar zxf mysql-connector-java-5.1.46.tar.gz
cd mysql-connector-java-5.1.46/
chmod +x mysql-connector-java-5.1.46-bin.jar
cp mysql-connector-java-5.1.46-bin.jar /opt/cm/share/cmf/lib/mysql-connector-java.jar
mkdir /usr/share/java
cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar
2.5.4 创建Cloudera Manager 用户
- 所有集群节点都要执行
useradd --system --home=/opt/cm/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
2.5.5 初始化 Cloudera Manager 数据库
- 仅在cdhmaster节点执行
/opt/cm/share/cmf/schema/scm_prepare_database.sh mysql cm -h localhost -uroot -p'123456' scm '123456'
2.5.6 修改 Cloudera Manager 配置文件
- 仅在cdhmaster节点执行
# 在cdhmaster主节点上修改 Cloudera Manager 的配置文件,将 server_host 设置项的值改为主节点 cdhmaster 主机的 IP 地址,让从节点去找主节点
vim /opt/cm/etc/cloudera-scm-agent/config.ini
server_host=172.16.10.10
# 将文件推送到slave节点,同步 Cloudera Manager 数据到其他节点
scp -r /opt/cm/ cdhslave01:/opt/
scp -r /opt/cm/ cdhslave02:/opt/
2.5.7 上传 Parcel 文件
- 仅在cdhmaster节点执行
mv manifest.json CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel.sha1 /opt/cloudera/parcel-repo/
# 改名
cd /opt/cloudera/parcel-repo/
mv CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel.sha1 CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel.sha
2.5.8 启动Cloudera Manager 服务
- 仅在cdhmaster节点执行
#添加认证
echo "com.cloudera.cmf.db.useSSL=true" >> /opt/cm/etc/cloudera-scm-server/db.properties
# 创建cloudera-scm-server服务启动目录
mkdir /var/lib/cloudera-scm-server
# 启动
/opt/cm/etc/init.d/cloudera-scm-server start
/opt/cm/etc/init.d/cloudera-scm-agent start
# 查看端口(时间会比较长)
netstat -anpt | grep 7180
- slave节点启动cloudera-scm-agent
- 在slave节点执行
/opt/cm/etc/init.d/cloudera-scm-agent start
# 查看端口
netstat -anpt | grep -E '19001|9000'
2.6 安装配置CDH群集
2.6.1 使用 CDH 管理控制台
打开浏览器,并在地址栏输入“http://172.16.10.10:7180”,将登录 Cloudera Manager的 Web 管理控制台,默认的用户名和密码分别是 admin 和 admin
- 到这先不要点继续,回到虚拟机中,执行以下操作:
- 在slave节点执行
# 解压mysql-connector
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/cloudera/parcels/CDH/lib/hive/lib/mysql-connector-java.jar
cp mysql-connector-java-5.1.46-bin.jar /opt/cloudera/parcels/CDH/lib/hadoop/lib/mysql-connector-java.jar
cp mysql-connector-java-5.1.46-bin.jar /var/lib/oozie/mysql-connector-java.jar
# 查看是否复制成功
ll /opt/cloudera/parcels/CDH/lib/hive/lib/mysql-connector-java.jar
ll /opt/cloudera/parcels/CDH/lib/hadoop/lib/mysql-connector-java.jar
ll /var/lib/oozie/mysql-connector-java.jar
- 然后回到浏览器点击 继续
2.6.2 群集设置
- 选择自定义服务,选择HDFS/Hive/Oozie/YARN
- 选择之前已经创建的数据库,输入用户和密码,并测试数据库连接,hive
- 安装完成后需要回到master节点安装kafka
2.6.3 配置并添加 Kafka 服务
-
上传 Kafka 介质
-
在master节点执行
mv KAFKA-1.2.0.jar /opt/cloudera/csd
mv KAFKA-2.0.2-1.2.0.2.p0.5-el7.parcel /opt/cloudera/parcel-repo
mv KAFKA-2.0.2-1.2.0.2.p0.5-el7.parcel.sha1 /opt/cloudera/parcel-repo/KAFKA-2.0.2-1.2.0.2.p0.5-el7.parcel.sha
- 分配、激活 Parcel
- 先添加zookeeper服务,在添加ksfka服务
- 添加kafka服务