物理机离线安装CDH6
1.Cloudera CDH简介
1.1 原生的Hadoop有哪些不足
- 版本管理混乱
- 部署过程繁琐、升级过程复杂
- 兼容性差
- 安全性低
1.2 什么是CDH和Cloudera Manager
- CDH (Cloudera’s Distribution Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。
- Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark、Kafka、Hue、Hbase等服务的安装配置管理做了极大简化。
1.3 企业中使用比较多的Hadoop发行版
- CDH
- HDP (hortonworks的hadoop发行版,后被Cloudera收购)
1.4Hadoop自动化部署管理平台
- Cloudera Manager(安装CDH的管理平台)
- Ambari (安装HDP的管理平台)
1.5 Cloudera Manager架构图
2.安装环境准备
2.1安装环境准备
-
10台dell 32G服务器
-
CDH6.3.1
2.3配置服务器环境(CentOS 7.7)
序号 | 主机名 | 内网IP | 系统版本 | 安装角色 |
---|---|---|---|---|
1 | node-1 | 192.168.1.201 | CentOS7.7 | clouder manager&clouder agent |
2 | node-2 | 192.168.1.202 | CentOS7.7 | clouder agent |
3 | node-3 | 192.168.1.203 | CentOS7.7 | clouder agent |
4 | node-4 | 192.168.1.204 | CentOS7.7 | clouder agent |
5 | node-5 | 192.168.1.205 | CentOS7.7 | clouder agent |
6 | node-6 | 192.168.1.206 | CentOS7.7 | clouder agent |
7 | node-7 | 192.168.1.207 | CentOS7.7 | clouder agent |
8 | node-8 | 192.168.1.208 | CentOS7.7 | clouder agent |
9 | node-9 | 192.168.1.209 | CentOS7.7 | clouder agent |
10 | node-10 | 192.168.1.210 | CentOS7.7 | clouder agent |
- 修改主机名
- 修改ip地址
- 修改ip地址和主机名的映射关系
- 配置ssh免密码登录
- 关闭防火墙
#关闭防火墙,centos7中的防火墙名为firewalld
systemctl stop firewalld
#或者使用service firewalld stop
#防火墙开机不启动
systemctl disable firewalld
#或者使用chkconfig firewalld off
- 关闭SelLinux
vi /etc/selinux/config
3.下载CM和CDH
注意:离线安装先要下载CM和对应的CDH
- cm和cdh的资源网址
https://archive.cloudera.com/
3.1 下载cm6
- 下载地址
https://archive.cloudera.com/cm6/6.2.1/redhat7/yum/RPMS/x86_64/
3.2 下载cdh6
https://archive.cloudera.com/cdh6/6.2.1/parcels/
4.构建本地yum源
4.1 在node-1上安装http,让其他机器可以在node-1上下载依赖的rpm包
yum install -y httpd
4.2 启动httpd服务器
service httpd start
4.3 使用浏览器方法httpd服务器,默认端口80
http://192.168.1.201
4.4 进入到httpd的资源目录
cd /var/www/html
#创建两个目录,分别安装rpm包和parcel
mkdir cdh6
mkdir cm6
4.5 将下载好的cm6的rpm包上传到cm6目录
4.6将下载好的cdh6的parcel上传到cdh6目录
4.7 制作本地源【在node-1上】
# 下载createrepo命令,该命令可以在指定目录场景yum源的描述meta信息
yum install -y createrepo
# 进入到cm6安装包的httpd资源位置
cd /var/www/html/cm6/
# 创将yum源的描述meta信息
createrepo .
4.8 使用浏览器访问http的cm6和cdh6目录检测是否可用
4.8 分别在所有节点上添加yum源的配置文件
#在所有节点上执行
cat >> /etc/yum.repos.d/cm6.repo << EOF
[cm6-local]
name=cm6-local
baseurl=http://node-1/cm6
enabled=1
gpgcheck=0
EOF
- 或使用批量的脚本
for i in {7..10}
do
ssh node-$i '
cat >> /etc/yum.repos.d/cm6.repo << EOF
[cm6-local]
name=cm6-local
baseurl=http://node-1/cm6
enabled=1
gpgcheck=0
EOF
exit'
done
4.9 查看配置的yum源是否生效
yum clean all
yum repolist
5.安装cm6和其他依赖
5.1 在所用节点安装依赖
yum install -y bind-utils libxslt cyrus-sasl-plain cyrus-sasl-gssapi portmap fuse-libs /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 MySQL-python fuse
5.2 安装管理节点
- 在【node-1】上安装cloudera-manager-server、cloudera-manager-server-db-2、cloudera-manager-daemons、cloudera-manager-agent
yum install -y oracle-j2sdk1.8-1.8.0+update181-1.x86_64
yum install -y cloudera-manager-daemons cloudera-manager-server cloudera-manager-server-db-2 postgresql-server
5.3 安装mysql
注意:CentOS7 yum源不再按照默认的MySQL了,而是使用MariaDB
- 安装MariaDB
yum install -y mysql mysql-devel
yum install -y mariadb mariadb-server
- 初始化MariaDB并修改密码
service mariadb start
chkconfig mariadb on
/usr/bin/mysql_secure_installation
- 注意,由于该数据库存储的信息非常重要,所以生成环境建议配置成高可用的集群,我在后面的教程中会配置mariadb galera cluster实现高可用
5.4 初始化管理节点数据库
- 拷贝mysql-connector到/usr/share/java目录,并且要改名mysql-connector-java.jar
mkdir /usr/share/java/
cp mysql-connector-java-5.1.47.jar /usr/share/java/mysql-connector-java.jar
- 初始化cloudera-manager的MySQL数据库
注意,要使用配套的JDK,不然有坑
#先安装JDK
yum install -y oracle-j2sdk1.8-1.8.0+update181-1.x86_64
#执行数据库初始脚本
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h localhost -uroot -p123456 --scm-host localhost scm root 123456
5.5 安装agent节点
- 在所有的子节点上安装jdk、cloudera-manager-daemons、cloudera-manager-agent
#安装JDK(cdh自带的)、cloudera-manager-daemons和cloudera-manager-agent
yum install -y oracle-j2sdk1.8-1.8.0+update181-1.x86_64
yum install -y cloudera-manager-daemons cloudera-manager-agent
- 修改所有agent节点的配置文件,让agent的地址指向cloudera-manager-server
vi /etc/cloudera-scm-agent/config.ini
#或使用下面sed命令批量替换
sed -i "s/server_host=localhost/server_host=node-1/g" /etc/cloudera-scm-agent/config.ini
5.6 启动Cloudera Manager Server
- 启动Cloudera Manager Server
#systemctl start cloudera-scm-server
#systemctl enable cloudera-scm-server
service cloudera-scm-server start
chkconfig cloudera-scm-server on
5.7 启动cloudera-scm-agent
- 启动所有子节点的agent
#systemctl start cloudera-scm-agent
#systemctl enable cloudera-scm-agent
service cloudera-scm-agent start
chkconfig cloudera-scm-agent on
6.登录管理界面
6.1 初始化Clouder Manager
- 使用浏览器访问主节点的7180端口,用户名密码默认都是admin
- 点击继续
- 勾选接受条款,点击继续
- 选择企业试用版
- 点击继续开始安装
- 输入集群名称,点击继续
- 选择要添加的节点
- 修改警告
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.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local
- 批量修改for循环命令
for i in {1..10}
do
ssh node-$i '
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.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local
exit'
done
- 批量修改for循环命令
for i in {1..10}
do
ssh node-$i '
echo 10 > /proc/sys/vm/swappiness
exit'
done
- 重新运行检查
- 选择要按照的服务组件
- 可以根据需要,进行按照
- 这里先自定义有选择性的安装
6.2 安装zookeeper
- 先安装zookeeper
- 选择安装zk的节点,zk安装在node-2、node-3、node-4
- cloudder的自带服务都安装在了node-1上了
- 点击继续
- 创建
- 在MySQL上创建一个普通用户doit【root用户权限过高】
CREATE USER doit IDENTIFIED BY 'doit123';
- 创建信息上报的数据库
CREATE DATABASE reports DEFAULT CHARSET utf8;
- 创建活动监控的数据库
CREATE DATABASE activity DEFAULT CHARSET utf8;
- 允许mysql远程登录
#授予权限
GRANT ALL PRIVILEGES on reports.* TO doit@'%' IDENTIFIED BY 'doit123';
GRANT ALL PRIVILEGES on activity.* TO doit@'%' IDENTIFIED BY 'doit123';
GRANT ALL PRIVILEGES on audit.* TO doit@'%' IDENTIFIED BY 'doit123';
GRANT ALL PRIVILEGES on metadata.* TO doit@'%' IDENTIFIED BY 'doit123';
FLUSH PRIVILEGES;
- 拷贝mysql的连接驱动jar到其他节点
scp -r /usr/share/java/ node-2.51doit.cn:/usr/share/
-
– 安装yarn
- 安装hive
- 创建hive的元数据库
CREATE DATABASE hive DEFAULT CHARSET utf8;
- 允许mysql远程登录
#授予权限
GRANT ALL PRIVILEGES on hive.* TO doit@'%' IDENTIFIED BY 'doit123';
FLUSH PRIVILEGES;
for i in {2..10}
do
ssh node-$i 'mkdir -p /usr/share/java; exit;'
scp mysql-connector-java-5.1.47.jar node-$i:/usr/share/java/mysql-connector-java.jar
done
- 创建hive的元数据库
CREATE DATABASE hue DEFAULT CHARSET utf8;
- 允许mysql远程登录
#授予权限
GRANT ALL PRIVILEGES on hue.* TO doit@'%' IDENTIFIED BY 'doit123';
FLUSH PRIVILEGES;
7.问题总结
- 切换用户
usermod -s /bin/bash hdfs
可以查看cloudera创建的用户
cat /etc/passwd
- 创建hive表时表名要使用飘号
create table `user2` (id int, name string, age int) row format delimited fields terminated by ',';
- 切换impla为hue的执行引擎,需要修改hue的配置,并且重启hue
如果有节点没有发现,可以查看agent的启动日志
less /var/log/cloudera-scm-agent/cloudera-scm-agent.log
-
如果一下agent无法启动,查看 https://blog.csdn.net/qq_34842671/article/details/82722067
-
如果在一台机器反复安装,可能是以前的进程没有清理
ps -ef | grep supervisord
#杀掉以前的进程
- 重启cloudera-scm-agent
systemctl restart cloudera-scm-agent
for i in {1..10}; do ssh node-$i.51doit.cn 'service cloudera-scm-agent stop && exit'; done
错误提示:
cloudera-scm-agent 已死,但 pid 文件仍存
解决办法:
for i in {2..10}; do ssh node-$i.51doit.cn 'rm -rf /var/lib/cloudera-scm-agent/cm_guid && exit'; done