欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CDH6.2.1搭建(史上最全的安装教程)

程序员文章站 2022-05-01 13:02:41
...

1.Cloudera Manager

1.1 CM简介

1.1.1 CM简介

Cloudera Manager是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具,使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提高集群管理的效率。
CDH6.2.1搭建(史上最全的安装教程)

1.1.2 CM架构

CDH6.2.1搭建(史上最全的安装教程)

1.2 CM部署准备配置

1.2.1 修改hosts文件

[aaa@qq.com ~]# vim /etc/hosts
127.0.0.1 localhost  localhost
::1     localhost       localhost.localdomain   localhost6      localhost6.localdomain6
172.17.138.24 hadoop001 hadoop001 
172.17.138.25 hadoop002 hadoop002 
172.17.138.23 hadoop003 hadoop003 

注意:这里每个人不一样,ip填写的是私有ip,做完后ping一下。

1.2.2 SSH免密登录

配置node01对node01、node02、node03三台服务器免密登录。CDH服务开启与关闭是通过server和agent来完成的,所以这里不需要配置SSH免密登录,但是为了我们分发文件方便,在这里我们也配置SSH。
1)生成公钥和私钥:

[aaa@qq.com .ssh]$ ssh-****** -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
2)将公钥拷贝到要免密登录的目标机器上

[aaa@qq.com .ssh]$ ssh-copy-id node01
[aaa@qq.com .ssh]$ ssh-copy-id node02
[aaa@qq.com .ssh]$ ssh-copy-id node03

3)重复1和2的操作,配置node02对node01、node02、node03三台服务器免密登录。

1.2.3 集群同步脚本

1)在/root目录下创建bin目录,并在bin目录下创建文件xsync,文件内容如下:

[aaa@qq.com ~]$ mkdir bin

[aaa@qq.com ~]$ cd bin/

[aaa@qq.com bin]$ vi xsync

在该文件中编写如下代码

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=01; host<04; host++)); do
        echo ------------------- node0$host --------------
        rsync -av $pdir/$fname aaa@qq.com$host:$pdir
done

2)修改脚本 xsync 具有执行权限

[aaa@qq.com bin]$ chmod 777 xsync

可以在每台机器都增加该脚本,方便后面的操作。

1.2.4 集群整体操作脚本

1)在/root/bin目录下创建脚本xcall.sh

[aaa@qq.com bin]$ vim xcall.sh

2)在脚本中编写如下内容

#! /bin/bash

for i in node01 node02 node03
do
        echo --------- $i ----------
        ssh $i "source /etc/profile ; $*"
done

3)修改脚本执行权限

[aaa@qq.com bin]$ chmod +x xcall.sh

4)测试

[aaa@qq.com bin]# xcall.sh jps

该脚本也可以在集群每台的机器上面增加

1.2.5 关闭防火墙

​ 阿里云的防火墙默认是关闭的,但是他有web防火墙,我们需要将7180,3306,8888,8889,9870等端口开放。本地服务器的话需要执行

firewalld 服务管理

1、安装firewalld

yum -y install firewall

2、开机启动/禁用服务

systemctl enable/disable firewalld

3、启动/关闭服务

systemctl start/stop firewalld

4、查看服务状态

systemctl status firewalld

1.2.6 关闭SELINUX

安全增强型Linux(Security-Enhanced Linux)简称SELinux,它是一个 Linux 内核模块,也是Linux的一个安全子系统。为了避免安装过程出现各种错误,建议关闭,有如下两种关闭方法:

1)临时关闭(不建议使用)

[aaa@qq.com ~]# setenforce 0

但是这种方式只对当次启动有效,重启机器后会失效。

2)永久关闭(建议使用)

修改配置文件/etc/selinux/config

[aaa@qq.com ~]# vim /etc/selinux/config

将SELINUX=enforcing 改为SELINUX=disabled

SELINUX=disabled

3)同步/etc/selinux/config配置文件

[aaa@qq.com ~]# xsync /etc/selinux/config

