大数据实战第十八课 - CDH5.16.1离线部署

第一章:CDH5.16.1导读及前置准备工作

第二章:CM中各项部署

第三章:部署完成后进行验证启动

第一章:CDH5.16.1导读

在这里插入代码片若泽数据CDH部署文档:
链接:https://pan.baidu.com/s/1Ta4f_D72ZTPQO9oUMJiHFg 
提取码:plr0 

1.1 CDH离线部署的三种方式

  1. bin 在线部署 需要网络带宽
  2. rpm 离线部署 需要下载依赖的rpm包
    不是真正的离线部署,需要访问外网或者私服
  3. tar包部署 真正的离线部署(集群环境和IT人员不允许放开外网)

CDH离线部署分为如下几块:

1、 MySQL离线部署 作为元数据

2、CM离线部署 tar 闭源 cloudera公司核心产品(是主从架构,server agent)

  • CM是闭源 ,它是cloudera公司核心产品(是主从架构,server agent)

3、Parcel文件离线源部署 就相当于如下这些集成的压缩文件hdfs、yarn、hive、hbase、zk

1.2 阿里云购买三台按量付费的服务器

第一步:

  • 选择按量付费的3台机器,需要在同一区域下:最低配置是2核8G的,CentOS7.2。

第二步:

网络和安全组固定不需要改变。

第三步:

  • 自定义密码,实例名称可以填写名字,选中有序后缀,就能够hadoop001、hadoop002、hadoop003这样.
    在这里插入图片描述

第四步:

  • 核对信息内容:
    在这里插入图片描述

  • 等待阿里云机器启动,然后使用SecureCRT来连接,CRT连接使用的是外网IP.

把文件上传到Hadoop002,Hadoop003机器上。
scp -r /home/hadoop/app 172.19.171.27:/home/hadoop/

1.3 事先准备好的所有软件包

所有部署的软件包都在如下:

链接:https://pan.baidu.com/s/1cAFeMJN4bZi1UBgxopIsRA 
提取码:py9j 
  • 下载下来后所有的软件安装包都传输到hadoop001机器上,因为我们使用的是阿里云同一区域下的三台机器,所以可以使用scp -r命令进行传输。
  • 生产上cdh6.x有节点限制,超过100台节点要付费,J总生产上的版本就是CDH5.16.1

scp举例暂时不需要传输到hadoop002、hadoop003(J总演示的时候是使用了一台机器分发):

把第一台的软件分别传输到hadoop002、hadoop003机器上:
1、传输到hadoop002机器上,注意使用内网IP,输入yes和密码进行传输:

  • scp -r cdh-5.16.1 172.19.171.35:/root

2、传输到hadoop003机器上,同样使用内网IP

  • scp -r cdh-5.16.1 172.19.171.35:/root

在这里插入图片描述

1.4 节点初始化工作概览

  1. hosts文件
  2. 防火墙
  3. selinux检查
  4. 时区和时钟同步(**重要)
  5. jdk准备

1.5 初始化之hosts文件配置

3.1、hosts文件

SecureCRT上设置所有节点的hosts文件,view --> Command(Chat) window,右键下面的对话框,选择Send Commands to All Sessions.

> 在root用户下进行

> vi  /etc/hosts			
> 快捷键shift+g跳转到最后一行,shift+$跳转到最后一行行尾。

添加如下映射关系:
此处配置的是阿里云内网:
172.19.171.26 hadoop001
172.19.171.25 hadoop002
172.19.171.27 hadoop003

测试:能够ping通就说明没问题:

[root@hadoop002 ~]# ping hadoop001
PING hadoop001 (172.19.171.36) 56(84) bytes of data.
64 bytes from hadoop001 (172.19.171.36): icmp_seq=1 ttl=64 time=0.285 ms
64 bytes from hadoop001 (172.19.171.36): icmp_seq=2 ttl=64 time=0.204 ms
64 bytes from hadoop001 (172.19.171.36): icmp_seq=3 ttl=64 time=0.168 ms
64 bytes from hadoop001 (172.19.171.36): icmp_seq=4 ttl=64 time=0.155 ms

1.6 初始化之云主机和内网机器的防火墙如何抉择

防火墙:

