CDH 5.16.1 离线部署 & 通过 CDH 部署 Hadoop 服务
参考
- Cloudera Enterprise 5.16.x
- Installing Cloudera Manager, CDH, and Managed Services
- Installation Path B - Manual Installation Using Cloudera Manager Packages
一. 环境
1.1 系统节点信息
| Hostname | IP | CPU(cores) | Memory(GB) | OS | Service | Remark |
|---|---|---|---|---|---|---|
| master | 172.30.200.75 | 2 | 4 | centos 7.5 | jdk, cloudera-scm-server, mysql | 实际部署后,master节点也需要部署cloudera-scm-agent服务,或采用4个slave节点 |
| slave01 | 172.30.200.76 | 2 | 4 | centos 7.5 | jdk, cloudera-scm-agent | |
| slave02 | 172.30.200.77 | 2 | 4 | centos 7.5 | jdk, cloudera-scm-agent | |
| slave03 | 172.30.200.78 | 2 | 4 | centos 7.5 | jdk, cloudera-scm-agent |
1.2 软件版本
相关软件放置在/usr/local/src/目录。
| Soft | Version | Download | Remark |
|---|---|---|---|
| CM(Cloudera Manager) | cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz |
bin包,根据版本下载 | |
| CDH parcel | CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel |
根据版本下载 | 软件安装包 |
| CDH parcel.sha | CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1 |
根据版本下载 | 软件包hash码 |
| CDH manifest.json | manifest.json |
根据版本下载 | 版本说明文件 |
| JDK | jdk-8u181-linux-x64.tar.gz |
bin包,根据版本下载 | |
| MySQL | mysql-5.7.24-el7-x86_64.tar.gz |
bin包,根据版本下载 | 存放Cloudera Manager配置文件 |
| MySQL-connector-Java | mysql-connector-java-8.0.13.jar |
jar包,根据版本下载 | JDBC |
二. 准备工作
2.1 部分预配置
所有节点执行以下操作:
- 永久关闭防火墙(
firewalld或iptables); - 永久关闭
selinux; - 设置
ntp。
2.2 设置hosts
- 所有节点设置/etc/hosts
cat << EOF >> /etc/hosts # hadoop nodes
172.30.200.75 master
172.30.200.76 slave01
172.30.200.77 slave02
172.30.200.78 slave03
EOF
2.3 免密访问设置
在所有节点生成秘钥
ssh-keygen -t rsa
在master节点生成
authorized_keys文件cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
在master节点执行,将集群每个节点的公钥
id_rsa.pub放入master节点的authorized_keys文件中for i in {1..3}; do ssh root@slave0$i cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys; done
在master节点执行,将master节点的
authorized_keys文件放置到集群每个节点的/root/.ssh/目录,依然命名位authorized_keys- 最终的效果是集群中所有节点两两相互免密访问;
- 注意:首次登陆时有
公钥检查,可通过在/etc/ssh/ssh_config文件中设置StrictHostKeyChecking no绕过,或使用-o参数跳过。
for i in {1..3}; do scp /root/.ssh/authorized_keys root@slave0$i:/root/.ssh/authorized_keys; done
2.4 安装JDK
所有节点都需要安装JDK。
安装JDK
cd /usr/local/src
tar -zxvf jdk-8u181-linux-x64.tar.gz
mkdir -p /usr/java
mv jdk1.8.0_181/ /usr/java/ # 设置软链接,方便升级替换
ln -s /usr/java/jdk1.8.0_181/ /usr/java/current
设置变量
cat << EOF >> /etc/profile # JDK
export JAVA_HOME=/usr/java/current
export JRE_HOME=/usr/java/current/jre
export PATH=$PATH:/usr/java/current/bin
export CLASSPATH=./:/usr/java/current/lib:/usr/java/current/jre/lib
EOF
验证
# 加载变量
source /etc/profile # 验证
java -version
2.5 安装MySQL
只有master节点需要安装MySQL。
卸载系统自带的相关数据库
rpm -qa | grep mysql
rpm -qa | grep mariadb # --nodeps:不检查依赖
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
部署MySQL
# 采用bin包部署,解压后直接使用
cd /usr/local/src
tar -zxvf mysql-5.7.24-el7-x86_64.tar.gz -C /usr/local/
mv /usr/local/mysql-5.7.24-el7-x86_64/ /usr/local/mysql
账号与权限
# 添加账号
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql # 创建"data"目录
mkdir /data # 赋权
chown -R mysql:mysql /usr/local/mysql/
chown -R mysql:mysql /data/
初始化MySQL
- 获取
root@localhost账号的初始密码Hqe6x<Re4jhK
cd /usr/local/mysql/
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data
- 获取
设置变量
cat << EOF >> /etc/profile # MySQL
export PATH=$PATH:/usr/local/mysql/bin
EOF # 加载变量
source /etc/profile # 软链接
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
设置开机启动
# 复制开机启动脚本到系统服务
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chown mysql:mysql /etc/rc.d/init.d/mysqld # 修改默认的"basedir"与"datadir"
vim /etc/rc.d/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data # 添加开机启动脚本
chkconfig --add mysqld
chkconfig --level 35 mysqld on
文件路径:log && pid && socket
# 日志路径
mkdir -p /var/log/mysqld
touch /var/log/mysqld/mysqld.log
chown -R mysql:mysql /var/log/mysqld/ # pid路径
mkdir -p /var/run/mysqld
chown -R mysql:mysql /var/run/mysqld/ # socker路径
mkdir -p /var/lib/mysqld
chown -R mysql:mysql /var/lib/mysqld/
ln -s /var/lib/mysqld/mysql.sock /tmp/mysql.sock
设置my.cnf文件
# 注意"log-error","pid-file"与"socket"的路径
mkdir -p /usr/local/mysql/etc
cat << EOF >> /usr/local/mysql/etc/my.cnf
[mysqld]
character-set-server=utf8
max_connections = 3000
log-error=/var/log/mysqld/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/lib/mysqld/mysql.sock
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysql]
default-character-set=utf8
EOF # 软链接
ln -s /usr/local/mysql/etc/my.cnf /etc/my.cnf # 赋权
chown -R mysql:mysql /usr/local/mysql/etc/
启动MySQL服务
# 启动服务
service mysqld start # 验证
service mysqld status
设置MySQL账号密码与登陆权限
# 使用初始化密码登陆
mysql -uroot -p # 修改密码,注意不能使用"$"等特殊符号
set password=password('cdh12#hadoop');
flush privileges; # 远程登陆权限
grant all privileges on *.* to 'root'@'%' identified by 'cdh12#hadoop' with grant option;
flush privileges; # 查看账号
select user, host, authentication_string from mysql.user;
三. Cloudera Manager安装
3.1 部署CM Server & Agent
在所有节点创建CM目录
/opt/cloudera-managermkdir /opt/cloudera-manager
在master节点向其余节点分发
cloudera-manager-centos7-cm5.16.1_x86_64.tar.gzfor i in {1..3}; do scp /usr/local/src/cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz root@slave0$i:/usr/local/src/ ; done
在所有节点解压
cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz到/opt/cloudera-manager/目录tar -zxvf /usr/local/src/cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz -C /opt/cloudera-manager/
在所有slave节点修改
/opt/cloudera-manager/cm-5.16.1/etc/cloudera-scm-agent/config.ini的server_host参数为master节点ip或主机名sed -i "s/server_host=localhost/server_host=master/g" /opt/cloudera-manager/cm-5.16.1/etc/cloudera-scm-agent/config.ini
3.2 账号 && 权限
- 在所有节点创建
cloudera-scm账号,这是CM相关服务使用的默认账号# 禁止使用"cloudera-scm"账号登陆
useradd --system --home=/opt/cloudera-manager/cm-5.16.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
- 在所有节点为
/opt/cloudera-manager目录赋权chown -R cloudera-scm:cloudera-scm /opt/cloudera-manager
3.3 设置开机启动
- 在master节点设置系统服务
# 设置使用"cloudera-scm-server"为系统启动服务
cp /opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-server /etc/rc.d/init.d/
chown cloudera-scm:cloudera-scm /etc/rc.d/init.d/cloudera-scm-server # 修改"CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}"的路径
vim /etc/rc.d/init.d/cloudera-scm-server
CMF_DEFAULTS=/opt/cloudera-manager/cm-5.16.1/etc/default # 添加系统启动服务
chkconfig --add cloudera-scm-server
chkconfig --level 35 cloudera-scm-server on
checkconfig --list
- 在所有slave节点设置系统服务
# 设置使用"cloudera-scm-agent"为系统启动服务
cp /opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-agent /etc/rc.d/init.d/
chown cloudera-scm:cloudera-scm /etc/rc.d/init.d/cloudera-scm-agent # 修改"CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}"的路径"-/etc/default"
vim /etc/rc.d/init.d/cloudera-scm-agent
CMF_DEFAULTS=${CMF_DEFAULTS:/opt/cloudera-manager/cm-5.16.1/etc/default} # 添加系统启动服务
chkconfig --add cloudera-scm-agent
chkconfig --level 35 cloudera-scm-agent on
checkconfig --list
3.4 初始化数据库
在所有节点设置MySQL驱动(JDBC);
注意:部署JDBC在任意节点,则后续"CDH安装配置"阶段
Reports Manager被分配在任意节点都可以cp /usr/local/src/mysql-connector-java-8.0.13.jar /opt/cloudera-manager/cm-5.16.1/share/cmf/lib/
chown cloudera-scm:cloudera-scm /opt/cloudera-manager/cm-5.16.1/share/cmf/lib/mysql-connector-java-8.0.13.jar
在master节点重启MySQL服务
service mysqld restart
在任意节点初始化CM
注意:Cloudera服务需要的相关
database如下:- 表中给出的是CM相关服务配置文件中默认的
database与user,但不是必须使用; database在数据库中可直接创建,但CM初始化时如果没有database,则自动创建。
Service Database User Cloudera Manager Server scm scm Activity Monitor amon amon Reports Manager rman rman Hue hue hue Hive Metastore Server metastore metastore Sentry Server sentry sentry Cloudera Navigator Audit Server nav nav Cloudera Navigator Metadata Server navms navms Oozie oozie oozie # 格式:scm_prepare_database.sh [options] (postgresql|mysql|oracle) database username [password]
# scm_prepare_database.sh:创建与配置CMS需要的数据库脚本,默认在"/opt/cloudera-manager/cm-5.16.1/share/cmf/schema/"目录;
# postgresql|mysql|oracle:必选项,数据库类型;
# database:必选项,针对postgresql|mysql,创建SCM数据库;针对oracle,填写sid;
# username:必选项,SCM数据库的账号;
# password:选填项,SCM数据库的账号密码,如果不指定,会提示输入;
# options:
# -h:数据库主机ip或hostname,默认是"localhost";
# -u:数据库账号,需要具备增删改查的权限,默认是"root";
# -p:账号密码,默认无密码;
# --scm-host:SCM server主机名,默认是"localhost"
/opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % scm scm scm_pass
/opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % amon amon amon_pass
/opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % rman rman rman_pass
/opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % hue hue hue_pass
/opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % metastore metastore metastore_pass
/opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % sentry sentry sentry_pass
/opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % nav nav nav_pass
/opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % navms navms navms_pass
/opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % oozie oozie oozie_pass
返回如下信息,表示配置成功
[main] INFO com.cloudera.enterprise.dbutil.DbCommandExecutor - Successfully connected to database.
All done, your SCM database is configured correctly!
- 表中给出的是CM相关服务配置文件中默认的
3.5 创建本地parcel源
在master节点制作本地parcel源
# 创建本地parcel源目录
mkdir -p /opt/cloudera/parcel-repo # 将parcel相关安装包放置到"/opt/cloudera/parcel-repo"目录;
# 说明:"/opt/cloudera/parcel-repo"目录可放置多套parcel安装包;
# 将"CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1"重命名为"CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha",否则会重新下载"CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel"安装包
mv /usr/local/src/CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel /opt/cloudera/parcel-repo/
mv /usr/local/src/CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha
mv /usr/local/src/manifest.json /opt/cloudera/parcel-repo/ # 赋权
chown -R cloudera-scm:cloudera-scm /opt/cloudera/
在所有salve节点创建软件安装目录
mkdir -p /opt/cloudera/parcels # 赋权
chown -R cloudera-scm:cloudera-scm /opt/cloudera/
3.6 启动CM服务
- 在master节点启动
cloudera-scm-server服务# "cloudera-scm-server"启动需要连接数据库,监听端口启动会延迟
service cloudera-scm-server restart
service cloudera-scm-server status -l # 通过启动后的状态查看,脚本需要执行"pstree"命令,需要安装依赖包
yum install psmisc -y
- 在所有salve节点启动
cloudera-scm-agent服务yum install psmisc -y
service cloudera-scm-agent restart
service cloudera-scm-agent status -l
四. 安装CDH
4.1 CDH安装配置
- 浏览器访问CM:http://172.30.200.75:7180
- 默认账号/密码:
admin/admin