4)重启node01、node02、node03主机

[aaa@qq.com ~]# reboot

[aaa@qq.com ~]# reboot

[aaa@qq.com ~]# reboot

1.2.7 配置NTP时钟同步

1.确认是否需要安装

1) 我们的操作系统是 Centos7 , 使用 rpm 管理。首先,查看下我们是否已经安装了该服务,

执行以下命令。

rpm -qa | grep ntp

在我们的主机,执行效果如下:

[aaa@qq.com sbin]# rpm -qa | grep ntp
ntp-4.2.6p5-28.el7.centos.x86_64
fontpackages-filesystem-1.44-8.el7.noarch
ntpdate-4.2.6p5-28.el7.centos.x86_64
python-ntplib-0.3.2-1.el7.noarch
You have new mail in /var/spool/mail/root

若只有ntpdate而未见ntp,则需删除原有ntpdate。如:

ntpdate-4.2.6p5-22.el7_0.x86_64
fontpackages-filesystem-1.44-8.el7.noarch
python-ntplib-0.3.2-1.el7.noarch

2)删除已安装ntp

【命令】yum -y remove ntpdate-4.2.6p5-22.el7.x86_64

3)重新安装ntp

【命令】yum -y install ntp

2.安装服务

1)Install NTP(每一台)

yum install ntp

2)启动ntpd并设置为开机自启(每个节点node01,node02,node03)

[aaa@qq.com ~]#sudo systemctl enable ntpd

[aaa@qq.com ~]#  systemctl start ntpd

查看服务状态

systemctl status ntpd

检测时间同步情况

ntpq -p

CDH6.2.1搭建(史上最全的安装教程)

3)使用群发date命令查看结果

xcall date

4.修改时区

1、查看系统当前的时区

[aaa@qq.com etc]# timedatectl
      Local time: Fri 2020-07-24 08:31:38 UTC
  Universal time: Fri 2020-07-24 08:31:38 UTC
        RTC time: Fri 2020-07-24 08:31:38
       Time zone: UTC (UTC, +0000)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

2、修改系统使用的时区

修改为中国时区

timedatectl set-timezone Asia/Shanghai

修改为世界时区

timedatectl set-timezone UTC

3、时间不准确时校准时间

yum install -y ntpdate
ntpdate us.pool.ntp.org

4.将硬件时钟调整为与本地时钟一致, 0 为设置为 UTC 时间((立即生效))

timedatectl set-local-rtc 1

5.查看硬件时间

hwclock --show

1.3 CM安装准备软件

1.3.1 安装JDK(三台)

1)在node01创建**/usr/java**目录

[aaa@qq.com opt]# mkdir /usr/java

2)用SecureCRT或xshell将jdk-8u144-linux-x64.tar.gz上传至node01,并解压到/usr/java目录下。

[aaa@qq.com ~]# tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/java/

3)配置JAVA_HOME环境变量

(1)打开/etc/profile文件

[aaa@qq.com software]$ vim /etc/profile

在profile文件末尾添加JDK路径

#JAVA_HOME

export JAVA_HOME=/usr/java/jdk1.8.0_144

export PATH=$PATH:$JAVA_HOME/bin

(2)让修改后的文件生效

[aaa@qq.com jdk1.8.0_144]$ source /etc/profile

4)测试JDK是否安装成功

[aaa@qq.com jdk1.8.0_144]# java -version

java version "1.8.0_144"

5)将node01中的JDK和环境变量分发到node02、node03两台主机

[aaa@qq.com opt]# xsync /usr/java/

[aaa@qq.com opt]# xsync /etc/profile

分别在node02、node03上source一下

[aaa@qq.com ~]$ source /etc/profile

[aaa@qq.com ~]# source /etc/profile

1.3.2 安装MySQL

注意:一定要用root用户操作如下步骤;先卸载MySQL再安装

1)安装包准备

(1)查看MySQL是否安装

[aaa@qq.com 桌面]# rpm -qa|grep -i mysql(忽略查询的时候的大小写)