1、在生产上如何限制IP网段,我们需要通过公网IP访问,我们百度输入IP(使用宽带的IP地址),在安全组规则中配置就行

  • 由于我们买的是云主机,一般来说防火墙是关闭的,我们需要web界面中关闭防火墙,实例列表–>更多–>网络和安全组–>安全组配置;点击配置规则–>添加安全组规则

2、内部服务器,J总公司防火墙是关闭的,IDC环境,先通过VPN,再通过跳板机,本身集群也有防火墙硬件。

  • 内部服务器:部署的时候建议防火墙关闭部署,等部署好后通过cdh Web界面提供的端口,我们将防火墙开启,再设置这些端口通过。(J总有文档提供)
>进入root用户下:
>systemctl stop firewalld		关闭防火墙
>systemctl disable firewalld		禁止防火墙
>iptables -L		查看防火墙规则
>iptables -F		清空防火墙规则

1.7 初始化之selinux服务关闭检查

1、使用root用户,vi编辑/etc/selinux/config文件:

[root@hadoop003 ~]# vi /etc/selinux/config
SELINUX=disabled		

2、检查selinux的设置是否是disabled,如果不是则修改为disabled,且机器需要重启才能生效。

1.8 时钟、时区同步问题

  • 直接输入date,就能查看时区;如果生产上有200多台机器节点,如何查看呢,写一个shell脚本和for循环,再通过ssh.

查看timedatectl的命令帮助:

  • timedatectl --help
[root@hadoop001 ~]# timedatectl --help
timedatectl [OPTIONS...] COMMAND ...

Query or change system time and date settings.

  -h --help                Show this help message
     --version             Show package version
     --no-pager            Do not pipe output into a pager
     --no-ask-password     Do not prompt for password
  -H --host=[USER@]HOST    Operate on remote host
  -M --machine=CONTAINER   Operate on local container
     --adjust-system-clock Adjust system clock when changing local RTC mode

Commands:
  status                   Show current time settings
  set-time TIME            Set system time
  set-timezone ZONE        Set system time zone
  list-timezones           Show known time zones
  set-local-rtc BOOL       Control whether RTC is in local time
  set-ntp BOOL             Control whether NTP is enabled

timedatectl得到的信息如下:

[root@hadoop001 ~]# timedatectl
      Local time: Tue 2019-09-24 22:54:05 CST
  Universal time: Tue 2019-09-24 14:54:05 UTC
        RTC time: Tue 2019-09-24 22:54:04
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: yes
      DST active: n/a

Warning: The system is configured to read the RTC time in the local time zone.
         This mode can not be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.
         If at all possible, use RTC in UTC by calling
         'timedatectl set-local-rtc 0'.
  • 在hadoop002机器上这么设置:使用timedatectl set-timezone Asia/Shanghai
  • 在hadoop003机器上也这么设置:timedatectl set-timezone Asia/Shanghai

生产上使用ntp的服务来进行时钟、时区同步:

第一步:

1、三个节点都安装ntp服务:

  • yum install -y ntp

2、hadoop001作为时间同步的主节点,hadoop002~hadoop003时间同步的从节点

  • 从节点的意思是,老大多长时间,老二就是多长时间;从节点只从老大那去获取时间。

第二步

1、编辑这个文件 vi /etc/ntp.conf

2、标准的配置如下所示,进入这个网址:https://www.ntppool.org/zone/asia:通过外网来保证的时钟同步,如果我们不能访问外网怎么操作呢,继续添加:

#time
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org

//当我们的外部时钟不能使用的时候,使用的是本地的时间
server 127.127.1.0 iburst local clock

//时钟同步老大允许哪个网段的小弟来同步我们的时间,此处是内网,172.19.171.0来表示这个网段,不行再进行测试,nomodify是指允许哪些节点来访问的;不行的话再进行调整。
restrict 172.19.171.0 mask 255.255.255.0 nomodify

3、开始验证:

  • 开启服务:systemctl start ntpd
  • 查看服务状态:systemctl status ntpd 显示active running就是okay的状态
  • ntpq -p 查看网段下时间的偏移

4、在hadoop002机器下:使用命令:./usr/sbin/ntpdate hadoop001

  • 关闭hadoop002、hadoop003机器的ntpd服务,然后自发的同步hadoop001节点的时间
[root@hadoop ~]# /usr/sbin/ntpdate hadoop001
25 Sep 09:42:10 ntpdate[2175]: adjust time server 172.19.171.36 offset -0.005928 sec