- 最终用户许可条款与条件

- 部署版本,选择
Cloudera Enterprise 试用版

- 版本与服务说明

cloudera-scm-agent正常启动后,可发现相应的节点,指定集群服务的安装节点

- 选择CDH版本

- 集群安装,如果本地
parcel源配置正确,则"下载"阶段瞬间完成,其余阶段视节点数与内部网络情况决定

- 检查主机正确性(需要一些时间),针对slave节点有两个优化建议:
- 1.建议将
/proc/sys/vm/swappiness设置为最大值10。swappiness值控制操作系统尝试交换内存的积极;swappiness=0:表示最大限度使用物理内存,之后才是swap空间;swappiness=100:表示积极使用swap分区,并且把内存上的数据及时搬迁到swap空间;- 如果是混合服务器,不建议完全禁用swap,可以尝试降低
swappiness。 - 临时调整:
sysctl vm.swappiness=10
- 永久调整:
cat << EOF >> /etc/sysctl.conf # Adjust swappiness value
vm.swappiness=10
EOF
- 2.已启用透明大页面压缩,可能会导致重大性能问题,建议禁用此设置。
- 临时调整:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
- 永久调整:
cat << EOF >> /etc/rc.d/rc.local # Disable transparent_hugepage
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
EOF # centos7.x系统,需要为"/etc/rc.d/rc.local"文件赋予执行权限
chmod +x /etc/rc.d/rc.local
- 临时调整:
- 1.建议将
- 集群设置,选择服务进行安装,这里选择
自定义服务的HDFS服务

