一、准备阶段
1.1 原生Hadoop的问题
- 版本管理过于混乱
- 部署过程较为繁琐,升级难度较大
- 兼容性差
- 安全性低
1.2 CDH和CM(Cloudera Manager)
CDH(Cloudera’s Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。
CDH优点:
1、提供基于web的用户界面,操作方便
2、集成的组件丰富,不需要担心版本问题
3、搭建容易,运维比原生hadoop方便
CDH分为Cloudera Manager管理平台(CM)和CDH parcel(parcel包含各种组件的安装包),需要先安装CM,再安装parcel
CM(Cloudera Manager)提供了一个管理和监控Hadoop等大数据服务的web界面,能让我们方便安装大数据生态圈的大部分服务。
安装版本说明:
CM 6.3.1,CDH 6.3.2 (6.3.3版本及以上的要收费了)
Cloudera 官网下载比较慢,这里我给大家提供下载的文件,关注公众号【猫头鹰数据分析】,后台回复【cdh】即可获取了
文件列表如下
大数据组件版本对照:
我们打开官网的这个地址,选择6.3.2
https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_63_packaging.html#cdh_630_packaging
可以看到组件版本的支持情况
下载文件
CDH6.3.2 离线包:
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1
manifest.json
下载地址: https://archive.cloudera.com/cdh6/6.1.0/parcels/
CDH6 的CM 包:
cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm
oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
allkeys.asc
下载地址:
https://archive.cloudera.com/cm6/6.1.0/redhat7/yum/RPMS/x86_64/
由于我们有离线包,这里就不从官网下载了,我们把离线包都上传到服务器,这里我还是用的青云服务器,具体规划如下
主机名 | 系统 | 内存 | 磁盘 |
ss3(主节点) | Centos7.6 | 4G | 50G |
ss4 | Centos7.6 | 4G | 50G |
ss5 | Centos7.6 | 2G | 50G |
主节点上传如下文件
从节点上传如下文件
二、基础配置
2.1 hosts配置
修改hosts文件,末尾加配置:
命令:vi /etc/hosts
主节点ss3的IP ss3
从节点ss4的IP ss4
从节点ss5的IP ss5
2.2 SSH免密登录
做root用户无密钥认证
ssh-keygen ---一直回车到最后
cat id_rsa.pub >> authorized_keys
将所有的公钥导入authorized_keys 分发到 所有的 机器的.ssh/ 下面,会验证密码
ssh-copy-id ss4
测试ssh
2.3 安装jdk
这里我上传了一个gz的包
tar -xzvf jdk-8u181-linux-x64.tar.gz
解压后配置环境变量
vi ~/.bash_profile
JAVA_HOME=/software/jdk1.8.0_181
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export PATH
export JRE_HOME=$JAVA_HOME/jre
保存后执行 source ~/.bash_profile
检查java环境
注意,3台服务器都要配置好java
最后发现,自己安装的jdk CM好像检测不到,还是要安装CDH提供的jdk,具体可以参考我的解决方法 CDH6.3.2安装cloudera-manager-daemons出现JDK版本不兼容问题_猫头鹰数据的专栏-CSDN博客
2.4 安装NTP
yum -y install ntp 安装
service ntpd start 启动NTP时间服务器
chkconfig ntpd on 设置NTP开机自动启动
chkconfig | grep ntp 查看NTP是否正常运行
2.5 Mysql5.7安装
## 先卸载自带的数据库
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
## 查找并卸载老版本mysql
find / -name mysql|xargs rm -rf
##依赖
yum -y install perl
yum -y install libaio
## 安装
rpm -ivh mysql-community-common-5.7.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.34-1.el7.x86_64.rpm
# 查看状态及启动
systemctl status mysqld
systemctl start mysqld
systemctl disable mysqld # 关闭开机自启动,不用的时候关掉,占资源
## 查看临时密码
grep 'temporary password' /var/log/mysqld.log
## shell登录
mysql -uroot -p临时密码
## 直接设置密码会出现
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
## 修改密码策略
set global validate_password_policy=LOW;
set global validate_password_length=6;
set password=password('123456');
use mysql;
select host, user, authentication_string from user;
update user set host='%' where host="localhost";
## 登录
mysql -uroot -p123456
## 注意
# mysql5.6需要安装以下两个组件,否则无法安装agent
MySQL-shared-5.6.49-1.el7.x86_64.rpm
MySQL-shared-compat-5.6.49-1.el7.x86_64.rpm
# mysql5.7需要安装
mysql-community-libs-compat-5.7.34-1.el7.x86_64.rpm
创建元数据库和用户
## 先创建cmf, amon
create database cmf default charset utf8 collate utf8_general_ci;
grant all on cmf.* to 'cmf'@'%' identified by '123456';
create database amon default charset utf8 collate utf8_general_ci;
grant all on amon.* to 'amonuser'@'%' identified by '123456';
flush privileges;
------------------------------------------
create database cmserver default charset utf8 collate utf8_general_ci;
grant all on cmserver.* to 'cmserveruser'@'%' identified by 'root';
create database metastore default charset utf8 collate utf8_general_ci;
grant all on metastore.* to 'hiveuser'@'%' identified by 'root';
create database amon default charset utf8 collate utf8_general_ci;
grant all on amon.* to 'amonuser'@'%' identified by '123456';
create database rman default charset utf8 collate utf8_general_ci;
grant all on rman.* to 'rmanuser'@'%' identified by 'root';
create database oozie default charset utf8 collate utf8_general_ci;
grant all on oozie.* to 'oozieuser'@'%' identified by 'root';
create database hue default charset utf8 collate utf8_general_ci;
grant all on hue.* to 'hueuser'@'%' identified by 'root';
create database report default charset utf8 collate utf8_general_ci;
grant all on report.* to 'reportuser'@'%' identified by 'root';
flush privileges;
MySQL所在节点安装MySQL JDBC 驱动包
## 创建/usr/share/java目录,将jdbc的jar包放进去
mkdir -p /usr/share/java # cdh默认搜索目录
cp mysql-connector-java-5.1.49-bin.jar mysql-connector-java.jar # 去掉版本号
这里注意:所有从节点也要按如上步骤操作
2.6 节点修改linux swappiness参数
## 设置为0,重启后又还原
echo 0 > /proc/sys/vm/swappiness
## 修改配置文件, 添加参数
vi /etc/sysctl.conf
vm.swappiness=0
## 上述在el6中有效,在el7中tuned服务会动态调整参数
## 查找tuned配置,直接修改,进入tuned目录
cd /usr/lib/tuned/
## 查找包含的所在文件路径
grep "vm.swappiness" * -R
latency-performance/tuned.conf:vm.swappiness=10
throughput-performance/tuned.conf:vm.swappiness=10
virtual-guest/tuned.conf:vm.swappiness = 30
## 逐个修改参数vm.swappiness=0
vi latency-performance/tuned.conf
vi throughput-performance/tuned.conf
vi virtual-guest/tuned.conf
## 修改后确认
grep "vm.swappiness" * -R
节点禁用透明页
## 立刻生效
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
## 永久生效 在/etc/rc.local末尾添加两行
vi /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
## 给与可执行权限
chmod +x /etc/rc.d/rc.local
注意:这里修改内核配置主要是基于优化内存,避免影响计算时的读写性能,所有节点主机都要配置
三、CDH安装
3.1 离线安装cm server及agent
## 先安装agent需要的依赖
yum install -y redhat-lsb httpd mod_ssl openssl-devel python-psycopg2 MySQL-python libpq.so
## agent需要提前安装的依赖
yum -y install perl bind-utils libxslt cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs psmisc openssl httpd mod_ssl openssl-devel python-psycopg2 MySQL-python postgresql-libs.x86_64 lsb
## 主节点安装daemons, server, agent
rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm # 必要包
rpm -ivh cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm # server
rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm # agent
## 从节点安装daemons, agent
rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
rpm -ivh cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm
## 从节点修改agent的配置,指向server的节点
vi /etc/cloudera-scm-agent/config.ini
server_host=ss3
## 主节点修改server的配置,确定以下项与之前创建库时一致
vi /etc/cloudera-scm-server/db.properties
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=ss3
com.cloudera.cmf.db.name=cmf
com.cloudera.cmf.db.user=cmf
com.cloudera.cmf.db.password=123456
com.cloudera.cmf.db.setupType=EXTERNAL
3.2 部署离线parcel源
## 安装httpd服务(前面已经安装),web查看http://localhost102/
systemctl status httpd # 查看状态
systemctl start httpd # 启动
systemctl enable httpd.service #设置httpd服务开机自启
## 部署离线parcel源,将parcel相关的三个文件拷贝进去, .sha1将1去掉
## web查看http://ss3/cdh6_parcel
mkdir -p /var/www/html/cdh6_parcel
mv CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel /var/www/html/cdh6_parcel
mv CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1 /var/www/html/cdh6_parcel
mv manifest.json /var/www/html/cdh6_parcel
#如果没下载sha1,可以生成
sha1sum CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel | awk '{ print $1 }' > CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha
## 修改httpd端口,主要是httpd默认80端口在云主机有限制,你懂得...
vi /etc/httpd/conf/httpd.conf
Listen 9911
修改httpd服务端口重启后,可以浏览器访问下cdh6_parcel
3.3 启动server和agent
## 主节点启动server
systemctl start cloudera-scm-server
# 查看日志,出现7180说明启动成功,,有错误解决错误
tail -F /var/log/cloudera-scm-server/cloudera-scm-server.log
# 使用localhost102:7180可以进入web页面表示成功,接下来启动agent
## 从节点启动agent
systemctl start cloudera-scm-agent
## 停止
systemctl stop cloudera-scm-server
systemctl stop cloudera-scm-agent
systemctl disable cloudera-scm-server # 关闭开机启动
systemctl disable cloudera-scm-agent # 关闭开机启动
## 查看端口 7180
netstat -tpnl
web界面操作,登录http://ss3:7180,默认用户名密码为admin
3.4 登录后集群配置操作
免费版
设置群集名称
使用已经安装好agent的主机 ss3、ss4 、ss5
存储库我们选择更多选项,设置我们放在httpd的源
我们在弹出的界面,远程这一栏只保留第一行,其他都删除,把第一行修改为我们自己的httpd服务的地址http://ss3:9911/cdh6_parcel/
修改后
我们保存后,就可以看到CDH了
点击【继续】,开始分发 Parcel
耐心等待进度走完
检测集群内主机,我这里提示内核问题,因为我只配置了ss3 主机,另外2台从主机没有配置,我把另2台也配置下
继续下一步
终于到了配置服务了
我们选自定义
集群配置成功后的监控界面
主机情况列表
具体服务可以点击查看 webui,比如HDFS管理
由于系统配置比较低,很多服务没能安装,留待以后继续研究了...
总结
感谢能看到这里的朋友😉
本次的分享就到这里,猫头鹰数据致力于为大家分享技术干货😎
如果以上过程中出现了任何的纰漏错误,烦请大佬们指正😅
受益的朋友或对技术感兴趣的伙伴记得点赞关注支持一波🙏
也可以扫描二维码或搜索关注我的微信公众号【猫头鹰数据分析】,留言交流🙏