大数据平台CDH的介绍和5.16/6.3版本的搭建

以下记录和介绍为自己在测试环境中的实际操作,因为很详细,所以篇幅较长,作为自己的记录文档,同时也帮助初学大数据平台搭建的朋友。

目录

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. CDH介绍

Hadoop主流三大发行版本:

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.1 CDH体系结构

1.  Server:是CM的核心,管理整个集群安装软件、配置、开始和停止服务。

2. Agent:执行Server发送的命令,以及启动和停止进程节点机器上的进程,触发安装和监控主机。每隔一段时间(4s)向server汇报心跳。

3. Manageement Service:执行各种监控、报警和报告功能的服务。

4 .Database:存储配置和监控信息。

5. Cloudera Repository:软件仓库。

6. Client:包括Admin Console管理员控制台,是管理集群和CM的交互界面。

1.2 CDH官网下载地址

CDH 6 Download Information | 6.x | Cloudera Documentation

下面界面是CM软件的下载界面:

下面是cdh仓库的下载:

2. 系统配置


2.1系统选择和集群规划

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 配置集群ip

 2.2.1 配置网络

vi /etc/sysconfig/network-scripts/ifcfg-ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.117.81
GATEWAY=192.168.117.1
NETMASK=255.255.255.0
DNS1=114.114.114.114		###离线配置就不需要设置DNS

重启网卡:

systemctl restart network

 2.2.2 配置Ip与主机名映射

vi /etc/hosts

 

2.3 配置无密码登录 

###安装Cloudera Manager本身并不需要ssh无密码登陆,这里做配置主要是为了后续配置集群方便。实现多个机器的ssh免密码登录的核心思想是把每一个机器的rsa公钥集中到一个文件中,并且把这个文件分发到所有的机器上面去。 

详细配置链接:ssh免秘钥登录_大宇进阶之路的博客-CSDN博客

mkdir  -p /root/.ssh

进入/root/.ssh/目录下执行命令生成id_rsa.pub文件

ssh-keygen -t rsa            ###之后一路回车,产生秘钥

并将秘钥追加至authorized_keys文件中

cat id_rsa.pub >> authorized_keys       ###在.ssh文件下运行此命令

将此节点authorized_keys文件传至下一台机器

scp authorized_keys root@mini2:/root/.ssh

以此类推,将每台机器文件追加并传至下一台机器,然后将最后一台机器的秘钥再分发到每台机器中。效果如下: 

2.4 禁用防火墙 (所有节点执行)

在所有节点上关闭防火墙

systemctl status firewalld           检查防火前状态
systemctl stop firewalld             关闭防火墙
systemctl disable firewalld         主机重启自动关闭防火墙

2.5 禁用SELinux(所有节点执行)

在命令行运行:

sed -i 's/^SELINUX=\(.*\)/SELINUX=disabled/g' /etc/selinux/config

2.6 禁用透明大页(THP)(所有节点执行)

这一参数默认值可能会导致CDH性能下降,在所有节点执行以下命令: 

echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never >> /etc/rc.local  	###为了防止重启机器后,上述配置不生效,将以上内容写入 /etc/rc.local

2.7 禁用交换空间(所有节点执行)

设置将 /proc/sys/vm/swappiness 设置为 0 (修改swap空间的swappiness,降低对硬盘的缓存)
执行以下输入:

echo "vm.swappiness=0"  >> /etc/sysctl.conf   (永久降低虚拟内存需求率)
sysctl -p                                     (使命令生效) 

2.8 设置文件打开数量和用户最大进程数

查看文件打开数量        ulimit -a 
查看用户最大进程数      ulimit -u

vi /etc/security/limits.conf 

增加以下内容:
    * soft nofile 65535
    * hard nofile 65535
    * soft nproc 32000
    * hard nproc 32000
重启系统后生效。

3. 外部软件和服务准备

3.1 CDH yum源的制作

 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 目录下执行命令:

rename .repo .repo.bak *    ###将原yum源重命令让其失效,或者删除原repo文件

3.1.3 编辑rhel7.repo文件

yum的配置文件在/etc/yum.repos.d/目录下,在该目录创建一个.repo的文件,文件名任意,这里我建立rhel7.repo。

