以下记录和介绍为自己在测试环境中的实际操作,因为很详细,所以篇幅较长,作为自己的记录文档,同时也帮助初学大数据平台搭建的朋友。
目录
1. CDH介绍
Hadoop主流三大发行版本:
1.1 CDH体系结构
1.2 CDH官网下载地址
2. 系统配置
2.1系统选择和集群规划
2.2 配置集群ip
2.2.1 配置网络
2.2.2 配置Ip与主机名映射
2.3 配置无密码登录
2.4 禁用防火墙 (所有节点执行)
2.5 禁用SELinux(所有节点执行)
2.6 禁用透明大页(THP)(所有节点执行)
2.7 禁用交换空间(所有节点执行)
2.8 设置文件打开数量和用户最大进程数
3. 外部软件和服务准备
3.1 CDH yum源的制作
3.1.1 挂载虚拟机中的iso镜像 (所有节点执行)
3.1.2将原来的yum源命令失效
3.1.3 编辑rhel7.repo文件
3.1.4 .repo文件发送到其他节点机器下
3.1.5 清空yum缓存(所有节点都执行)
3.2 安装httpd、NTP、Createrepo服务
3.2.1 安装httpd(主节点)
3.2.2 安装createrepo
3.2.3 安装NTP(所有节点都安装)
3.3 在http的目录下创建yum源
3.3.1 .repo文件发送到其他节点机器下
3.3.2 清空yum缓存(所有节点都执行)
3.4 安装JDK 及配置
3.4.1 安装jdk(所有节点都执行)
3.4.2 配置jdk
3.4.3 配置文件下发到其他节点
3.4.4 使配置的环境变量生效(所有节点执行)
3.5 配置时间同步
3.5.1 查看是否开启chrony
3.5.2 配置NTP
3.6 配置Mysql数据库
3.6.1 安装mysql数据库
3.6.2 启动mysql
3.6.3 修改mysql密码
3.6.4 修改mysql的访问权限
3.6.5 创建表cdh相关默认库(也可以后创建)
3.6.6 上传mysql与CM连接的jar包
4 安装CDH集群
4.1 安装CM server和Agent
4.2 修改agent配置文件
4.3 初始化SCM的数据库
4.4 上传CDH服务包
4.5 启动Cloudera Manager
4.6 启动Cloudera Manager agent
5 CDH服务的安装
6 安装遇到的问题
6.1 安装CDH时候出现主机运行状态不良情况
6.2 Required List parameter 'hosts[]' is not present
1. Apache hadoop 官方社区开源版本
2. CDH
Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”),基于Web的用户界面,支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop,简化了大数据平台的安装、使用难度。
3. HDP
现在cdh已经将hdp收购。Cdh公司在2008年成立,hadoop创始人Doug Cutting也加入到cdh公司,hdp有一个沙盒功能,就是将大数据的服务也提前安装在系统中,加载虚拟机后就可以直接使用。
1. Server:是CM的核心,管理整个集群安装软件、配置、开始和停止服务。
2. Agent:执行Server发送的命令,以及启动和停止进程节点机器上的进程,触发安装和监控主机。每隔一段时间(4s)向server汇报心跳。
3. Manageement Service:执行各种监控、报警和报告功能的服务。
4 .Database:存储配置和监控信息。
5. Cloudera Repository:软件仓库。
6. Client:包括Admin Console管理员控制台,是管理集群和CM的交互界面。
CDH 6 Download Information | 6.x | Cloudera documentation
下面界面是CM软件的下载界面:
下面是cdh仓库的下载:
CentOS-7-x86_64-DVD-1708.iso
集群名称
节点类型
主机名
集群地址
Mini
ClouderaManager
Mini1
192.168.117.81
Namenode
Mini1
192.168.117.81
Mini2
192.168.117.82
Zookeeper节点
Mini[1-3]
192.168.117.81/82/83
Datanode节点
Mini[1-3]
192.168.117.81/82/83
2.2.1 配置网络
重启网卡:
2.2.2 配置Ip与主机名映射
###安装Cloudera Manager本身并不需要ssh无密码登陆,这里做配置主要是为了后续配置集群方便。实现多个机器的ssh免密码登录的核心思想是把每一个机器的rsa公钥集中到一个文件中,并且把这个文件分发到所有的机器上面去。
详细配置链接:ssh免秘钥登录_大宇进阶之路的博客-CSDN博客
进入/root/.ssh/目录下执行命令生成id_rsa.pub文件
并将秘钥追加至authorized_keys文件中
将此节点authorized_keys文件传至下一台机器
以此类推,将每台机器文件追加并传至下一台机器,然后将最后一台机器的秘钥再分发到每台机器中。效果如下:
在所有节点上关闭防火墙
在命令行运行:
sed -i 's/^SELINUX=(.*)/SELINUX=disabled/g' /etc/selinux/config
这一参数默认值可能会导致CDH性能下降,在所有节点执行以下命令:
设置将 /proc/sys/vm/swappiness 设置为 0 (修改swap空间的swappiness,降低对硬盘的缓存) 执行以下输入:
查看文件打开数量 ulimit -a 查看用户最大进程数 ulimit -u
增加以下内容: * soft nofile 65535 * hard nofile 65535 * soft nproc 32000 * hard nproc 32000 重启系统后生效。
3.1.1 挂载虚拟机中的iso镜像 (所有节点执行)
创建yum源存储目录/home/iso_yum,然后挂载镜像。这里使用Vmware虚拟机已经加载了centos7的镜像,在/dev/cdrom下。安装该yum源是为了安装http和creatrepo、ntp服务。
mkdir /home/iso_yum
mount /dev/cdrom /home/iso_yum
### 参考Mount挂载命令使用方法_大数据球球的博客-CSDN博客
VirtualBox中配置linux OS的本地磁盘镜像作为其软件源_不习惯打伞的鱼的博客-CSDN博客
mount -t iso9660 /dev/sr1 /home/iso_yum #挂载虚拟机镜像
其中mount -t iso9660表示挂载的是光盘或光盘镜像,而挂载CDROM使用mount命令即可,不加-t具体选项。
3.1.2将原来的yum源命令失效
在/etc/yum.repos.d 目录下执行命令:
3.1.3 编辑rhel7.repo文件
yum的配置文件在/etc/yum.repos.d/目录下,在该目录创建一个.repo的文件,文件名任意,这里我建立rhel7.repo。
3.1.4 .repo文件发送到其他节点机器下
3.1.5 清空yum缓存(所有节点都执行)
推荐建立Cloudera Manager的yum源进行安装,以Parcel的方式建立Hadoop组件,两者都需要有一个FTP或者HTTP服务器,让安装过程能够从服务器中读取这些安装包,本次安装选择使用HTTP服务器作为RPM与Parcel安装程序的存放位置,NTP作为时钟同步服务器,按要求同步主机时钟,为了能够正确建立Cloudera Manager 安装包yum源,需要安装Createrepo工具。
3.2.1 安装httpd(主节点)
启动成功后可以浏览 http://mini1/,如果可以看到以下界面说明是成功的。 在var/www/html目录下创建一个目录cm目录,用于存放Cloudera Manager、mysql和jdk等rpm安装包
将包括 oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm以及CM所有rpm包拷贝至cm目录下。
3.2.2 安装createrepo
3.2.3 安装NTP(所有节点都安装)
在/var/www/html/cm目录下执行命令:
createrepo . 以便在此目录下创建本地yum仓库
在/etc/yum.repos.d下面新建cm.repo文件
3.3.1 .repo文件发送到其他节点机器下
3.3.2 清空yum缓存(所有节点都执行)
3.4.1 安装jdk(所有节点都执行)
java的默认安装目录为/usr/java
3.4.2 配置jdk
在文件的末尾添加一下内容
3.4.3 配置文件下发到其他节点
3.4.4 使配置的环境变量生效(所有节点执行)
时间同步有两种方法,这里选用更优的方法2. 1. 使用crontab命令使得mini2和mini3同步mini1的时间 2. 使用ntp进行同步,而ntp更精确!
3.5.1 查看是否开启chrony
查看是否开启chrony,禁用【mini1,mini2,mini3】chrony时间同步服务(centos7操作系统默认使用chrony)
3.5.2 配置NTP
- 配置主节点
去掉注释,将地址改成网段地址
restrict 192.168.117.0 mask 255.255.255.0 nomodify notrap ###表示授权192.168.117.0-192.168.117.255网段上的所有机器都可以从时间服务器查询和同步时间。
注释掉这几个
#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 127.127.1.0 ###在实际中可能会出现节点网络连接丢失的情况,这个时候我们可以以本地时间作为时间服务
fudge 127.127.1.0 stratum 10
- 配置其他从节点
增加 server 192.168.117.81 ,如下:
- 启动ntp服务(所有节点)
### 如果机器时间相差较大,可以手动设置时间date -s "2020-2-10 21:41" ntpq -p 查看命令同步的情况
安装Mysql数据库用于存放CM相应的配置数据等。
3.6.3 修改mysql密码
获取临时登录密码:grep "password" /var/log/mysqld.log 使用临时登录密码进入mysql : mysql -uroot -p'临时密码' 修改密码: mysql> set global validate_password_policy=0; #定义复杂度 mysql> set global validate_password_length=1; #定义长度 默认是8 mysql> set password for 'root'@'localhost'=password('root'); #密码不能设置太简单
3.6.4 修改mysql的访问权限
3.6.5 创建表cdh相关默认库(也可以后创建)
输入命令;mysql -uroot -proot 进入mysql,执行以下sql建库语句
3.6.6 上传mysql与CM连接的jar包
新建目录:mkdir -p /usr/share/java 将mysql-connector-java-5.1.47.jar命名为 mysql-connector-java.jar并上传到mini1的/usr/share/java 目录下,这一步需要在所有访问数据库的节点进行。
离线安装Cloudera Manager Server
在主节点mini1上安装CM Server 和CM Agent
在节点mini2,mini3上安装 Cloudera Manager agent
分别修改mini1,mini2,mini3agent所在的节点的配置文件config.ini内容
server_host=mini1 (这里是以mini1作为server节点,让agent感知server所在节点)
在主节点mini初始化SCM的数据库
CDH5版本的初始化.sh文件在如下目录:
上传以下三个CHD6大数据服务组件资源包 到【mini1】节点的 /opt/cloudera/parcel-repo 目录下 CDH-6.3.0-1.cdh6.3.0.p0.1279813-el7.parcel CDH-6.3.0-1.cdh6.3.0.p0.1279813-el7.parcel.sha manifest.json
主节点mini1启动Cloudera Manager Server
到这一步说明就可以没问题了,通过使用netstat -nltp命令查看【mini1】端口7180 是否启动成功,如果出现这个7180端口
此时可以查看网页
在从节点【mini1,mini2,mini3】上启动Cloudera Manager agent
启动完成,运行命令 netstat -nltp 查看端口号,如果增加了9000和19001端口说明成功,这两个端口是与server内部通信使用的。
登录UI页面,一直默认继续,到以下这一步:
下面这个界面等待时间较久:
选择自定义安装服务:
首先安装zookeeper,选择之前建立好的mysql中的数据库,并测试数据库连接:
问题:通过Cloudera WEB界面安装Hadoop过程中,在安装Parcel步骤时,一个节点分配激活失败,报错信息显示”主机运行状况不良 分析: CM的集群是Server-Agent模式的,那么必须有一个唯一的id来标识Server和Agent属于同一个集群,在Agent端就是使用cm_guid文件来记录id的。 假设server端重新安装了一遍,重新构建集群,而agent没有重新安装,那么他们的id是一定不同的,就会造成主机运行状况不良的异常。解决方法: 删除agent目录下面的cm_guid文件,并重启失败节点的agent服务恢复 find / -name cm_guid rm -rf /var/lib/cloudera-scm-agent/cm_guid systemctl restart cloudera-scm-agent 解决方案参考以下链接: https://blog.csdn.net/holdbelief/article/details/80287471
问题:安装cdh的parcel包下一步时显示 Required List parameter 'hosts[]' is not present的报错
解决方法:
查看日志,跟manifest.json文件有关,删除/opt/cloudera/parcel-repo/目录下的manifest.json文件,重新上传。
重启cloudera-scm-server,报错解决。