注意:在云主机中,时区和时钟同步可以不需要做;
如果是公司机器、虚拟机,非云主机的话是需要做时间同步的(即使布置到同一个机架上也是需要做的)。

生产场景:我们不可能一直使用这个命令:/usr/sbin/ntpdate hadoop001,我们分别进入到hadoop002、hadoop003,都进行如下编辑:

  • crontab -e,输入:00 01 * * * /usr/sbin/ntpdate hadoop001

小结:

  • hadoop002、hadoop003会每天通过crontable定时脚本去进行时钟同步,hadoop001会从网络端进行时钟同步,网路不通,haodoop001就会获取到本地时钟

第二章:CM中各项部署

<h1 id="id_2.1>2.1 JDK部署

注意两项事项:

1、jdk解压路径为:/usr/java
2、解压后的用户及用户组的修正

开始三台机器进行解压:

1、3台机器下cd /usr下创建java目录(用于存放jdk):
mkdir java

2、在大窗口下三台机器同时解压
tar -xzvf /root/cdh5.16.1/jdk-8u45-linux-x64.gz -C /usr/java/		解压文件

3、三台机器统一修改用户和用户组
chown -R root:root /usr/java/jdk1.8.0_45		修改用户权限及权限组

4、配置全局环境变量
vi /etc/profile		编辑配置文件
export JAVA_HOME=/usr/java/jdk1.8.0_45
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile		生效全局环境变量

注意小事项:

  • 生产上部署CDH不要使用普通用户来访问,建议使用root用户或者sudo权限的用户来做。

如何防止SecureCRT会话超时:

  • 选择Options–>Sessions Options–>Terminal–>Send Protocol NO-UP every 60 seconds

活学活用:

  • 生产中集群不单单只有三台,成千上百台,我们选举第一台机器作为模板机,把第一台机器的初始化工作全部做好,也能制作镜像模板,进行分发。

2.2 MySQL5.7部署

⽂档链接:https://github.com/Hackeruncle/MySQL
视频链接:https://pan.baidu.com/s/1jdM8WeIg8syU0evL1-tDOQ 密码:whic

  • 此处的MySQL5.7部署完全参照文档来就行了,这里不做过多赘述,一步步跟着操作即可。

注意点1:

  • 创建好后会有一个临时密码:
hadoop001:mysqladmin:/usr/local/mysql/data:>cat hostname.err |grep password 
2019-09-25T03:12:47.121122Z 1 [Note] A temporary password is generated for root@localhost: uXvFWsJe,8rk

注意点2:

  • 此处敲完一次回车,还要再敲一次回车
2019-09-25T03:14:11.570878Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

hadoop001:mysqladmin:/usr/local/mysql/data:>

2.3 提前创建好cmf和amon的库及用户

1、事先创建db用户

1、分别创建cmf、amon两个数据库:
create database cmf DEFAULT CHARACTER SET utf8;
create database amon DEFAULT CHARACTER SET utf8;

2、赋予cmf用户对于cmf数据库下所有的都能操作:
grant all on cmf.* TO 'cmf'@'%' IDENTIFIED BY 'Ruozedata123456!';
grant all on amon.* TO 'amon'@'%' IDENTIFIED BY 'Ruozedata123456!';

3、刷新权限:
flush privileges;

2、小技巧:查看MySQL中创建数据库的语句:

  • 注意:要使用set utf8,否则默认创建的是latin格式的
mysql> show create database mysql;
+----------+------------------------------------------------------------------+
| Database | Create Database                                                  |
+----------+------------------------------------------------------------------+
| mysql    | CREATE DATABASE `mysql` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+------------------------------------------------------------------+
1 row in set (0.00 sec)

2.4 准备好mysql-jdbc-jar包

  • 我们的MySQL已经部署成功,MySQL和CDH集群的连接需要mysql-jdbc-jar包.

注意:

1、进入到这个目录:/root/cdh-5.16.1

2、级联创建文件夹:mkdir -p /usr/share/java

3、拷贝mysq-jar包到/usr/share/java这个路径下:

  • 拷贝的时候需要把版本号去掉,版本号不去掉会不识别:
[root@hadoop001 cdh-5.16.1]# cp mysql-connector-java-5.1.47.jar /usr/share/java/mysql-connector-java.jar