vi rhel7.repo   

 

[rhel7]                                  yum仓库的唯一标识符,防止冲突,也可以任意名称
name=rhel7                              yum仓库的名称
baseurl=file:///home/iso_yum/           提供的yum源的方式(ftp://… 、http:// 、本地file:///)
enabled=1                               yum源是否可用(“1”为可用,“0”为禁用)
gpgcheck=0       	                  此源是否校验文件(“1”为校验,“0为不校验”)

 3.1.4 .repo文件发送到其他节点机器下

scp /etc/yum.repos.d/rhel7.repo mini2:/etc/yum.repos.d/
scp /etc/yum.repos.d/rhel7.repo mini3:/etc/yum.repos.d/

 3.1.5 清空yum缓存(所有节点都执行)

yum clean all   	 清空缓存信息
yum repolist 	       查看yum仓库列表
yum  list | wc -l	 统计列出所有包的数量,如果列出了,说明yum源配置完成, 这里可以看出有3956个包

 

yum makecache 	构建yum缓存

3.2 安装httpd、NTP、Createrepo服务

推荐建立Cloudera Manager的yum源进行安装,以Parcel的方式建立Hadoop组件,两者都需要有一个FTP或者HTTP服务器,让安装过程能够从服务器中读取这些安装包,本次安装选择使用HTTP服务器作为RPM与Parcel安装程序的存放位置,NTP作为时钟同步服务器,按要求同步主机时钟,为了能够正确建立Cloudera Manager 安装包yum源,需要安装Createrepo工具。

3.2.1 安装httpd(主节点)

yum -y install httpd         ###就是用的刚配置的cenos7系统源
systemctl start httpd          (启动httpd服务)
systemctl status httpd         (查看httpd服务状态)
systemctl enable httpd         (将httpd服务加入到开启启动项中)

启动成功后可以浏览 http://mini1/,如果可以看到以下界面说明是成功的。

 在var/www/html目录下创建一个目录cm目录,用于存放Cloudera Manager、mysql和jdk等rpm安装包

mkdir –p  /var/www/html/cm

 将包括 oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm以及CM所有rpm包拷贝至cm目录下。

3.2.2 安装createrepo

yum -y install createrepo		### #将某目录制作成软件仓库的作用

 3.2.3 安装NTP(所有节点都安装)

yum -y  install ntp

 3.3 在http的目录下创建yum源

在/var/www/html/cm目录下执行命令:

createrepo .    以便在此目录下创建本地yum仓库 

在/etc/yum.repos.d下面新建cm.repo文件
 

vi cm.repo
[Cloudera_Manager]
name=Cloudera Manager
baseurl=http://192.168.117.81/cm
enabled=1
gpgcheck=0

3.3.1 .repo文件发送到其他节点机器下

scp /etc/yum.repos.d/cm.repo mini2:/etc/yum.repos.d/
scp /etc/yum.repos.d/cm.repo mini3:/etc/yum.repos.d/

3.3.2 清空yum缓存(所有节点都执行)

yum clean all   	清空缓存信息
yum repolist 	查看yum仓库列表
yum makecache 	构建yum缓存

3.4 安装JDK 及配置

3.4.1 安装jdk(所有节点都执行)

yum -y install jdk    ###因为var/www/html/cm目录下已经有jdk的rpm包作为yum源,多台服务器可以同时安装

java的默认安装目录为/usr/java

 3.4.2 配置jdk

vi /etc/profile

在文件的末尾添加一下内容

export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
export PATH=$PATH:$JAVA_HOME/bin

3.4.3 配置文件下发到其他节点

scp /etc/profile mini2:/etc/
scp /etc/profile mini3:/etc/

3.4.4    使配置的环境变量生效(所有节点执行)

source /etc/profile	

3.5 配置时间同步

时间同步有两种方法,这里选用更优的方法2.
1. 使用crontab命令使得mini2和mini3同步mini1的时间
2. 使用ntp进行同步,而ntp更精确!

3.5.1 查看是否开启chrony 

 查看是否开启chrony,禁用【mini1,mini2,mini3】chrony时间同步服务(centos7操作系统默认使用chrony)

systemctl stop chronyd     
systemctl disable chronyd

