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

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

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有一个沙盒功能,就是将大数据的服务也提前安装在系统中,加载虚拟机后就可以直接使用。

大数据平台CDH的介绍和5.16/6.3版本的搭建_第1张图片

1.1 CDH体系结构

大数据平台CDH的介绍和5.16/6.3版本的搭建_第2张图片

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

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

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

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

5. Cloudera Repository:软件仓库。

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

1.2 CDH官网下载地址

https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_6_download.html

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

大数据平台CDH的介绍和5.16/6.3版本的搭建_第3张图片

下面是cdh仓库的下载:

大数据平台CDH的介绍和5.16/6.3版本的搭建_第4张图片

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

大数据平台CDH的介绍和5.16/6.3版本的搭建_第5张图片

重启网卡:

systemctl restart network

 2.2.2 配置Ip与主机名映射

vi /etc/hosts

 大数据平台CDH的介绍和5.16/6.3版本的搭建_第6张图片

2.3 配置无密码登录 

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

详细配置链接:https://blog.csdn.net/wjzholmes/article/details/100415396

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

大数据平台CDH的介绍和5.16/6.3版本的搭建_第7张图片

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

### 参考https://blog.csdn.net/q1059081877q/article/details/48251893

https://blog.csdn.net/kexianmiao/article/details/52413382

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。
大数据平台CDH的介绍和5.16/6.3版本的搭建_第8张图片

vi rhel7.repo   

 大数据平台CDH的介绍和5.16/6.3版本的搭建_第9张图片

[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/,如果可以看到以下界面说明是成功的。
大数据平台CDH的介绍和5.16/6.3版本的搭建_第10张图片
 在var/www/html目录下创建一个目录cm目录,用于存放Cloudera Manager、mysql和jdk等rpm安装包

mkdir –p  /var/www/html/cm

大数据平台CDH的介绍和5.16/6.3版本的搭建_第11张图片

 将包括 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

大数据平台CDH的介绍和5.16/6.3版本的搭建_第12张图片

 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 

大数据平台CDH的介绍和5.16/6.3版本的搭建_第13张图片

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

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 ,如下:

大数据平台CDH的介绍和5.16/6.3版本的搭建_第14张图片

  • 启动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启动日志)   

大数据平台CDH的介绍和5.16/6.3版本的搭建_第15张图片

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

大数据平台CDH的介绍和5.16/6.3版本的搭建_第16张图片

此时可以查看网页 

大数据平台CDH的介绍和5.16/6.3版本的搭建_第17张图片

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内部通信使用的。

大数据平台CDH的介绍和5.16/6.3版本的搭建_第18张图片

5 CDH服务的安装

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

大数据平台CDH的介绍和5.16/6.3版本的搭建_第19张图片

大数据平台CDH的介绍和5.16/6.3版本的搭建_第20张图片

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

大数据平台CDH的介绍和5.16/6.3版本的搭建_第21张图片

大数据平台CDH的介绍和5.16/6.3版本的搭建_第22张图片

选择自定义安装服务:

大数据平台CDH的介绍和5.16/6.3版本的搭建_第23张图片

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

大数据平台CDH的介绍和5.16/6.3版本的搭建_第24张图片

大数据平台CDH的介绍和5.16/6.3版本的搭建_第25张图片

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的报错
 大数据平台CDH的介绍和5.16/6.3版本的搭建_第26张图片

解决方法:

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

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

 

你可能感兴趣的:(大数据)