mysql-libs-5.1.73-7.el6.x86_64

(2)如果安装了MySQL,就先卸载

[aaa@qq.com 桌面]#

rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64

2)安装MySQL服务器

(1)安装

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

sudo yum install mysql-server

检查是否安装好:

启动服务:

sudo systemctl start mysqld

执行 :

mysql

看是否能空密码连接上。

CDH6.2.1搭建(史上最全的安装教程)

修改密码

SET PASSWORD=PASSWORD('000000');

退出

exit

最后不要忘记, 将mysql 加到 开机启动中**

sudo systemctl enable mysqld

3)MySQL中user表中主机配置

配置root用户的远程登录,只要是root用户+密码,在任何主机上都能登录MySQL数据库。

(1)进入MySQL

[aaa@qq.com mysql-libs]# mysql -uroot -p000000

(2)显示数据库

mysql>show databases;

(3)使用MySQL数据库

mysql>use mysql;

(4)展示MySQL数据库中的所有表

mysql>show tables;

(5)展示user表的结构

mysql>desc user;

(6)查询user表

mysql>select User, Host, Password from user;

(7)修改user表,把Host表内容修改为%

mysql>update user set host='%' where host='localhost';

(8)删除root用户的其他host

mysql>

delete from user where Host='node01';

delete from user where Host='127.0.0.1';

delete from user where Host='::1';

(9)刷新

mysql>flush privileges;

(10)退出

mysql>quit;

1.3.3 为CM安装mysql驱动

(1)下载mysql-connector到node01的/opt/software目录,并解压文件到当前目录

wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz

tar -zxvf mysql-connector-java-5.1.46.tar.gz -C /opt/module/

(2)创建文件夹并将用到的jar包复制到文件夹下

sudo mkdir -p /usr/share/java/
cd mysql-connector-java-5.1.46
sudo cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar

注意:jar包名称要修改为mysql-connector-java.jar

(3)分发驱动

xsync /usr/share/java

1.3.4 创建CM用的数据库

在MySQL中依次创建监控数据库、Hive数据库、Oozie数据库、Hue数据库

1)启动数据库

[aaa@qq.com ~]# mysql -uroot -p000000

2)集群监控数据库

mysql> create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

3)Hive数据库

mysql> create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

4)Oozie数据库

mysql> create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

5)Hue数据库

mysql> create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

6)sentry数据库

mysql> create database sentry DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

7)下面数据库都可以创建一下

create database scm DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database rman DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database navDEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database navmsDEFAULT CHARSET utf8 COLLATE utf8_general_ci;

7)关闭数据库

mysql> quit;

1.4 CM安装部署

1.4.1 CM安装

Cloudera Manager默认采用yum安装,对于能够联网的用户,可直接在线安装,十分快捷方便。对于网络不畅的用户,则可搭建本地yum源,进行安装。

1)集群规划

节点 node01 node02 node03
服务 cloudera-scm-server cloudera-scm-agent cloudera-scm-agent cloudera-scm-agent

2)下载在线yum源配置文件(在线yum安装)

cd /etc/yum.repos.d

wget https://archive.cloudera.com/cm6/6.2.1/redhat7/yum/cloudera-manager.repo

3)分发在线yum源配置文件(在线yum安装)

xsync /etc/yum.repos.d/cloudera-manager.repo

