Linux环境Cloudera CDH安装配置
PS: 几乎全网最全,介绍完全离线和在线联网两种安装方式,搭建CDH,阅此文足矣。
1. 认识CDH
(1) CDH介绍
- CDH是Apache Hadoop和相关项目中最完整,经过测试和最流行的发行版。
- 由Cloudera公司发行的Hadoop版本,全称(Cloudera’s Distribution Including Apache Hadoop)。该版本在基于原生Apache Hadoop版本进行改进,添加了补丁和自行开发的组件,更加稳定易用。是目前国内使用最多的版本。
- 官网:
- 官方文档:
- CDH提供了Hadoop的核心元素 :
- 可扩展存储和分布式计算
- 以及基于Web的用户界面和重要的企业功能。
- CDH是Apache许可的开源软件,是唯一提供统一批处理,交互式SQL和交互式搜索以及基于角色的访问控制的Hadoop解决方案。
(2) CDH优势
<1>. 灵活性
- 存储任何类型的数据并使用各种不同的计算框架对其进行操作,包括批处理,交互式SQL,自由文本搜索,机器学习和统计计算。
<2>. 集成
- 在完整的Hadoop平台上快速启动和运行,该平台可与各种硬件和软件解决方案配合使用。
<3>. 安全
- 处理和控制敏感数据。
<4>. 可扩展性
- 支持广泛的应用程序,并扩展和扩展它们以满足您的要求。
<5>. 高可用性
- 充满信心地执行任务关键型业务任务。
<6>. 兼容性
- 利用现有的IT基础架构和投资。
2. 前期准备工作
- 注意:搭建前先确定自己的设备情况,各节点硬盘30G以上,主节点内存6G以上,从节点内存2G以上,低配置会导致后续加载服务失败。
- 给一个大致的参考:
- 这里的准备工作是两种安装方式都需要提前配置好的,从裸虚拟机开始,做过相关配置略过即可。
- 我的环境是三台虚拟机(主节点:bigdata01;从节点:bigdata02,bigdata03),操作系统均为CentOS7,自行根据实际情况灵活调整。
(1) Linux配置IP(NAT模式):
- 相关信息必须与VMnet8保持一致
- 通过命令:vi /etc/sysconfig/network-scripts/ifcfg-(自己的名字) 进行编辑:
-
TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=9cbcf25a-600d-4d9c-88ad-ab509ab6e52a DEVICE=ens33 ONBOOT=yes **IPADDR=192.168.44.121 PREFIX=24 GATEWAY=192.168.44.2 DNS1=8.8.8.8** IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_PRIVACY=no 复制代码
-
- 重启网络服务:
service network restart
(2) linux关闭防火墙:
- 查看防火墙状态:
firewall-cmd --state
->running - 关闭防火墙-本次有效:
systemctl stop firewalld.service
- 禁用防火墙-永久生效:
systemctl disable firewalld.service
->not running
(3) 设置主机名:
- 位置:
vi /etc/hostname
,输入主机名 - **注意:**需要重启:
reboot
(4) 设置映射:
- 位置:
vi /etc/hosts
,输入集群全部IP和主机名 - 格式:192.168.44.111 bigdata01
(5) 设置免密登录:
- 生成密钥:ssh-keygen (三次回车键)
- 拷贝到主机:ssh-copy-id 主机名 (所有节点都拷贝)
(6) 安装jdk:
<1>. 上传安装包:
- CRT:alt+p
- winscp:拖入目录
<2>. 解压:
tar -zxvf jdkXXXXX.tar.gz -C 目标目录
<3>. 配置环境变量:
- 修改配置文件:
vi /etc/profile
- 增加以下内容:
export JAVA_HOME=jdk目标目录
export PATH=$PATH:$JAVA_HOME/bin
- 声明环境变量:
source /etc/profile
(7) 分发jdk到其他节点:
<1>. 发送文件:
scp jdk 目标主机名:目标目录
scp /etc/profile 目标主机名:目标目录
<2>. 配置环境变量:
- 与节点一相同
<3>. 验证:
javac
java
java -version
(8) 软连接jdk到CDH5:
- 注意CDH5默认识别的jdk路径为:
/usr/java/default
,这个路径不能多也不能少,需要使CDH识别到系统安装的jdk,采用软连接方式最简单。 - 软连接建立命令:
- 格式:
ln -s sourcedir sinkdir
ln -s /jdk安装位置/* usr/java/default/
- 格式:
(9) MySQL数据库(主节点安装即可)
<1>. Linux安装MySQL:
- Linux-CentOS7环境MySQL安装配置见:
- Linux-RHEL7环境MySQL安装配置见:
<2>. 创建相关数据库:
- Hive的元数据库:
- mysql>
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
- mysql>
- Cloudera的元数据库:
- mysql>
create database scm DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
- mysql>
<3>. 开启远程访问:
- 选择mysql库:
- mysql>
use mysql;
- mysql>
- 创建CDH默认使用mysql用户scm:
- mysql>
CREATE USER 'scm'@'%' IDENTIFIED BY 'scm';
- mysql>
- 赋予scm用户所有权限:
- mysql>
GRANT ALL PRIVILEGES ON *.* TO scm@"%" IDENTIFIED BY "scm";
- mysql>
- 刷新权限:
- mysql>
flush privileges;
- mysql>
(10) 增加开机自启项:(避免后续提示警告)
- 当前开启:
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
- 添加配置文件:
vi /etc/rc.local
-
echo 0 > /proc/sys/vm/swappiness echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag swapoff -a复制代码
复制代码
-
- 分发给其他节点:
scp /etc/rc.local bigdata02:$PWD
scp /etc/rc.local bigdata03:$PWD
(11) 安装时钟服务NTP:(CDH要求各个节点时间同步)
-
时钟服务器安装在主节点上,子节点的时钟服服务全部同步到主节点的时钟服务器上。
-
安装时钟服务ntp:
yum -y install ntp
-
启动ntp并注册到开机自启:
service ntpd start
chkconfig ntpd on
-
查看ntpd的状态:
service ntpd status
-
配置时钟服务器:
vi /etc/ntp.conf
- 修改前:
- 修改后:
-
重启ntp服务:
service ntpd restart
(12) 安装perl:
yum install -y perl
3. CDH-5.14.0 在线安装配置流程
- 操作相对容易,适用于本地测试和有网环境生产搭建。
(1) 相关下载地址:
- Cloudera Manager(CM):
- CDH:
(2) 解压Clouder Manager到目标目录下:
- **特别注意:**为了后续方便和避免引起不必要的麻烦,务必创建目录
/opt/cloudera-manager
和/opt/cloudera/parcel-repo
tar -zxvf .tar.gz -C /opt/cloudera-manager
(3) 创建用户cloudera-scm:
- 由于Cloudera Manager和Managed Services默认使用
cloudera-scm
,所以需要创建此用户。 - 创建用户:
useradd --system --home=/opt/cloudera-manager/cm-5.14.1/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
- 修改用户密码:
passwd cloudera-scm
(4) 主节点创建Cloudera Manager服务本地数据存储目录:
mkdir /var/lib/cloudera-scm-server
chown cloudera-scm:cloudera-scm /var/lib/cloudera-scm-server
(5) 配置Agent:
- 配置所有节点的Agent
vi /opt/cloudera-manager/cm-5.14.1/etc/cloudera-scm-agent/config.ini
- 将server_host修改成主节点的主机名(一定不能是IP地址),如果主节点端口没有自定义,则不用修改。
(6) 配置mysql-connector-java.jar:
- 下载地址(mysql5+):
- 保存到所有主机的
/usr/share/java
目录下(目录不存在则新建) - 重命名:
- 很关键一步,不修改CDH则不识别
mv mysql-connector-java-5.1.46.jar mysql-connector-java.jar
(7) 初始化cloudera manager:
/opt/cloudera-manager/cm-5.14.1/share/cmf/schema/scm_prepare_database.sh mysql scm scm scm
- 操作成功提示:
-
[ main] DbCommandExecutor INFO Successfully connected to database.All done, your SCM database is configured correctly!复制代码
-
- 这里报错的话是之前mysql的scm用户设置问题,各位自行排查。
(8) 配置CDH安装包:
- 安装包:
CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel
CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel.sha1
manifest.json
- 将安装包移动主节点的
/opt/cloudera/parcel-repo
目录下/opt/cloudera/parcel-repo
目录是CDH自动识别的目录
- 重命名:
mv CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel.sha1 CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel.sha
- .sha1不识别,不重命名会重新下载sha文件。
(9) 启动主节点的CM Server和所有节点的Agent:
- 路径为:/opt/cloudera-manager/cm-5.14.1/etc/init.d
./cloudera-scm-server start
./cloudera-scm-agent start
(10) 打开CM管理页面
- 网址为:
- 初始用户名和密码都是admin
(11) 选择Cloudera Express:
- 选择免费。
(12) 选择主机:
- 在“当前管理的主机”选项卡下,勾选所有节点。
(13) 群集安装:
- 选择存储库:
(14) 安装完成后,检查主机正确性:
- 转“5. 安装后续”
4. CDH-5.14.0 离线安装配置流程
- 操作复杂,适用于高安全性无网环境生产搭建。
(1) 搭建私有网络软件仓库:
- 在集群安装的过程中,要求每个节点都必须挂载光驱, 而对于每台节点都手动的去挂载光驱太麻烦,也不方便。这里使用每个节点都指向同一个私有网络镜像来解决这个问题。
- 集群采用的是全离线安装,也不可能逐个节点的安装,同样是也使用指向同一个私有的网络软件包来解决。
- 因此选择在bigdata01上搭建一个私有的网络软件仓库,以下是搭建的全过程:
<1>. 上传镜像:
- 搭建私有网络镜像使用的镜像文件最好就使用安装系统的镜像,这里是选择了CentOS6.7x64的镜像,将其上传到hadoop-4的/disk下(需新建/disk目录)。
- 若遇到上传文件限制无法上传,则压缩成
.zip
文件上传,之后解压。
<2>. 挂载镜像
- 创建文件夹:
mkdir -p /media/CentOS
- 挂载镜像:
mount -o loop /disk/CentOS-6.7-x86_64-bin-DVD1.iso /media/CentOS/
- 修改CentOS-Base.repo:
- 进入目录:
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.bak
- 进入目录:
- 修改CentOS-Media.repo文件:
vim CentOS-Media.repo
- 将
enable=0
改成enable=1
- 清除yum的缓存:
yum clean metadata
yum clean dbcache
- 查看是否挂载成功:
yum list | wc -l
- 这是统计镜像中有多少个软件包的命令,CentOS6.7x64位的系统的软件包个数一般在3000以上。
<3>. 安装http:
- 已经安装可以省略,只需启动即可(一般最小化安装不会安装此服务)
- 安装命令:
yum -y install httpd
- 启动http服务:
service httpd start
或者/bin/systemctl start httpd.service
- 设置开机自启:
chkconfig httpd on
- 通过浏览器测试:
- 输入:
http://bigdata01:80
- 出现类似如下界面说明http启动成功:
- 输入:
<4>. 安装createrepo
- 用来生成http镜像的网络识别路径。
- 安装:
yum –y install createrepo
(2) 挂载网络系统镜像:
<1>. 创建网络系统镜像:
- 从镜像中挂载的文件拷贝到软件仓库的目录中:
cp -r /media/CentOS 目标目录
- 删除目录repodata:
cd /目标目录/CentOS
rm -rf ./repodata
- 生成新的软件路径目录repodata:
createrepo .
- 可以通过网络访问查看:
- 浏览器输入:
<2>. 使用网络系统镜像:
-
解除对镜像文件的挂载:
umount /media/CentOS
-
若
/media/CentOS
下无文件则说明解除挂载成功。 -
若出现:
- 说明有进程在占用挂载点,出现这种情况,表示还有进程在使用/medis/CentOS挂载点,那么此时可以借助fuser命令找出占用目录/medis/CentOS的所有进程,然后kill掉,此时就可以umount了。
-
修改文件CentOS-Media.repo让其指向刚才创建的网络镜像:
vi /etc/yum.repos.d/CentOS-Media.repo
-
清除yum的缓存:
yum clean metadata
yum clean dbcache
-
查看是否挂载成功:
yum list | wc -l
<3>. 成功:
- 到此bigdata01网络系统镜像挂载完成,可以删除镜像文件。
(3) 创建CM和CDH网络软件镜像:
<1>. 创建CM网络软件镜像:
- CM下载地址:
- 上传cm安装包到软件仓库目录中(注意:相关的目录需要自己创建)
<2>. 创建CDH网络镜像:
- CDH下载地址:
- 上传CDH安装包到软件仓库目录中(注意:相关的目录需要自己创建,,三个文件一个也不能少)
<3>. 子节点挂载网络镜像
-
将主节点的
/etc/ yum.repos.d
下的CentOS-Media.repo
文件分发到各子节点的目录:scp -r /etc/yum.repos.d/CentOS-Media.repo bigdata02:$PWD
scp -r /etc/yum.repos.d/CentOS-Media.repo bigdata03:$PWD
-
在所有子节点执行如下命令:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
-
<4>. 子节点挂载网络镜像
- 将主节点
/etc/ yum.repos.d
下的CentOS-Media.repo
文件分发到各子节点的目录/etc/ yum.repos.d
下:scp -r /etc/yum.repos.d/CentOS-Media.repo bigdata02:/etc/yum.repos.d/
scp -r /etc/yum.repos.d/CentOS-Media.repo bigdata03:/etc/yum.repos.d/
- 在所有子节点执行如下命令:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
- 清除yum的缓存:
yum clean metadata
yum clean dbcache
- 查看是否挂载成功:
yum list | wc -l
- 这是统计镜像中有多少个软件包的命令,CentOS6.7x64位的系统的软件包个数一般在3000以上。
- 将主节点
(4) CM安装:
- 之前只是建立了CM的网络软件镜像,但是并没有让系统识别,现在开始一步步安装CM。
- 由于CM只要安装在主节点bigdata01上,以下操作仅在bigdata01上执行。
<1>. 配置CM的yum源
- 找到CM网络镜像中拷贝cloudera-cm.repo
- 存在于cm的压缩包中,可以从压缩包中直接解压。
- 拷贝
cloudera-cm.repo
到/etc/yum.repos.d/
目录下:cp /opt/module/cm-5.14/cloudera-manager.repo /etc/yum.repos.d/
- 进入目录/etc/yum.repos.d/:
cd /etc/yum.repos.d/
- 修改cloudera-cm.repo:
vi cloudera-cm.repo
baseurl=http://bigdata01/cm5.14
gpgkey=http://bigdata01/cm5.14/RPM-GPG-KEY-cloudera
- 一定要注意和cm的网络软件镜像相对应。
- 修改cloudera-cm.repo:
cp cloudera-cm.repo cloudera-manager.repo
<2>. 安装CM
-
下载CM安装的引导文件——cloudera-manager-installer.bin:
- 下载地址:
- 注意一定要对应CM的版本。
-
将其上传到/opt下:
-
上传的cloudera-manager-installer.bin文件并没有执行权限,赋予其执行权限:
chmod 755 cloudera-manager-installer.bin
-
执行安装:
./opt/cloudera-manager-installer.bin
- 安装提示进行即可,出现下面界面即安装成功:
-
查看cloudera的服务是否启动:
./cloudera-scm-server start
-
通过浏览器访问cm的页面控制台:
7180
是默认端口,若冲突修改流程如下:- 登录主节点MySQL
- mysql>
use scm
- 查看默认端口:
- mysql>
select * from CONFIGS where ATTR='http_port';
- mysql>
- 修改端口:
update CONFIGS set VALUE='XXXX' where ATTR='http_port';
- 重启服务器:
./cloudera-scm-server start restart
- 初始用户名密码均为admin,(可自行修改)登录后进行cdh集群安界面。
(5) CDH集群安装:
- 接下来就通过浏览器界面来执行CDH集群安装。
<1>. 选择子节点
-
在登录了后,进入的第一个界面是cloudera的最终用户许可条款和条件:
-
勾选是的,再点继续,进入CDH版本选择界面:
-
这里选择免费版, 再点击继续,进行感谢界面:
-
直接点击继续,进入了节点选择界面:
-
在这个界面我们需要填入,我们集群的所有节点主机名(可从任意节点的hosts文件中拷贝。),以英文逗号分隔,填完了后点击搜索。
<2>. CDH和CM的具体网络位置的选择
-
在确认主机无误后,点击继续,就可以进入CDH和CM的网络位置选择界面。
-
a. 选择CDH的位置:
-
先点击 更多选项,进入CDH网络位置选择界面:
-
修改成我们自己的CDH网络软件镜像的地址,多余的删掉。
-
点击保存更改,这时CDH和CM的网络位置选择界面变为:
-
选择CDH版本就完成了,接下来选择CM。
-
-
b. 选择CM的位置
-
在选择了CDH后,我们继续点击 自定义存储库 来选择我们自己的CM:
-
就是把配置cloudera-cm.repo的配置拿出来,在界面上填一遍,我们的填写如下:
-
填写完成后,就会进入给每个节点安装cloudera-scm-agent的界面,再点击继续前,我们需要将hadoop-cm中安装CM时安装的JDK文件分发到每个子节点,不然子节点在安装cloudera-scm-agent会包错。
-
<3>. Agent的安装和配置
-
点击继续,进入jdk安装选项:
-
这个就不需要勾选,直接点击继续,进入选择是否启动单用户模式:
-
选择不启用,直接点击继续,进入节点通信选择:
-
这里使用 所有用户接收相同的密码:
-
填入密码后,点击继续,进行agent安装界面, 耐心等待安装完成。安装完成后,点击继续,进入CDH包分发到agent的界面,耐心等待其完成。分发为完成后,点击继续,进入agent主机检查:
- 转“5. 安装后续”
5. 安装后续
(1) agent主机检查
-
需要将所有警告都解决才能点击继续,不然安装可能会报错。
-
大概率出现的警告为:
- a. Cloudera 建议将 /proc/sys/vm/swappiness 设置为最大值 10。当前设置为 30。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf,以在重启后保存该设置。您可以继续进行安装,但 Cloudera Manager 可能会报告您的主机由于交换而运行状况不良。 - 解决方案:
sysctl vm.swappiness=10
cat /proc/sys/vm/swappiness
- 加入配置文件永久修改:
- 在/etc/sysctl.conf 文件里添加如下参数:
vm.swappiness=10
- 在/etc/sysctl.conf 文件里添加如下参数:
- b. 已启用透明大页面压缩,可能会导致重大性能问题。请运行“echo never > /sys/kernel/mm/transparent_hugepage/defrag”和“echo never > /sys/kernel/mm/transparent_hugepage/enabled”以禁用此设置。
- 解决方案:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
vi /etc/rc.local
- 添加:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
- 解决方案:
- a. Cloudera 建议将 /proc/sys/vm/swappiness 设置为最大值 10。当前设置为 30。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf,以在重启后保存该设置。您可以继续进行安装,但 Cloudera Manager 可能会报告您的主机由于交换而运行状况不良。 - 解决方案:
(2) CDH服务选择
-
安装和配置完Agent后,就会进入CDH服务选择界面:
-
选择自定义服务,勾选如下:
-
点击继续,进入服务安装细节界面:
(3) 配置元数据库为Mysql
在选择完服务后,点击继续就可以进入数据库选择界面,这里选择mysql,注意用户名和密码,这里需要填如Mysql中支持远程连接的用户名和密码,点击测试连接:
(4) 集群服务配置
<1>. HDFS DataNode地址配置
<2>. HDFS NameNode地址配置
<3>. 1.1.3 HDFS SNameNode地址配置
<4>. Yarn NodeManager的地址配置
- 其他的均不需要调整,配置完后点击继续,进入安装界面。
(5) CDH集群安装
-
在选择完集群服务配置后,就会进行运行安装界面。
-
可能报错:
- 原因:
- jdk未找到
- 内存不足
- 原因:perl未安装
- 原因:
-
完成后,点击继续,集群cm集群控制界面,