【CDH实战01】基于CentOS7的CDH6.3.2完全分布式集群搭建【上】

写在前面

距离上一次写cdh集群搭建的文档已经一年多,今年2月份开始Cloudera全面下架了免费的安装包下载渠道,很多朋友在集群搭建的过程中按照之前的老文档遇到了一些问题。今天重新整理一次文档。

  • Cloudera官网公告

  • 未订阅授权的用户无法使用CDH6.3.3和之后的版本

  • 所以我们继续使用CDH6.3.2版本进行集群搭建

  • 需要使用的朋友可以先浏览CDH6.3.2对应的组件版本是否符合需求

组件 版本 发行版 CDH 版本
Flume NG 1.9.0+cdh6.3.2 1605554 CDH 6.3.2
Hadoop 3.0.0+cdh6.3.2 1605554 CDH 6.3.2
HDFS 3.0.0+cdh6.3.2 1605554 CDH 6.3.2
HttpFS 3.0.0+cdh6.3.2 1605554 CDH 6.3.2
hadoop-kms 3.0.0+cdh6.3.2 1605554 CDH 6.3.2
MapReduce 2 3.0.0+cdh6.3.2 1605554 CDH 6.3.2
YARN 3.0.0+cdh6.3.2 1605554 CDH 6.3.2
HBase 2.1.0+cdh6.3.2 1605554 CDH 6.3.2
Lily HBase Indexer 1.5+cdh6.3.2 1605554 CDH 6.3.2
Hive 2.1.1+cdh6.3.2 1605554 CDH 6.3.2
HCatalog 2.1.1+cdh6.3.2 1605554 CDH 6.3.2
Hue 4.2.0+cdh6.3.2 1605554 CDH 6.3.2
Impala 3.2.0+cdh6.3.2 1605554 CDH 6.3.2
Kafka 2.2.1+cdh6.3.2 1605554 CDH 6.3.2
kudu 1.10.0+cdh6.3.2 1605554 CDH 6.3.2
Oozie 5.1.0+cdh6.3.2 1605554 CDH 6.3.2
Parquet 1.9.0+cdh6.3.2 1605554 CDH 6.3.2
Pig 0.17.0+cdh6.3.2 1605554 CDH 6.3.2
sentry 2.1.0+cdh6.3.2 1605554 CDH 6.3.2
Solr 7.4.0+cdh6.3.2 1605554 CDH 6.3.2
spark 2.4.0+cdh6.3.2 1605554 CDH 6.3.2
Sqoop 1.4.7+cdh6.3.2 1605554 CDH 6.3.2
ZooKeeper 3.4.5+cdh6.3.2 1605554 CDH 6.3.2

一、环境准备

1.1 文件准备

  • 因为使用离线安装的方式,请提前下载好需要用到的安装包

  • Cloudera官网下载需要访问带授权的链接,而国内访问Cloudera官网速度不稳定,所以我把安装文件上传到了百度网盘和天翼云盘(百度没有会员的朋友,如果有电信手机可以通过积分免费兑换天翼云盘会员)

文件名称 文件大小(字节)
allkeys.asc 14,041
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel 2,082,186,246
cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm 10,483,568
cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm 1,203,832,464
cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm 11,488
cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm 10,996
enterprise-debuginfo-6.3.1-1466458.el7.x86_64.rpm 14,209,868
mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz 503,854,832
mysql-connector-java-8.0.18.jar 2,330,539
oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm 184,988,341

1.2 服务器准备

1.2.1 关于集群规划

  • CDH集群相较于Apache开源版本,最大的优势在于Cloudera Manager强大便捷的集群管理服务,所以CM几乎是必装的,换句话说不装CM就没必要用CDH版本的Hadoop了。

  • 但实测中,即使只启动了CM的必要服务,集群的整体资源占用已经达到了8GB

  • 综上推荐使用如下架构

    • 架构一:3台或以上,8G内存或以上。将cm的集群监控服务分散到多个节点

    • 架构二:4台或以上,8G内存或以上。将cm的集群监控服务全部安装在一台节点

  • 本例使用上述架构二

主机名 CPU核心 物理内存 操作系统 服务
node00 4 8 CentOS 7 cm-server、cm-agent、其他cm监控服务
node01 8 8 CentOS 7 cm-agent、hadoop生态组件
node02 8 8 CentOS 7 cm-agent、hadoop生态组件
node03 8 8 CentOS 7 cm-agent、hadoop生态组件

1.2.2 服务器准备

  • 学习和测试:

    1. VMWare、VirtualBox等虚拟机
    2. AWS、阿里云、华为云、腾讯云等乱七八糟的云服务器
  • 生产环境:

    1. 物理服务器
    2. AWS、阿里云、华为云、腾讯云等乱七八糟的云服务器
  • 生产环境不用考虑CM消耗的内存资源(不然你们公司玩个X的大数据,每月云服务开支上千万的公司不在少数),当然生产环境通常也会直接购买阿里云的EMR或华为云的MRS作为商用Hadoop集群,但毕竟国内大数据服务起步晚、技术差、服务渣,所以除非不差钱又懒省事,通常还是会选择对Apache版本做二次开发或者选用CDH、HDP这类既免费又用起来还可以的商用Hadoop平台。

  • 学习环境如果自己电脑实在内存捉襟见肘,可以考虑阿里云或华为云的按量计费服务器,下图来自阿里云(就别说贵了,比你去网吧消磨时间划算多了)

  • 按量计费:启动服务器时开始扣费,用完挂起,会以极低的费用保管数据,需要使用再次开机计费。