4)搭建本地yum源(离线yum安装)(若网络环境畅通,此步可直接跳过

(1)将压缩包cloudera-repos.tar.gz拷贝到集群中的一台节点,解压到/var/www/html路径下

[aaa@qq.com ~]# tar -zxvf cloudera-repos.tar.gz -C /var/www/html

(2)进入/var/www/html/路径,并开启http服务(这个服务需要开启才能进行后面服务的安装)

[aaa@qq.com ~]# cd /var/www/html/

[aaa@qq.com html]# python -m SimpleHTTPServer 80

(3)浏览器访问该节点的80端口,查看http服务是否正常开启

http://node01:80/

CDH6.2.1搭建(史上最全的安装教程)

(4)编辑本地yum源配置文件

vim /etc/yum.repos.d/cloudera-manager.repo

文件内容如下

[cloudera-manager]

name=cloudera-manager

baseurl=http://node01:80/cloudera-repos/cm6/6.2.1/redhat7/yum/

enabled=1

gpgcheck=0

(5)分发该配置文件

xsync /etc/yum.repos.d/cloudera-manager.repo

1.4.2安装CM server及agent

[aaa@qq.com ~]# yum -y install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
[aaa@qq.com ~]# yum -y install cloudera-manager-agent cloudera-manager-daemons
[aaa@qq.com ~]# yum -y install cloudera-manager-agent cloudera-manager-daemons

1.4.3 修改CM配置文件(三台,不要用xsync同步)

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

分别修改每台集群的server_host=node01

CDH6.2.1搭建(史上最全的安装教程)

6)为CM配置数据库(自带脚本)

/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm root 000000

1.4.4 启动CM服务

1)启动服务节点:node01

[aaa@qq.com ~]# systemctl start cloudera-scm-server

2)启动工作节点:node01、node02、node03

[aaa@qq.com ~]# systemctl start cloudera-scm-agent


[aaa@qq.com ~]# systemctl start cloudera-scm-agent


[aaa@qq.com ~]# systemctl start cloudera-scm-agent

3)查看Server启动日志

[aaa@qq.com cm]# tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WgULXbX3-1595816209817)(C:\Users\刘建新\AppData\Roaming\Typora\typora-user-images\image-20200723155540374.png)]

出现Started Jetty server字样及表明启动成功。

4)访问http://node01:7180(初始用户名、密码均为admin)

CDH6.2.1搭建(史上最全的安装教程)

1.4.5关闭CM服务

1)关闭工作节点:node01、node02、node03

[aaa@qq.com ~]# systemctl stop cloudera-scm-agent

 

[aaa@qq.com ~]# systemctl stop cloudera-scm-agent

 

[aaa@qq.com ~]# systemctl stop cloudera-scm-agent

2)关闭服务节点:node01

[aaa@qq.com ~]# systemctl stop cloudera-scm-server

2 数仓之CDH

Cloudera Manager提供了十分方便的安装向导,大大简化了CDH的安装和部署。

1.5 CM的集群部署

1.5.1欢迎页面

CDH6.2.1搭建(史上最全的安装教程)

1.5.2 接受条款和协议

CDH6.2.1搭建(史上最全的安装教程)

1.5.3 选择免费

CDH6.2.1搭建(史上最全的安装教程)

CDH6.2.1搭建(史上最全的安装教程)

1.5.4部署CDH集群

1)欢迎页面

CDH6.2.1搭建(史上最全的安装教程)

2)集群命名

CDH6.2.1搭建(史上最全的安装教程)

3)选定集群物理节点

CDH6.2.1搭建(史上最全的安装教程)

4)添加本地parcel库

http://node01:80/cloudera-repos/cdh6/6.2.1/parcels/

CDH6.2.1搭建(史上最全的安装教程)

http://node01:80/cloudera-repos/cdh6/6.2.1/parcels/

CDH6.2.1搭建(史上最全的安装教程)

CDH6.2.1搭建(史上最全的安装教程)

5)等待parcel的下载、分配、解压和**

CDH6.2.1搭建(史上最全的安装教程)

6)检查集群网络环境

CDH6.2.1搭建(史上最全的安装教程)

7)选择要安装的CDH组件,选择自定义安装

CDH6.2.1搭建(史上最全的安装教程)

8)选择需要安装的组件,如下

CDH6.2.1搭建(史上最全的安装教程)

9)CDH各组件角色分布

CDH6.2.1搭建(史上最全的安装教程)

CDH6.2.1搭建(史上最全的安装教程)

10)数据库连接测试

CDH6.2.1搭建(史上最全的安装教程)