我们的cmf和amon都要部署再hadoop001节点上,那么此节点就要部署jdbc的jar包。

注意:千万不要说上生产了,mysql在其它节点,进程也在其它机器,完蛋。

2.5 按生产标准离线部署CM Server及Agent

  • 以hadoop001机器为中心,scp把这个文件:cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz分发到hadoop002,hadoop003机器上

命令:

1、因为在/etc/hosts中文件做了内网ip和hostname的映射,所以可以直接使用hadoop002、hadoop003
scp cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz hadoop002:/root/cdh-5.16.1
scp cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz hadoop003:/root/cdh-5.16.1

第一步:
1、三台机器统一创建目录:mkdir /opt/cloudera-manager,这是cdh部署默认的路径

2、统一把cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz文件解压到/opt/cloudera-manager中,三台机器同时进行:

[root@hadoop001 cdh-5.16.1]# cd /opt/cloudera-manager/
[root@hadoop001 cloudera-manager]# ll
total 8
drwxr-xr-x 4 1106 4001 4096 Nov 21  2018 cloudera
drwxr-xr-x 9 1106 4001 4096 Nov 21  2018 cm-5.16.1

3、进行agent配置:

  • 3台机器都进入到如下这个目录:cd /opt/cloudera-manager/cm-5.16.1/etc/cloudera-scm-agent,编辑config.ini文件:
  • 三台机器统一修改:server_host=hadoop001

4、server机器只有一台,我们去修改Hadoop001机器中的server配置:

  • 进入到这个目录:/opt/cloudera-manager/cm-5.16.1/etc/cloudera-scm-server,编辑db.properties文件:
# Currently 'mysql', 'postgresql' and 'oracle' are valid databases.
com.cloudera.cmf.db.type=mysql

# The database host
# If a non standard port is needed, use 'hostname:port'
com.cloudera.cmf.db.host=hadoop001

# The database name
com.cloudera.cmf.db.name=cmf

# The database user
com.cloudera.cmf.db.user=cmf

# The database user's password
com.cloudera.cmf.db.password=960210

# If scm-server uses External DB then it is set to EXTERNAL
com.cloudera.cmf.db.setupType=EXTERNAL

5、创建它默认的cloudera-scm用户:

  • 解析:不需要创建家目录,–shell表示也不需要登录,用户名时cloudera-scm
useradd --system --home=/opt/cloudera-manager/cm-5.16.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false cloudera-scm

6、修改文件夹的用户及用户组,3台机器一起修改:

  • chown -R cloudera-scm:cloudera-scm /opt/cloudera-manager

2.6 按生产标准离线部署Parcel文件

  • 离线parcel文件(离线源)–> 同样选中hadoop001作为离线源部署

1、级联创建离线元源存储目录:

  • mkdir -p /opt/cloudera/parcel-repo

2、移动如下三个文件至离线源存储目录:

[root@hadoop001 parcel-repo]# pwd
/opt/cloudera/parcel-repo
[root@hadoop001 parcel-repo]# ll
total 2077720
-rw-r--r-- 1 root root 2127506677 Jun 18 16:52 CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel
-rw-r--r-- 1 root root         41 Jun 18 16:41 CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1
-rw-r--r-- 1 root root      66538 Jun 18 16:40 manifest.json

3、移动的时候需要把它重命名,把1去掉:

[root@hadoop001 parcel-repo]# mv CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1 CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha

4、查看包裹文件有没有损坏:

  • 情况:下载中网络中断导致文件缺失,所以需要校验
[root@hadoop001 parcel-repo]# ll
total 2077720
-rw-r--r-- 1 root root 2127506677 Jun 18 16:52 CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel
-rw-r--r-- 1 root root         41 Jun 18 16:41 CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha
-rw-r--r-- 1 root root      66538 Jun 18 16:40 manifest.json
[root@hadoop001 parcel-repo]# cat CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha
703728dfa7690861ecd3a9bcd412b04ac8de7148
[root@hadoop001 parcel-repo]# /usr/bin/sha1sum CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel
703728dfa7690861ecd3a9bcd412b04ac8de7148  CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel

第三章:部署完成后进行验证启动

3.1 所有节点创建大数据软件的安装目录及用户和用户组权限

1、这个包裹文件需要解压:我们要在所有节点创建文件夹

  • mkdir -p /opt/cloudera/parcels

