CDH 是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具(软件),使得集群的安装可以从几天的时间缩短为几个小时,运维人数也会从数十人降低到几个人,极大的提高了集群管理的效率。
二、本地单机安装测试,资源有限 操作系统:CentOS7.5
内存:8g
硬盘 :80G
cpu:2core
下载地址:
链接:https://pan.baidu.com/s/1udJ5Z0wFWfXPtabsbEsbUg 提取码:btze
如下:
四、开始部署 1、设置静态iphttps://blog.csdn.net/weixin_40612128/article/details/119007776?spm=1001.2014.3001.5502
我这里设置为192.168.253.132
临时配置+永久配置
https://blog.csdn.net/weixin_40612128/article/details/119008039?spm=1001.2014.3001.5502
我这里设置为cdh01
vi /etc/hosts
注意:这里验证一下
ping cdh01
4、关闭防火墙临时关闭+永久关闭
https://blog.csdn.net/weixin_40612128/article/details/107575374?spm=1001.2014.3001.5502
5、免密登录https://blog.csdn.net/weixin_40612128/article/details/119008155?spm=1001.2014.3001.5502
6、搭建ntp时间服务器注:单机部署,无所谓可以不搭,一般集群部署需要搭建。
yum -y install ntpvi /etc/ntp.conf
…
将下面这四行内容注释掉
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
然后增加一行内容
server ntp.aliyun.com
service ntpd start
添加到开机启动项里面
systemctl enable ntpd.service
配置好了以后查看验证一下当前同步的时间服务器
注意:需要等5~10分钟才能看到类似下面的结果,显示出来下面这种结果的时候才说明是真正成功了,如果看不到这样的效果,需要等一会再来查看。
ntpq -p
8、安装jdk 使用cdh提供的jdk
官方下载地址:
https://archive.cloudera.com/cm6/6.2.1/redhat7/yum/RPMS/x86_64/oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
百度网盘已经提供了:
上传到/opt目录下
安装jdk
rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
配置jdk环境变量,/etc/profile文件末尾增加下面内容
vi /etc/profileexport JAVA_HOME=/usr/java/jdk1.8.0_181-clouderaexport PATH=.:$PATH:$JAVA_HOME/bin
重新加载环境变量
source /etc/profile
验证是否安装成功
java -version
9、安装mysql卸载原生的mariadb
[root@cdh01 opt]# rpm -qa|grep mariadb mariadb-libs-5.5.64-1.el7.x86_64[root@cdh01 opt]# rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64
将MySQL安装包上传到cdh01的/opt目录中
本文提供的百度网盘下载链接中也有这个文件,前面已经下载过了。
[root@cdh01 opt]# ll-rw-r--r--、1 root root 541163520 Oct 27 16:04 mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar
解压MySQL安装包
[root@cdh01 opt]# tar -xvf mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar
安装MySQL
[root@cdh01 opt]# rpm -ivh mysql-community-common-5.7.31-1.el7.x86_64.rpm --force --nodeps[root@cdh01 opt]# rpm -ivh mysql-community-libs-5.7.31-1.el7.x86_64.rpm --force --nodeps[root@cdh01 opt]# rpm -ivh mysql-community-client-5.7.31-1.el7.x86_64.rpm --force --nodeps[root@cdh01 opt]# rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm --force --nodeps[root@cdh01 opt]# rpm -ivh mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm --force --nodeps
下面开始配置MySQL
先初始化MySQL
[root@cdh01 opt]# mysqld --initialize --user=mysql
获取MySQL生成的随机密码,在文件/var/log/mysqld.log的最后一行
[root@cdh01 opt]# cat /var/log/mysqld.log | tail -12020-10-28T11:51:25.902353Z 1 [Note] A temporary password is generated for root@localhost: Z+W(z1V%cii=
设置MySQL服务开机启动
[root@cdh01 opt]# systemctl start mysqld.service
重启一下MySQL服务,否则连不上去
[root@cdh01 opt]# systemctl restart mysqld
连接MySQL,修改密码【不修改密码无法使用】
注意:alter user user() identified by “admin”;表示将root用户的密码设置为admin。
[root@cdh01 opt]# mysql -uroot -pEnter password: Welcome to the MySQL monitor、 Commands end with ; or g.Your MySQL connection id is 7Server version: 5.7.31Copyright (c) 2000, 2020, Oracle and/or its affiliates、All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates、Other names may be trademarks of their respectiveowners.Type 'help;' or 'h' for help、Type 'c' to clear the current input statement.mysql> alter user user() identified by "admin";Query OK, 0 rows affected (0.01 sec)
在MySQL中创建数据库,后面会用到这些库。
mysql> create database cmserver default charset utf8 collate utf8_general_ci;Query OK, 1 row affected (0.00 sec)mysql> grant all on cmserver.* to 'root'@'%' identified by 'admin';Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> create database metastore default charset utf8 collate utf8_general_ci;Query OK, 1 row affected (0.01 sec)mysql> grant all on metastore.* to 'root'@'%' identified by 'admin';Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> create database rman default charset utf8 collate utf8_general_ci;Query OK, 1 row affected (0.00 sec)mysql> grant all on rman.* to 'root'@'%' identified by 'admin';Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> create database oozie default charset utf8 collate utf8_general_ci;Query OK, 1 row affected (0.00 sec)mysql> grant all on oozie.* to 'root'@'%' identified by 'admin';Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> create database hue default charset utf8 collate utf8_general_ci;Query OK, 1 row affected (0.00 sec)mysql> grant all on hue.* to 'root'@'%' identified by 'admin';Query OK, 0 rows affected, 1 warning (0.00 sec)
创建/usr/share/java目录,将mysql的connector驱动jar包上传到里面
[root@cdh01 ~]# mkdir -p /usr/share/java
将mysql的connector驱动jar包上传到集群内所有节点的/usr/share/java目录中
本文提供的百度网盘下载链接中也有这个jar包,前面已经下载过了。
[root@cdh01 java]# lltotal 4348-rw-r--r--、1 root root 1007502 Aug 7 2018 mysql-connector-java-5.1.47.jar[root@cdh01 java]# mv mysql-connector-java-5.1.47.jar mysql-connector-java.jar
10、安装Httpd服务使用yum在线安装httpd
[root@cdh01 opt]# yum -y install httpd
启动httpd服务
[root@cdh01 opt]# systemctl start httpd
添加到开启启动项中
[root@cdh01 opt]# systemctl enable httpd.serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
11、配置Cloudera Manager包创建目录
mkdir -p /var/www/html/cloudera-repos/cm6
将Cloudera Manager的相关文件上传到/var/www/html/cloudera-repos/cm6目录中
Cloudera Manager的相关文件下载地址:
这些文件最终的整理版在本文提供的百度网盘下载链接中也有,前面已经下载过了。
上传成功之后的效果如下:
[root@cdh01 cm6]# pwd/var/www/html/cloudera-repos/cm6[root@cdh01 cm6]# lltotal 1181624-rw-r--r--、1 root root 14041 Oct 26 17:08 allkeys.asc-rw-r--r--、1 root root 10215608 Oct 26 17:08 cloudera-manager-agent-6.2.1-1426065.el7.x86_64.rpm-rw-r--r--、1 root root 1199718256 Oct 26 18:46 cloudera-manager-daemons-6.2.1-1426065.el7.x86_64.rpm-rw-r--r--、1 root root 9988 Oct 26 17:07 cloudera-manager-server-6.2.1-1426065.el7.x86_64.rpm-rw-r--r--、1 root root 10996 Oct 26 17:08 cloudera-manager-server-db-2-6.2.1-1426065.el7.x86_64.rpm-rw-r--r--、1 root root 1718 Oct 27 17:41 RPM-GPG-KEY-cloudera
下载createrepo
官方下载地址:
http://www.rpmfind.net/linux/rpm2html/search.php?query=createrepo
本文提供的百度网盘下载链接中也有这个文件,前面已经下载过了。
将下载的createrepo-0.9.9-28.el7.noarch.rpm上传到/opt目录中
[root@cdh01 opt]# ll-rw-r--r--、1 root root 95840 Oct 27 16:55 createrepo-0.9.9-28.el7.noarch.rpm
安装createrepo
[root@cdh01 opt]# rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm --force --nodeps
下载deltarpm【在后面创建repodata的时候会提示缺少这个module】
官方下载地址:
http://mirror.centos.org/centos/7/os/x86_64/Packages/python-deltarpm-3.6-3.el7.x86_64.rpm
本文提供的百度网盘下载链接中也有这个文件,前面已经下载过了。
将下载好的python-deltarpm-3.6-3.el7.x86_64.rpm上传到/opt目录中
[root@cdh01 opt]# ll-rw-r--r--、1 root root 32084 Oct 27 17:07 python-deltarpm-3.6-3.el7.x86_64.rpm
安装deltarpm
[root@cdh01 opt]# rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm --force --nodeps
创建repodata
[root@cdh01 cm6]# createrepo .Spawning worker 0 with 1 pkgsSpawning worker 1 with 1 pkgsSpawning worker 2 with 1 pkgsSpawning worker 3 with 1 pkgsSpawning worker 4 with 0 pkgsSpawning worker 5 with 0 pkgsSpawning worker 6 with 0 pkgsSpawning worker 7 with 0 pkgsWorkers FinishedSaving Primary metadataSaving file lists metadataSaving other metadataGenerating sqlite DBsSqlite DBs complete
注意:repodata创建成功之后,会在cm6目录下看到一个新创建的repodata目录
此时cm6目录中的内容如下:
[root@cdh01 cm6]# lltotal 1181628-rw-r--r--、1 root root 14041 Oct 26 17:08 allkeys.asc-rw-r--r--、1 root root 10215608 Oct 26 17:08 cloudera-manager-agent-6.2.1-1426065.el7.x86_64.rpm-rw-r--r--、1 root root 1199718256 Oct 26 18:46 cloudera-manager-daemons-6.2.1-1426065.el7.x86_64.rpm-rw-r--r--、1 root root 9988 Oct 26 17:07 cloudera-manager-server-6.2.1-1426065.el7.x86_64.rpm-rw-r--r--、1 root root 10996 Oct 26 17:08 cloudera-manager-server-db-2-6.2.1-1426065.el7.x86_64.rpmdrwxr-xr-x、2 root root 4096 Oct 28 21:02 repodata-rw-r--r--、1 root root 1718 Oct 27 17:41 RPM-GPG-KEY-cloudera
12、添加新配置的yum源添加yum源
[root@cdh01 ~]# vi /etc/yum.repos.d/cloudera-manager.repo[cloudera-manager]name = Cloudera Manager,Versionbaseurl = http://cdh01/cloudera-repos/cm6gpgcheck = 1
清除yum缓存
[root@cdh01 ~]# yum clean all[root@cdh01 ~]# yum makecache
注意:要确保配置中baseurl 对应的url是可以访问的,主机名
http://cdh01/cloudera-repos/cm6/
如果windows中没有配置主机名和ip的映射关系,在windows中的浏览器里面访问的时候需要使用ip
http://192.168.253.132/cloudera-repos/cm6/
注:windows主机名ip映射配置,这里配置完成,就可以使用主机名访问了。
Cloudera Manager简称为cm
想要安装CDH集群,需要先安装cm,然后在cm提供的web界面上安装CDH集群,比较方便。
注意:在安装之前,先执行这个命令,否则在安装cm相关服务的时候会报错
[root@cdh01 ~]# rpm --import http://cdh01/cloudera-repos/cm6/RPM-GPG-KEY-cloudera
安装 cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server这3个服务
[root@cdh01 ~]# yum -y install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
上传cdh安装包到节点上
安装完cm之后,在/opt/目录下会出现cloudera目录
将cdh的安装包CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel上传到/opt/cloudera/parcel-repo目录中。
cdh安装包官方下载地址:
https://archive.cloudera.com/cdh6/6.2.1/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel
本文提供的百度网盘下载链接中也有这个文件,前面已经下载过了。
首先将CDH安装包上传到cdh01节点的/opt/cloudera/parcel-repo目录中
[root@cdh01 parcel-repo]# ll-rw-r--r--、1 root root 54279162 Oct 28 21:48 CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel
生成sha文件
[root@cdh01 parcel-repo]# sha1sum CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel | awk '{print $1}' > CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha
14、启动cm+安装cdh初始化cm
[root@cdh01 ~]# /opt/cloudera/cm/schema/scm_prepare_database.sh mysql cmserver root admin
启动cm
[root@cdh01 ~]# service cloudera-scm-server start
稍后几分钟(5~10分钟),就可以打开cm的管理界面了,端口是7180。
http://cdh01:7180http://192.168.253.132:7180/
安装cdh集群
注意:在windows中没有配置cdh01主机名和ip映射关系的话,就需要使用ip访问了
我在这里就使用ip访问了
http://cdh01:7180http://192.168.253.132:7180/
用户名和密码都是admin
登录进来之后是这样的,点击继续
选中按钮,点击继续
使用默认的试用版即可,点击继续
需要稍等一会,会进入到下面界面,直接点击继续
可以选择修改集群名称,也可以使用默认的,然后点击继续
输入集群中的所有节点主机名
点击搜索按钮
选中所有主机,点击继续
输入自定义存储库,确认CDH版本为6.2.1
点击继续
直接点击继续即可,不用选中,因为jdk我们前面已经安装好了
输入集群中节点的密码,然后点击继续
然后会进入到cm Agent安装界面,需要稍等一会,5~10分钟。
cm Agent安装成功之后是这样的,点击继续按钮
此时会进入到CDH安装界面,需要稍等一会,10~20分钟
全部安装成功之后是这样的,点击继续按钮
点击这两个高级选项,开始检测
检查第一个结果
检查第二个结果
在cdh01节点上操作
[root@cdh01 ~]# sysctl vm.swappiness=10[root@cdh01~]# echo 'vm.swappiness=10'>> /etc/sysctl.conf[root@cdh01 ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag[root@cdh01 ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled[root@cdh01 parcel-repo]# vi /etc/rc.local# 将下面这两行配置添加到文件末尾即可echo never > /sys/kernel/mm/transparent_hugepage/defragecho never > /sys/kernel/mm/transparent_hugepage/enabled
修改完毕以后,点击重新运行,重新检测
重新检测之后第二个就没有问题了,然后选中第三个选项,点击继续按钮
选择适合自己的方案
点击继续按钮
cdh会自动进行角色分配,将刚才选择的大数据组件安装到集群的不同节点上。
注意:前期不是很熟悉的情况下,建议使用自动分配的方式即可,这里什么都不要修改。
点击继续按钮
在这里输入数据库名称,用户名、密码,然后点击 测试连接 按钮,测试成功的话,在每一行的最后面都会显示Successful,如果有问题,会显示具体的错误信息。
这些数据库我们在前面安装mysql的时候已经提前创建好了。
点击继续按钮
默认在这里不需要改什么东西
直接点击继续按钮即可
等待启动集群内大数据组件的服务,大致需要10~20分钟
服务启动成功之后是这样的,如果有红色的报错提示,可以点进去查看详细报错信息。
点击继续按钮
点击完成按钮,到此为止,CDH安装成功。
15、管理cdh集群 此时再访问cm的7180端口就会看到这个界面了。
界面中会显示黄色的警告信息和红色的安全隐患
关于黄色的警告信息可以动态观察,暂时不处理也是没问题的。
但是红色的安全隐患建议解决一下。
此时集群中有一条红色的重要问题信息
可以直接点击红色的感叹号查看问题详细信息。
这里面其实还有一个黄色的警告信息,这个是针对hdfs的纠删码机制的警告。
首先解决这个问题:
Erasure Coding Policy Verification Test
这个是hadoop3.0中的新特性(hdfs的存储策略),纠删码机制,可以节省HDFS的存储空间,不过至少需要有9个datanode才可以,目前我们这个集群只有2个datanode,所以不能使用这种策略。
修改hdfs的存储策略
选择No Default Erasure Coding Policy.这种策略,表示不使用纠删码机制,点击保存更改。
然后,去掉针对纠删码的检测
取消选中状态,点击保存更改。
此时,这个页面就不显示隐患信息了。
点击首页链接,回到首页
接着继续来解决这个安全隐患,点击这个红色感叹号
进入这个界面,点击查看详细解释
这里提示的是hdfs中block块的副本数不足,其实是因为现在hdfs中的数据默认需要存储3份,但是我们这个集群之后2个datanode,如果再多一个datanode节点就不会有这个问题,不过也不影响使用,如果大家在搭建的时候集群内的机器足够多的话是不会出现这个安全隐患的提示的。
针对CDH集群,如果我们想修改某一个组件的参数该如何修改了?
以hdfs组件为例,由于目前集群内只有2个datanode,那么我希望将副本的数量修改为2
如何修改了?先回到首页
进入hdfs的配置界面
输入关键词进行搜索
将副本因子改为2,点击保存更改按钮
改完配置之后,想要生效需要重新启动,此时页面也提示了,需要重启
可以选择只重启某一个组件(点击组件后面的按钮,在弹出框中选择重启),
或者全部重启(点击cluster1 右边的按钮,在弹出框中选择重启)。
在这里我们选择全部重启,因为大部分组件都提示需要重启读取最新的配置。
确认重启
等待集群重启
重启成功之后发现,这里还有一些提示,需要我们重新部署客户端配置
先点击HDFS后面的按钮
点击右下角的 部署客户端配置按钮
接着进入部署页面
部署成功之后点击完成按钮即可
然后可以跳转到首页,此时会发现就不显示那个蓝色的按钮了。
如果感觉这个红色的感叹号比较别扭,可以选择忽略这个问题,因为我们知道是什么原因造成的。
点击红色感叹号,然后点击suppress
在弹出的界面中点击确认即可
此时再回到首页,刷新几次页面,这个红色的感叹号就会消失了。
目前首页还显示的有一些黄色的警告信息,都是一些关于jvm内存配置的警告信息,根据提示去修改即可。
不管是使用apache官方的hadoop安装的hdfs,还是使用cdh集群安装的hdfs,操作都是一样的。
此时我们进入到cdh01节点中,操作一下hdfs
[root@cdh01 ~]# hdfs dfs -ls /Found 2 itemsdrwxrwxrwt - hdfs supergroup 0 2020-10-28 23:13 /tmpdrwxr-xr-x - hdfs supergroup 0 2020-10-28 23:13 /user
创建文件夹
[root@cdh01 ~]# hdfs dfs -mkdir /datamkdir: Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x
提示权限问题,创建失败。
CDH环境下Hadoop平台最高权限用户是hdfs,属于supergroup组。
默认HDFS会开启权限认证,所以操作时,需要将root用户切换到hdfs用户,否则会报错。
这样操作就可以了
[root@cdh01 ~]# sudo -uhdfs hdfs dfs -mkdir /data[root@cdh01 ~]# hdfs dfs -ls /Found 3 itemsdrwxr-xr-x - hdfs supergroup 0 2020-10-29 00:10 /datadrwxrwxrwt - hdfs supergroup 0 2020-10-28 23:13 /tmpdrwxr-xr-x - hdfs supergroup 0 2020-10-28 23:13 /user
这样每次操作都需要切换不太方便,如yarn在调度时,通常会生成一些临时文件,执行完毕会删除,如果权限不够会导致出错。Hive和Hbase读写hdfs,也很容易因为权限问题导致出错。但是关闭权限检查,任何用户都可以操作HDFS数据,数据安全性又没有保障,所以使用将用户添加到supergroup组的方式。
通常会把 root 或者需要的用户添加到 supergroup组,但Linux下默认是没有supergroup组。所以,先在Linux添加supergroup组,把root用户添加到supergroup里,再同步权限到HDFS。
想要停止整个集群的话,可以分为两步
1:先停止cdh集群
2:再停止cm
分别点击对应按钮中的停止链接即可。
想要启动整个集群的话,可以分为两步
1:先启动cm
2:再启动cdh集群
分别点击对应按钮中的启动链接即可。