11)各组件基本设置,使用默认即可

CDH6.2.1搭建(史上最全的安装教程)

12)等待安装部署和启动

CDH6.2.1搭建(史上最全的安装教程)

CDH6.2.1搭建(史上最全的安装教程)

CDH6.2.1搭建(史上最全的安装教程)

CDH6.2.1搭建(史上最全的安装教程)

1.5.5 Sqoop安装部署

1)添加服务

CDH6.2.1搭建(史上最全的安装教程)

2)选择Sqoop

CDH6.2.1搭建(史上最全的安装教程)

3)选择部署节点

CDH6.2.1搭建(史上最全的安装教程)

4)完成

1.6 集群配置修改

1.6.1 配置Hadoop支持LZO

1)点击主机,在下拉菜单中点击Parcel

CDH6.2.1搭建(史上最全的安装教程)

2)点击配置

CDH6.2.1搭建(史上最全的安装教程)

3)加上gplextras parcel库的url

本地url: http://node01:8900/cloudera-repos/gplextras6/6.2.1/parcels/

远程url: https://archive.cloudera.com/gplextras6/6.2.1/parcels/

CDH6.2.1搭建(史上最全的安装教程)

4)静待片刻,Parcel列表中出现了GPLEXTERAS,依次点击下载、分配、**。

CDH6.2.1搭建(史上最全的安装教程)

5)修改HDFS配置

在HDFS配置项中搜索“压缩编码解码器”,加入com.hadoop.compression.lzo.LzopCodec

CDH6.2.1搭建(史上最全的安装教程)

6)修改Hive配置

在Hive配置项中搜索“Hive 辅助 JAR 目录”,加入/opt/cloudera/parcels/GPLEXTRAS/lib/hadoop/lib

CDH6.2.1搭建(史上最全的安装教程)

7)修改Sqoop配置

在Sqoop的配置项中搜索“sqoop-conf/sqoop-env.sh 的 Sqoop 1 Client 客户端高级配置代码段(安全阀)”,加入以下字段

HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/opt/cloudera/parcels/GPLEXTRAS/lib/hadoop/lib/*
JAVA_LIBRARY_PATH=$JAVA_LIBRARY_PATH:/opt/cloudera/parcels/GPLEXTRAS/lib/hadoop/lib/native

CDH6.2.1搭建(史上最全的安装教程)

1.6.2NameNode NameNode 的 Java 堆栈大小

1)waring现象如下图

CDH6.2.1搭建(史上最全的安装教程)

2)更改为4G

1.6.3 修改HDFS的权限检查配置

关闭HDFS中的权限检查:dfs.permissions。

CDH6.2.1搭建(史上最全的安装教程)

1.6.4开启高可用

1)进入HDFS页面点击启用High Availability

CDH6.2.1搭建(史上最全的安装教程)

2)命名

CDH6.2.1搭建(史上最全的安装教程)

3)分配角色

CDH6.2.1搭建(史上最全的安装教程)

4)审核更改

/dfs/jn

CDH6.2.1搭建(史上最全的安装教程)

5)等待启动服务

CDH6.2.1搭建(史上最全的安装教程)

1.6.5配置Hue支持Impala

CDH6.2.1搭建(史上最全的安装教程)

1.7 集群安装问题记录

1.7.1集群安装后报警时钟偏差

1)报警现象如下

CDH6.2.1搭建(史上最全的安装教程)

2)报警原因:集群安装时时间为世界事件,安装后本地集群时间改为上海时间,但是CDH集群的时间还是时间时间导致的,开启NPT服务后,CDH的时间仍然未同步。暂时将本地集群时间还原为世界事件

1.7.2 hdfs Coding Verification Test

1)报警现象如下

CDH6.2.1搭建(史上最全的安装教程)

2)报警原因:纠删码默认需要5个节点以上才能开启,集群共3个节点,因此关闭纠删码策略,改用副本集策略

CDH6.2.1搭建(史上最全的安装教程)