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

      第一次搭建CDH,留个文档记录下出现的问题和学到的东西。主要参考:

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

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

          如何从0开始学习大数据技术

          2020年12月31日CDH6.3.2集群搭建全流程教程 

        这几篇文章对整个流程做了详细的讲解,感谢作者~

目录

1. CDH概述

2. 安装准备工作

2.1 文件准备

2.2 服务器准备

2.2.1 建立虚拟机

2.2.2 设置主机名映射(所有节点)

2.2.3 设置SSH免密登陆(所有节点) 

 2.2.4 关闭并禁用防火墙(所有节点)

2.2.5 关闭SELINUX(所有节点) 

2.2.6 禁用透明大页(所有节点)

2.2.7 修改Linux swappiness参数(所有节点) 

2.2.8 安装JDK(所有节点) 

2.2.9 上传JDBC依赖包(所有节点) 

2.2.10 时间同步 

2.2.11 安装MySQL(master节点,本例中node0) 

3 安装CDH

3.1 搭建本地yum源

3.1.1 安装并启动Apache http 

3.1.2 上传CM安装文件

3.1.3 创建yum仓库

3.1.4 配置yum仓库文件 

3.2 安装服务

​3.3 初始化cloudera-manager-server

3.3.1 在mysql中为CMServer创建数据库

3.3.2 执行CM初始化脚本

3.3.3 启动cm-server服务


1. CDH概述

        CDH是Cloudera’s Distribution Including Apache Hadoop的简称,是基于稳定版本的Hadoop组件进行编译的,简单来讲,CDH就是一个拥有集群自动化安装中心化管理集群监控报警功能,用来集中管理Hadoop集群的工具。它简化了大数据平台的安装,缩短集群安装时间,减小运维工作量,极大的提高了集群管理的效率。

2. 安装准备工作

2.1 文件准备

        今年2月份开始Cloudera全面下架了免费的安装包下载渠道,未订阅授权的用户无法使用CDH6.3.3和之后的版本,此处使用CDH6.3.2版本进行集群搭建。下图为CDH6.3.2对应的组件版本。

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第1张图片

        因为使用离线安装的方式,需要提前下载好需要用到的安装包,参考文章的博主提供了下载渠道。

  • 百度网盘 链接:https://pan.baidu.com/s/1h65lZ2QKuMD0xT1LNy-JdQ (提取码:amos)

 文件列表如下

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第2张图片

2.2 服务器准备

        本次需要通过VMware建立三台虚拟机作为服务器。

2.2.1 建立虚拟机

        选择的操作系统是CentOS 7: CentOS-7-x86_64-DVD-1708.iso ,下载链接来自参考文章。

        虚拟机内存和硬盘的分配如下,安装完成之后每个结点占用的硬盘空间在20GB左右,所以在安装虚拟机的时候硬盘分配不能少于30GB,否则会出现空间不足的错误。

        首先新建一台2G内存的虚拟机并配置网络,方便进行克隆,之后再修改这台虚拟机内存为6G。网络配置可见:VM虚拟机centOS网络设置 。

结点名称 内存大小(G) 硬盘大小(G) IP地址
node0 6 60 192.168.137.100
node1 2 60 192.168.137.101
node2 2 60 192.168.137.102

        将新建的虚拟机进行两次克隆,得到3台虚拟机,修改克隆出来机器的网卡配置。参考文章:CentOS7虚拟机克隆,且成功互ping

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第3张图片

        删除UUID (文章中说还需要删除MAC地址信息HWADDR,我的ifcfg-ens33中无此信息),并分别修改两台克隆机ip地址为192.168.137.101、192.168.137.102,保存退出,重启网络。(参考文章中提到需要删除/etc/udev/rules.d/70-persistent-net.rules,我的机器中没有这个文件,原因及文件作用暂不深究,发现一相关文章,马克一下:70-persistent-net.rules以及网卡配置详解)

 service network restart(或systemctl restart network )
  
  
    
    
    
    

        配置好后,试验虚拟机互ping成功 。

2.2.2 设置主机名映射(所有节点)

         接下来修改hostname,以192.168.137.101这台机器为例

修改hostname:


  
  
    
    
    
    
  1. hostnamectl set-hostname node1 #修改
  2. hostname #查看

修改 hosts文件:

        增加网络映射 ,在文件后增加如下内容

vi /etc/hosts                  #修改hosts文件
  
  
    
    
    
    

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第4张图片

 验证能否ping通:

ping -c 4 node2                #尝试ping node2
  
  
    
    
    
    

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第5张图片

2.2.3 设置SSH免密登陆(所有节点) 

生成密钥对:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa #生成密钥
  
  
    
    
    
    

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第6张图片