二、安装前的准备工作

2.1 配置主机名和映射

  • ⚠ CDH需要使用IPv4地址,暂不支持IPv6
  • ⚠ CDH建议使用FQDN,即带有全域名的主机名
  • 例如:
    # 普通hostname
    node00
    # FQDN(Fully Qualified Domain Name)
    node00.cdh6.amoscloud.com

2.2.1 配置主机名

  • 为每个机器单独配置自己的主机名
    # 第一台机器执行
    hostnamectl set-hostname node00.cdh6.amoscloud.com
    # 第二台机器执行
    hostnamectl set-hostname node01.cdh6.amoscloud.com
    # 第三台机器执行
    hostnamectl set-hostname node02.cdh6.amoscloud.com
    # 第四台机器执行
    hostnamectl set-hostname node03.cdh6.amoscloud.com

2.2.2 配置FQDN

  • 为每个机器单独配置自己的FQDN
    # 第一台机器执行
    echo 'node00.cdh6.amoscloud.com' > /etc/sysconfig/network
    # 第二台机器执行
    echo 'node01.cdh6.amoscloud.com' > /etc/sysconfig/network
    # 第三台机器执行
    echo 'node02.cdh6.amoscloud.com' > /etc/sysconfig/network
    # 第四台机器执行
    echo 'node03.cdh6.amoscloud.com' > /etc/sysconfig/network

2.2.3 配置本地DNS映射

  • 为每个机器配置/etc/hosts文件
# 每行格式为 ip  FQDN  hostname
echo -e "
192.168.222.100 node00.cdh6.amoscloud.com node00
192.168.222.101 node01.cdh6.amoscloud.com node01
192.168.222.102 node02.cdh6.amoscloud.com node02
192.168.222.103 node03.cdh6.amoscloud.com node03
" >> /etc/hosts

2.2 关闭防火墙

  • ⚠ 每个节点都要完成以下操作

2.2.1 关闭防火墙服务

systemctl stop firewalld

2.2.2 禁用防火墙服务的开机启动

systemctl disable firewalld
  • 执行结果
    [root@node00 ~]# systemctl disable firewalld
    Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
    Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

2.2.3 检查防火墙服务状态

systemctl status firewalld
  • 执行结果 确认 Active: inactive (dead)
    [root@node00 ~]# systemctl status firewalld
    ● firewalld.service - firewalld - dynamic firewall daemon
    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
    Active: inactive (dead)
     Docs: man:firewalld(1)
    321 17:01:35 node00 systemd[1]: Starting firewalld - dynamic firewall daemon...
    321 17:01:36 node00 systemd[1]: Started firewalld - dynamic firewall daemon.
    321 17:01:37 node00 firewalld[795]: WARNING: AllowZoneDrifting is enabled. This is conside...now.
    321 20:37:33 node00 systemd[1]: Stopping firewalld - dynamic firewall daemon...
    321 20:37:35 node00 systemd[1]: Stopped firewalld - dynamic firewall daemon.
    Hint: Some lines were ellipsized, use -l to show in full.

2.3 暂时关闭SELinux

  • SELinux是Security-Enhanced Linux的简称,是Linux的安全增强模式,CDH安装过程中需要关闭SELinux,Cloudera官网给出的说明是,理论上兼容SELinux,所以在集群搭建完毕后可以重新开启SELinux,如果出现不兼容现象,Cloudera不提供技术支持,需要联系操作系统发行商解决。

  • ⚠ 每个节点都要完成以下操作

2.3.1 查看SELinux状态

getenforce
  • 执行结果
    [root@node00 ~]# getenforce
    Enforcing
  • 如果执行结果打印 Permissive 或者 Disabled ,可以直接跳过 2.3 步骤,如果和我一样是Enforcing继续操作

2.3.2 修改SELinux状态

  • 将/etc/selinux/config中的SELINUX=enforcing 改为 SELINUX=permissive

  • 使用sed直接替换

    sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
  • 上面的设置需要重启服务器后永久生效

2.3.3 临时修改SELinux状态

  • 嫌重启麻烦也可以先临时关闭
    setenforce 0

2.3.4 查看SELinux状态

getenforce
  • 执行结果
    [root@node00 ~]# getenforce
    Permissive

2.4 时间同步

  • CentOS 7 已经启用chronyd服务保证时间同步,不需要再安装ntpd

2.4.1 查看chronyd状态

systemctl status chronyd
  • 执行结果 确认 Active: active (running)
    [root@node00 ~]# systemctl status chronyd
    ● chronyd.service - NTP client/server
    Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
    Active: active (running) since 日 2021-03-21 17:01:35 CST; 4h 9min ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)
    Main PID: 745 (chronyd)
    CGroup: /system.slice/chronyd.service
           └─745 /usr/sbin/chronyd
    321 17:01:35 node00 systemd[1]: Starting NTP client/server...
    321 17:01:35 node00 chronyd[745]: chronyd version 3.4 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG)
    321 17:01:35 node00 chronyd[745]: Frequency 0.000 +/- 1000000.000 ppm read from /var/lib/chrony/drift
    321 17:01:35 node00 systemd[1]: Started NTP client/server.
    321 17:01:44 node00 chronyd[745]: Selected source 193.182.111.14
    321 17:01:51 node00 chronyd[745]: Can't synchronise: no selectable sources
    321 17:06:13 node00 chronyd[745]: Selected source 162.159.200.1
    321 17:07:19 node00 chronyd[745]: Selected source 193.182.111.14

2.5 搭建本地yum源<

posted @   爱上编程技术  阅读(8)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示