2、这些节点创建完文件夹后,修正用户、用户组权限:

  • chown -R cloudera-scm:cloudera-scm cloudera

3.2 启动CM Server及Agent,打开7180web最终界面

第一步:

  • 我们尝试去启动server,进入到这个目录:cd /opt/cloudera-manager/cm-5.16.1/etc/init.d,启动命令:./cloudera-scm-server start
  • 去查看日志端口:进入目录:cd /opt/cloudera-manager/cm-5.16.1/log/cloudera-scm-server,查看近期200行日志,tail -200f cloudera-scm-server.log

查看日志:

  • 等待1min,然后出现7180端口就是okay的:
2019-09-25 14:22:47,983 INFO WebServerImpl:org.mortbay.log: jetty-6.1.26.cloudera.4
2019-09-25 14:22:48,047 INFO WebServerImpl:org.mortbay.log: Started SelectChannelConnector@0.0.0.0:7180
2019-09-25 14:22:48,047 INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.

再去三台机器上一起启动agent:

  • 进入到如下目录然后启动: ./cloudera-scm-agent start
[root@hadoop002 opt]# cd /opt/cloudera-manager/cm-5.16.1/etc/init.d
[root@hadoop002 init.d]#  ./cloudera-scm-agent start
Starting cloudera-scm-agent:                               [  OK  ]
[root@hadoop002 init.d]#  ./cloudera-scm-agent status
cloudera-scm-agent (pid  11688) is running...
  • 使用hadoop001机器的外网IP+7180端口即可,确保阿里云安全组配置中放开7180端口。
  • 默认的用户名和密码都是admin
    在这里插入图片描述

3.3 最终Web界面部署

  • 接下来我们所有的操作都使用网页版

1、我们使用免费版
在这里插入图片描述
2、继续,思考支持的操作系统、数据库、jdk
在这里插入图片描述
3、选择当前管理的主机,全部勾选;如果部署过程中缺失机器,去到那台机器上排查问题,然后问题解决后,点击back --> 再点击continue。
在这里插入图片描述

4、此时已经部署好了,点击图中的更多选项

在这里插入图片描述

5、点击Continue后,一瞬间是100%,就是部署的没有问题;剩下三个是根据集群的网络情况来分发的。
在这里插入图片描述

注意:以后部署过程中,如果某个节点夯住了,就需要慢慢等到;是在慢,点击back,再continue即可。

  • 如果飘红了,去到cloudera-scm-server查看log日志

6、这个问题解决:

  • [root@hadoop002 init.d]# echo never > /sys/kernel/mm/transparent_hugepage/defrag

  • [root@hadoop002 init.d]# echo never > /sys/kernel/mm/transparent_hugepage/enabled

  • 输入如下命令以后:重新运行集群,点击完成即可。
    在这里插入图片描述

7、在集群设置中,我们选择自定义服务,选择hdfs、zookeeper、yarn;千万别搞个all service。
在这里插入图片描述

8、此处我配置的主要节点机器是hadoop002,datanode三台机器都要选择;activity Monitor要选择hadoop002,事先mysql-jar包已经准备好了在hadoop002上;nodemanager的进程和datanode的进程在一台机器上:数据本地化的概念;zookeeper在生产上最低是3台机器。
在这里插入图片描述
9、集群当中数据库设置:
在这里插入图片描述
如果此处不是successful,一般会存在三个问题:%、jdbc jar包、创建用户时没有刷新权限.

10
在这里插入图片描述
很神奇的一点是:我的主要机器它给我识别成了hadoop002,其实数据库是在hadoop001中,但是我又在hadoop002机器上添加了mysql-connect-jar包,然后把hadoop002修改为hadoop001然后就好了.

11
在这里插入图片描述

12、默认的这些配置都不需要变更:服务器分为根目录磁盘和专门用作数据存储的磁盘,或者多个磁盘,使用逗号分隔即可。

在这里插入图片描述

13、等待安装
在这里插入图片描述
14、安装成功页面:
在这里插入图片描述

报错信息如下:

在这里插入图片描述

CDH的关键是遇到error如何解决?

CDH机器上不需要ssh无密码认证关系。

以后我们遇到HDFS Canary(金丝雀),直接抑制就行了。
在这里插入图片描述

抑制了一些错误后,然后排除了时钟同步服务问题,机器显示都正常了。
在这里插入图片描述

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值