向其他节点分发密钥 :


  
  
    
    
    
    
  1. ssh-copy-id node1 #分发密钥
  2. yes
  3. 密码

 测试SSH:

ssh node1               #测试
  
  
    
    
    
    

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第7张图片

 2.2.4 关闭并禁用防火墙(所有节点)

查看防火墙状态:

systemctl status firewalld #查看防火墙服务运行状态
  
  
    
    
    
    

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第8张图片

关闭防火墙 :


  
  
    
    
    
    
  1. systemctl stop firewalld #关闭防火墙
  2. systemctl disable firewalld #禁用防火墙开机自启

验证防火墙状态:

systemctl status firewalld  #查看防火墙状态为关闭状态
  
  
    
    
    
    

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第9张图片

2.2.5 关闭SELINUX(所有节点) 

        SELINUX相关知识:理解Linux下的SELinux

查看SELINUX状态:

getenforce        #查看SELINUX服务的运行状态
  
  
    
    
    
    

关闭SELINUX:

        临时关闭 

setenforce 0      #临时关闭
  
  
    
    
    
    

        永久关闭

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #永久关闭
  
  
    
    
    
    

验证SELINUX状态:

cat /etc/selinux/config   #验证 
  
  
    
    
    
    

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第10张图片

2.2.6 禁用透明大页(所有节点)

        透明大页相关知识:

          CENTOS 7 关闭透明大页

          Huge pages (标准大页)和 Transparent Huge pages(透明大页)