3.5.2 配置NTP

  • 配置主节点 
vi /etc/ntp.conf 

去掉注释,将地址改成网段地址

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

  • 配置其他从节点
vi /etc/ntp.conf

增加 server 192.168.117.81 ,如下:

  • 启动ntp服务(所有节点)
systemctl start ntpd.service
systemctl enable ntpd.service

### 如果机器时间相差较大,可以手动设置时间date -s "2020-2-10 21:41"
ntpq -p   查看命令同步的情况

3.6    配置Mysql数据库

    安装Mysql数据库用于存放CM相应的配置数据等。


3.6.1    安装mysql数据库

yum install -y mysql-community-server

 3.6.2    启动mysql

systemctl enable mysqld
systemctl list-unit-files |grep mysqld
systemctl start mysqld

 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的访问权限

mysql> grant all privileges on *.* to 'root'@'%' identified by 'root';
###  *.* 中前面的*号用来指定数据库名,后面的*号用来指定表名,root是用户@后面接限制的主机,%表示任何地方。
mysql> flush privileges;
mysql> show grants for root;        ###查看root用户权限

3.6.5    创建表cdh相关默认库(也可以后创建)

 输入命令;mysql -uroot -proot  进入mysql,执行以下sql建库语句        

 create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
 create database reports DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
 create database activity  DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
 create database sentry   DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

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  目录下,这一步需要在所有访问数据库的节点进行。

4 安装CDH集群

离线安装Cloudera Manager Server

4.1 安装CM server和Agent

在主节点mini1上安装CM Server 和CM Agent  

yum install -y cloudera-manager-daemons cloudera-manager-server   cloudera-manager-agent 

在节点mini2,mini3上安装 Cloudera Manager agent

yum install -y cloudera-manager-daemons cloudera-manager-agent

4.2 修改agent配置文件

分别修改mini1,mini2,mini3agent所在的节点的配置文件config.ini内容
    

vi /etc/cloudera-scm-agent/config.ini

server_host=mini1 (这里是以mini1作为server节点,让agent感知server所在节点)

4.3 初始化SCM的数据库

  在主节点mini初始化SCM的数据库

/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h localhost -uroot -proot --scm-host localhost scm root root

CDH5版本的初始化.sh文件在如下目录:

/usr/share/cmf/schema/scm_prepare_database.sh mysql -h localhost -uroot -proot --scm-host localhost scm root root

4.4 上传CDH服务包

上传以下三个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 

4.5 启动Cloudera Manager

主节点mini1启动Cloudera Manager Server

systemctl start cloudera-scm-server      (启动server)
systemctl status cloudera-scm-server     (查看server状态)
systemctl stop cloudera-scm-server         (停止server)
systemctl enable cloudera-scm-server     (开机启动server)
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log (查看server启动日志)   

到这一步说明就可以没问题了,通过使用netstat -nltp命令查看【mini1】端口7180 是否启动成功,如果出现这个7180端口

此时可以查看网页 

4.6 启动Cloudera Manager agent

在从节点【mini1,mini2,mini3】上启动Cloudera Manager agent

systemctl start cloudera-scm-agent    (启动agent)
systemctl enable cloudera-scm-agent   (开机启动agent) 
tail -f /var/log/cloudera-scm-agent/cloudera-scm-agent.log  (查看agent启动日志)    

启动完成,运行命令   netstat -nltp 查看端口号,如果增加了9000和19001端口说明成功,这两个端口是与server内部通信使用的。

5 CDH服务的安装

登录UI页面,一直默认继续,到以下这一步:

 下面这个界面等待时间较久:

选择自定义安装服务:

首先安装zookeeper,选择之前建立好的mysql中的数据库,并测试数据库连接:

6 安装遇到的问题

6.1 安装CDH时候出现主机运行状态不良情况

问题:通过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

6.2 Required List parameter 'hosts[]' is not present

问题:安装cdh的parcel包下一步时显示  Required List parameter 'hosts[]' is not present的报错
 

解决方法:

查看日志,跟manifest.json文件有关,删除/opt/cloudera/parcel-repo/目录下的manifest.json文件,重新上传。

重启cloudera-scm-server,报错解决。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大宇进阶之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值