- 集群设置,自定义角色分配,默认即可

- 集群设置,
Reports Manager数据库名称rman,用户名rman

- 集群设置,审核更改,默认即可

- 集群设置,首次运行

- 集群设置,服务安装完成

- Cloudera Manager 主页

- Cloudera Manager HDFS 服务汇总

CDH 5.16.1 离线部署 & 通过 CDH 部署 Hadoop 服务的更多相关文章
- CDH构建大数据平台-Kerberos高可用部署【完结篇】
CDH构建大数据平台-Kerberos高可用部署[完结篇] 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装Kerberos相关的软件包并同步配置文件 1>.实验环境 ...
- CDH5.16.1离线集成Phoenix
1.安装环境 Centos 7.6 CDH 5.16.1 2.下载Phoenix所需的parcel包 3.上传parcel包到ClouderaManager server所在的节点上 /opt/clo ...
- 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(五):测试项目
基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...
- 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(四):安装MySQL数据库
基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...
- 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(三):设置上传文件夹权限(这里测试用完全共享)
基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...
- 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(二):Apache安装和配置
基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...
- 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django
近期开始学习基于Linux平台的Django开发,想配置一台可以发布的服务器,经过近一个月的努力,终于掌握了基于Apache和mod-wsgi插件的部署模式,自己也写了一个教程,一是让自己有个记录,二 ...
- windows下百度离线人脸识别本地部署与使用(nodejs做客户端,c++做服务端,socket做通信)
1.离线人脸识别本地部署 详情请阅读百度人脸识别官网 2.nodejs做socket通信的客户端 为什么不直接通过调用c++编译的exe获得人脸识别结果? 原因:exe运行时会加载很多模型而消耗很多时 ...
- K8S从入门到放弃系列-(16)Kubernetes集群Prometheus-operator监控部署
Prometheus Operator不同于Prometheus,Prometheus Operator是 CoreOS 开源的一套用于管理在 Kubernetes 集群上的 Prometheus 控 ...
随机推荐
- Skype 服务器客户端策略参数优化
1.skype通讯录原理 对于skype客户端的通讯录同步,首先说说原理,通讯簿信息是从AD同步的skype前端服务器(每天1:30),在从前端服务器同步的客户端(大概1小时内同步一次). skype ...
- Java AWT
AWT是抽象窗口工具包,是API为Java 程序提供的建立图形用户界面GUI (Graphics User Interface)工具集,AWT可用于Java的applet和applications中. ...
- 四、 git关联远程仓库及推送
接之前笔记,在 github上建立与本地同名的仓库 demo 关联远程仓库 1. https 模式 远程库的名字就是origin,这是Git默认的叫法 git remote add origi ...
- BZOJ2839:集合计数(容斥,组合数学)
Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007. ...
- sql优化常见的集中方法
在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 ord ...
- 加强对HEAD 请求的处理(转贴)
最近发现有些搜索引擎爬虫在抓取数据的时候,先是通过一个HEAD 请求获取response的header 信息,然后再通过GET 请求获取response 的body信息(即页面的内容)——先发送HEA ...
- requests sslerror
比较烦人的情况: 使用pip安装任何包和requests库请求https站都会提示SSL错误,试了网上很多方法,还是没解决,最后升级pip和requests库解决,特做记录. 升级pip curl h ...
- AOP实现拦截对象以及获取切入目标方法和注解
AOP实现拦截对象以及获取切入目标方法和注解 一.JoinPoint是什么? AspectJ使用org.aspectj.lang.JoinPoint接口表示目标类连接点对象,如果是环绕增强时,使用 o ...
- win10下nvidia控制面板看不到
64位win10,nvidia控制面板看不到,控制面板里没有,服务里也没有nvidia相关服务,但驱动已经安装了. 解决办法: 1.下载GeForce Experience并安装 . 2.通过GeFo ...
- OpenCV——字符提取并保存
截取图中上方数码管中的数字 基本思路: 1.将图像转化为灰度图 2.截取ROI区域 3.二值化 4.循环遍历每一行和每一列,得到字符的坐标 5.截取并保存 #include <opencv2/o ...