查看透明大页的设置和启动状态:


  
  
    
    
    
    
  1. cat /sys/kernel/mm/transparent_hugepage/defrag
  2. cat /sys/kernel/mm/transparent_hugepage/enabled

        使用命令查看时,如果输出结果为 [always] 表示透明大页启用了。

        [never] 表示透明大页禁用、 [madvise] 表示(只在 MADV_HUGEPAGE 标志的 VMA 中使用 THP 。

关闭透明大页:

         临时关闭


  
  
    
    
    
    
  1. echo never > /sys/kernel/mm/transparent_hugepage/defrag
  2. echo never > /sys/kernel/mm/transparent_hugepage/enabled

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第11张图片

        永久关闭 

        将临时关闭命令添加到/etc/rc.d/rc.local文件中,并赋予执行权限


  
  
    
    
    
    
  1. echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.d/rc.local
  2. echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.d/rc.local
  3. chmod +x /etc/rc.d/rc.local

验证修改 :

cat /etc/rc.d/rc.local
  
  
    
    
    
    

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第12张图片

2.2.7 修改Linux swappiness参数(所有节点) 

        swappiness相关知识:swappiness参数的含义和设置

        为了避免服务器使用swap功能而影响服务器性能,一般都会把vm.swappiness修改为0(cloudera建议10以下)


  
  
    
    
    
    
  1. cd /usr/lib/tuned
  2. grep "vm.swappiness" * -R
  3. sed -i s/ "vm.swappiness = 30"/ "vm.swappiness = 10"/g /usr/lib/tuned/virtual-guest/tuned.conf

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第13张图片

2.2.8 安装JDK(所有节点) 

注意:CDH的安装 要求使用指定版本的oracle-j2sdk1.8

查询是否有已经安装的jdk:

rpm -qa | grep java
  
  
    
    
    
    

        如果之前安装过Java组件,先将其卸载

yum remove java*
  
  
    
    
    
    

        我这里没有

上传安装包oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm到/opt目录 :

        在准备工作中,把安装包上传到了node0上,使用scp命令将node0上的安装包分发到node1,node2上

         SCP相关知识:Linux scp命令

scp oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm node1:/opt/
  
  
    
    
    
    

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第14张图片

启动安装 :

rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
  
  
    
    
    
    

查找JDK路径:

find / -name java
  
  
    
    
    
    

配置环境变量: 


  
  
    
    
    
    
  1. echo 'export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera' >> /etc/profile
  2. echo 'export PATH=.:$JAVA_HOME/bin:$PATH' >> /etc/profile
  3. source /etc/profile

        source命令相关知识:Linux下source命令详解 

验证:

java -version
  
  
    
    
    
    

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第15张图片

2.2.9 上传JDBC依赖包(所有节点) 

        CDH节点管理和记录节点状态时,都是把节点状态保存在MySQL数据库中。

        JDBC必须在/usr/share/java目录下,且命名为 mysql-connector-java.jar

创建目录:

mkdir -p /usr/share/java
  
  
    
    
    
    

将mysql-connector-java-8.0.18.jar重命名为mysql-connector-java.jar :

        在node0中有已经上传的mysql-connector-java-8.0.18.jar

mv mysql-connector-java-8.0.18.jar mysql-connector-java.jar
  
  
    
    
    
    

将mysql-connector-java.jar移动或复制到每个节点的/user/share/java: 


  
  
    
    
    
    
  1. cp mysql-connector-java.jar /usr/share /java/
  2. scp mysql-connector-java.jar node1: /usr/share /java/
  3. ...

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第16张图片

2.2.10 时间同步 

        CentOS 7 已经启用chronyd服务保证时间同步,不需要再安装ntpd,查看chronyd状态。

systemctl status chronyd
  
  
    
    
    
    

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第17张图片

2.2.11 安装MySQL(master节点,本例中node0) 

        解压mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz

tar Jxvf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
  
  
    
    
    
    

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第18张图片

查询出来已安装的Mariadb: 

        Mariadb相关知识:Mariadb

rpm -qa|grep mariadb
  
  
    
    
    
    

卸载Mariadb,文件名为上述命令查询出来的文件 :

rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
  
  
    
    
    
    

重命名: 


  
  
    
    
    
    
  1. mv mysql-8.0.18-linux-glibc2.12-x86_64 mysql
  2. mv mysql /usr/local

创建数据目录:

        用来保存MySQL数据

mkdir /usr/local/mysql/data
  
  
    
    
    
    

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第19张图片

创建并编辑my.cnf文件: 

vi /etc/my.cnf
  
  
    
    
    
    

        填入以下内容


  
  
    
    
    
    
  1. [client]
  2. port= 3306
  3. socket= /tmp/mysql. sock
  4. [mysqld]
  5. port= 3306
  6. user=mysql
  7. socket= /tmp/mysql. sock
  8. basedir= /usr/local/mysql
  9. datadir= /usr/local/mysql/data
  10. log-error= /usr/local/mysql/error. log
  11. pid-file = /usr/local/mysql/mysql. pid
  12. transaction_isolation = READ- COMMITTED
  13. character-set-server = utf8
  14. collation-server = utf8_general_ci
  15. lower_case_table_names = 1
  16. sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第20张图片

创建组:

groupadd mysql
  
  
    
    
    
    

创建用户:

useradd -g mysql mysql
  
  
    
    
    
    

        此处组和用户的知识点不太清楚,待以后补充‘:Linux 命令整理 groupadd useradd 详解 

修改目录权限:

        相关知识:Linux中chown和chmod的区别和用法(转)

        将 /opt/mysql给予mysql用户

chown -R mysql:mysql /usr/local/mysql
  
  
    
    
    
    

        将/opt/mysql权限设置为755(读4写2执行1) 

chmod -R 755 /usr/local/mysql
  
  
    
    
    
    

初始化mysql :


  
  
    
    
    
    
  1. cd /usr/local/mysql
  2. ./bin/mysqld --initialize --user=mysql

尝试启动mysql: 


  
  
    
    
    
    
  1. cd /usr/local/mysql
  2. ./support-files/mysql.server start

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第21张图片

将mysql添加为系统服务:

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
  
  
    
    
    
    

设置开机启动:


  
  
    
    
    
    
  1. cd /etc/init.d
  2. chmod 755 /etc/init.d/mysql
  3. chkconfig --add mysql
  4. chkconfig --level 345 mysql on
  5. service mysql restart

 配置环境变量:


  
  
    
    
    
    
  1. echo 'export MYSQL_HOME=/usr/local/mysql' >> /etc/profile
  2. echo 'export PATH=.:$MYSQL_HOME/bin:$PATH' >> /etc/profile
  3. source /etc/profile

使用默认密码登录MySQL:

        找到默认密码:


  
  
    
    
    
    
  1. cd /usr/local/mysql
  2. cat error.log

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第22张图片

        得到默认密码EyyQoldIr4.?使用默认密码登录,不能在init.d这个路径下输入如下命令,这样会把MySQL当成服务,具体的知识待学习补充,马克一下 Init.d的作用以及如何配置服务自启动(mysql踩坑集锦

mysql -u root -p
  
  
    
    
    
    

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第23张图片

在MySQL8中第一次登陆需要重新设置root密码:

ALTER user 'root'@'localhost' IDENTIFIED BY '123456';
  
  
    
    
    
    

开启远程访问: 

        mysql 创建用户并赋予用户权限详细操作

        创建一个root用户,允许任何机器登录

CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password  BY '123456';
  
  
    
    
    
    

        允许root用户在任何机器上,访问任何库,任何表(生产中根据情况配置用户和权限)

GRANT ALL ON *.* TO 'root'@'%';
  
  
    
    
    
    

        刷新系统权限相关表

        Mysql知识点总结:Flush privileges 

FLUSH PRIVILEGES;
  
  
    
    
    
    

        尝试登录

mysql -u root -p123456
  
  
    
    
    
    

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第24张图片

3 安装CDH

3.1 搭建本地yum源

        这里选择把yum源配置在node0节点上

3.1.1 安装并启动Apache http 

        这里出现了一点波折,因为之前测试配置本地yum源的时候,在所有节点用系统镜像配置过了本地yum,见文章:配置本地yum源,无法直接按下面的方法安装httpd,所以先把所有节点的yum还原成初始设置,进入/etc/yum.repos.d/,删除修改过的CentOS-Media.repo,进入之前备份的bak文件夹,把备份的.repo拷贝出来。


  
  
    
    
    
    
  1. cd /etc/yum.repos.d/
  2. rm CentOS-Media.repo
  3. cd bak
  4. cp CentOS-Media.repo ../
  5. ll

        然后清空和重建yum的缓存


  
  
    
    
    
    
  1. yum clean
  2. yum makecache

        之后可以在node0节点按如下步骤安装httpd服务


  
  
    
    
    
    
  1. yum install httpd -y #安装Apache http
  2. systemctl start httpd #启动Apache http
  3. systemctl enable httpd #开机自启动Apache http

        安装完后可通过IP地址访问 

3.1.2 上传CM安装文件

       在node0节点完成以下操作,创建安装文件http根目录

mkdir -p /var/www/html/cm6
  
  
    
    
    
    

        上传文件到http根目录,上传后查看文件

ll /var/www/html/cm6
  
  
    
    
    
    

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第25张图片

        ​ 在浏览器中也可查看服务器http根目录下的文件。

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第26张图片

3.1.3 创建yum仓库

        在node0节点完成以下操作


  
  
    
    
    
    
  1. cd / var/www/ html/cm6
  2. yum install -y createrepo
  3. createrepo .

3.1.4 配置yum仓库文件 

         在所有节点完成以下操作

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

  
  
    
    
    
    
  1. [cloudera-manager]
  2. name=Cloudera Manager 6.3. 1
  3. baseurl=http: //node0/cm6
  4. gpgcheck= 0
  5. enabled= 1
  6. autorefresh= 0
  7. type=rpm-md

 3.1.5 验证 

         更新仓库信息,确认本地yum源已被添加


  
  
    
    
    
    
  1. yum clean all
  2. yum makecache

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第27张图片

3.2 安装服务

3.2.1 安装cm-agent

        在所有节点完成以下操作,安装cloudera-manager-agent

执行安装

yum install -y cloudera-manager-agent
  
  
    
    
    
    

 执行结果

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第28张图片

3.2.2  管理节点安装cm-server

        在node0节点完成以下操作,在cm的管理节点(node0)安装 cloudera-manager-server

执行安装

yum install -y cloudera-manager-server
  
  
    
    
    
    

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第29张图片    cloudera-manager-server安装完毕后,会自动创建/opt/cloudera/parcel-repo目录,将之前下载好的CDH安装包CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel上传到/opt/cloudera/parcel-repo目录,上传完成后计算校验和


  
  
    
    
    
    
  1. cd /opt/cloudera/parcel-repo
  2. sha1sum CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel | awk '{ print $1 }' > CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第30张图片3.3 初始化cloudera-manager-server

3.3.1 在mysql中为CMServer创建数据库

        在node0节点完成以下操作


  
  
    
    
    
    
  1. mysql -uroot -p123456
  2. create database cmserver character set 'utf8';
  3. show databases;
  4. exit

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第31张图片

3.3.2 执行CM初始化脚本

        在node0节点完成以下操作

/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cmserver root 123456
  
  
    
    
    
    

        /opt/cloudera/cm/schema/scm_prepare_database.sh 数据库类型 库名 用户 密码 

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第32张图片

        这里有个波折,报时区不一致错误,参考如下文章可解决。

        The server time zone value 'EDT' is unrecognized or represents more than one time zone.

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第33张图片

3.3.3 启动cm-server服务

        在node0节点完成以下操作

启动cm-server服务 

systemctl start cloudera-scm-server.service
  
  
    
    
    
    

查看服务运行状态

        通过端口监听检查服务启动情况,cm-server默认使用7180端口进行访问

netstat -anp| grep 7180
  
  
    
    
    
    

        查看到端口已经正常服务,打开浏览器进入 node0:7180(http://192.168.137.100:7180) (需要配置主机名映射,或者使用ip访问) 

账号、密码:admin、admin

基于CentOS7的CDH6.3.2完全分布式集群搭建【上】_第34张图片

你可能感兴趣的:(分布式,linux,hadoop)