Linux环境Cloudera CDH安装配置完全解决方案

8,491 阅读15分钟

Linux环境Cloudera CDH安装配置

PS: 几乎全网最全,介绍完全离线和在线联网两种安装方式,搭建CDH,阅此文足矣。

1. 认识CDH

(1) CDH介绍

  • CDH是Apache Hadoop和相关项目中最完整,经过测试和最流行的发行版。
  • 由Cloudera公司发行的Hadoop版本,全称(Cloudera’s Distribution Including Apache Hadoop)。该版本在基于原生Apache Hadoop版本进行改进,添加了补丁和自行开发的组件,更加稳定易用。是目前国内使用最多的版本。
  • 官网:www.cloudera.com/
  • 官方文档:www.cloudera.com/documentati…
  • CDH提供了Hadoop的核心元素 :
    • 可扩展存储和分布式计算
    • 以及基于Web的用户界面和重要的企业功能。
  • CDH是Apache许可的开源软件,是唯一提供统一批处理,交互式SQL和交互式搜索以及基于角色的访问控制的Hadoop解决方案。

(2) CDH优势

<1>. 灵活性

  • 存储任何类型的数据并使用各种不同的计算框架对其进行操作,包括批处理,交互式SQL,自由文本搜索,机器学习和统计计算。

<2>. 集成

  • 在完整的Hadoop平台上快速启动和运行,该平台可与各种硬件和软件解决方案配合使用。

<3>. 安全

  • 处理和控制敏感数据。

<4>. 可扩展性

  • 支持广泛的应用程序,并扩展和扩展它们以满足您的要求。

<5>. 高可用性

  • 充满信心地执行任务关键型业务任务。

<6>. 兼容性

  • 利用现有的IT基础架构和投资。

2. 前期准备工作

  • 注意:搭建前先确定自己的设备情况,各节点硬盘30G以上,主节点内存6G以上,从节点内存2G以上,低配置会导致后续加载服务失败。
    • 给一个大致的参考:
  • 这里的准备工作是两种安装方式都需要提前配置好的,从裸虚拟机开始,做过相关配置略过即可。
  • 我的环境是三台虚拟机(主节点:bigdata01;从节点:bigdata02,bigdata03),操作系统均为CentOS7,自行根据实际情况灵活调整。

(1) Linux配置IP(NAT模式):

  • 相关信息必须与VMnet8保持一致
  • 通过命令:vi /etc/sysconfig/network-scripts/ifcfg-(自己的名字) 进行编辑:
    •   TYPE=Ethernet    
      BOOTPROTO=static  (注意改成静态)   
      DEFROUTE=yes  
      IPV4_FAILURE_FATAL=no  
      IPV6INIT=yes  
        IPV6_AUTOCONF=yes  
        IPV6_DEFROUTE=yes  
        IPV6_FAILURE_FATAL=no  
        IPV6_ADDR_GEN_MODE=stable-privacy  
        NAME=ens33  
        UUID=9cbcf25a-600d-4d9c-88ad-ab509ab6e52a  
        DEVICE=ens33  
        ONBOOT=yes  
        **IPADDR=192.168.44.121  
        PREFIX=24  
        GATEWAY=192.168.44.2  
        DNS1=8.8.8.8**  
        IPV6_PEERDNS=yes  
        IPV6_PEERROUTES=yes  
        IPV6_PRIVACY=no  
      
  • 重启网络服务:
    • service network restart

(2) linux关闭防火墙:

  • 查看防火墙状态:firewall-cmd --state ->running
  • 关闭防火墙-本次有效:systemctl stop firewalld.service
  • 禁用防火墙-永久生效:systemctl disable firewalld.service ->not running

(3) 禁用透明页(所有节点):

  • 查看:cat /proc/sys/vm/swappiness 默认为30
  • 永久修改:在/etc/sysctl.conf文件添加参数vm/swappiness=10

(4) 关闭selinux 安全模块(所有节点):

  • 查看:getenforce
  • /etc/selinux/config文件中将SELINUX参数改为disabled

(5) 设置主机名:

  • 位置:vi /etc/hostname,输入主机名
  • **注意:**需要重启:reboot

(6) 设置映射:

  • 位置:vi /etc/hosts,输入集群全部IP和主机名
  • 格式:192.168.44.111 bigdata01

(7) 设置免密登录:

  • 生成密钥:ssh-keygen (三次回车键)
  • 拷贝到主机:ssh-copy-id 主机名 (所有节点都拷贝)

(8) 安装jdk:

  • 查看是否系统自带:rpm -qa|grep java
  • 如果查询到要先删除,如果是最小化安装通常没有jdk

<1>. 上传安装包:

  • CRT:alt+p
  • winscp:拖入目录

<2>. 解压:

  • tar -zxvf jdkXXXXX.tar.gz -C 目标目录

<3>. 配置环境变量:

  • 修改配置文件:
    • vi /etc/profile
  • 增加以下内容:
    • export JAVA_HOME=jdk目标目录
    • export PATH=$PATH:$JAVA_HOME/bin
  • 声明环境变量:
    • source /etc/profile

(9) 分发jdk到其他节点:

<1>. 发送文件:

  • scp jdk 目标主机名:目标目录
  • scp /etc/profile 目标主机名:目标目录

<2>. 配置环境变量:

  • 与节点一相同

<3>. 验证:

  • javac
  • java
  • java -version

(10) 软连接jdk到CDH5:

  • 注意CDH5默认识别的jdk路径为:/usr/java/default这个路径不能多也不能少,需要使CDH识别到系统安装的jdk,采用软连接方式最简单。
  • 软连接建立命令:
    • 格式:ln -s sourcedir sinkdir
    • ln -s /jdk安装位置/* usr/java/default/

(11) MySQL数据库(主节点安装即可)

<1>. Linux安装MySQL:

<2>. 创建相关数据库:

  • Hive的元数据库:
    • mysql>create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
  • Cloudera的元数据库:
    • mysql>create database scm DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

<3>. 开启远程访问:

  • 选择mysql库:
    • mysql>use mysql;
  • 创建CDH默认使用mysql用户scm:
    • mysql>CREATE USER 'scm'@'%' IDENTIFIED BY 'scm';
  • 赋予scm用户所有权限:
    • mysql>GRANT ALL PRIVILEGES ON *.* TO scm@"%" IDENTIFIED BY "scm";
  • 刷新权限:
    • mysql>flush privileges;

(12) 增加开机自启项:(避免后续提示警告)

  • 当前开启:
    • echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
    • echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
  • 添加配置文件:
    • vi /etc/rc.local
      •   echo 0 >  /proc/sys/vm/swappiness
          echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
          echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
          swapoff -a
        
  • 分发给其他节点:
    • scp /etc/rc.local bigdata02:$PWD
    • scp /etc/rc.local bigdata03:$PWD

(13) 安装时钟服务NTP:(CDH要求各个节点时间同步)

  • 时钟服务器安装在主节点上,子节点的时钟服服务全部同步到主节点的时钟服务器上。

  • 安装时钟服务ntp:

    • yum -y install ntp
  • 启动ntp并注册到开机自启:

    • service ntpd start
    • chkconfig ntpd on
  • 查看ntpd的状态:

    • service ntpd status
  • 配置时钟服务器:

    • vi /etc/ntp.conf
      • 修改前:
      • 修改后:
      • 阿里云授时服务器
      #NTP服务器
      ntp.aliyun.com             
      ntp1.aliyun.com
      ntp2.aliyun.com
      ntp3.aliyun.com
      ntp4.aliyun.com
      ntp5.aliyun.com
      ntp6.aliyun.com
      ntp7.aliyun.com
      
      #Time服务器
      time1.aliyun.com
      time2.aliyun.com
      time3.aliyun.com
      time4.aliyun.com
      time5.aliyun.com
      time6.aliyun.com
      time7.aliyun.com
      
  • 重启ntp服务:

    • service ntpd restart

(14) 安装perl:

  • yum install -y perl

3. CDH-5.14.0 在线安装配置流程

  • 操作相对容易,适用于本地测试和有网环境生产搭建。

(1) 相关下载地址:

(2) 解压Clouder Manager到目标目录下:

  • **特别注意:**为了后续方便和避免引起不必要的麻烦,务必创建目录/opt/cloudera-manager/opt/cloudera/parcel-repo
  • tar -zxvf .tar.gz -C /opt/cloudera-manager

(3) 创建用户cloudera-scm:

  • 由于Cloudera Manager和Managed Services默认使用cloudera-scm,所以需要创建此用户。
  • 创建用户:
    • useradd --system --home=/opt/cloudera-manager/cm-5.14.1/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
  • 修改用户密码:
    • passwd cloudera-scm

(4) 主节点创建Cloudera Manager服务本地数据存储目录:

  • mkdir /var/lib/cloudera-scm-server
  • chown cloudera-scm:cloudera-scm /var/lib/cloudera-scm-server

(5) 配置Agent:

  • 配置所有节点的Agent
  • vi /opt/cloudera-manager/cm-5.14.1/etc/cloudera-scm-agent/config.ini
  • 将server_host修改成主节点的主机名(一定不能是IP地址),如果主节点端口没有自定义,则不用修改。

(6) 配置mysql-connector-java.jar:

  • 下载地址(mysql5+):
  • 保存到所有主机的/usr/share/java目录下(目录不存在则新建)
  • 重命名:
    • 很关键一步,不修改CDH则不识别
    • mv mysql-connector-java-5.1.46.jar mysql-connector-java.jar

(7) 初始化cloudera manager:

  • /opt/cloudera-manager/cm-5.14.1/share/cmf/schema/scm_prepare_database.sh mysql scm scm scm
  • 操作成功提示:
    • [                          main] DbCommandExecutor              INFO  Successfully connected to database.
      All done, your SCM database is configured correctly!
      
  • 这里报错的话是之前mysql的scm用户设置问题,各位自行排查。

(8) 配置CDH安装包:

  • 安装包:
    • CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel
    • CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel.sha1
    • manifest.json
  • 将安装包移动主节点/opt/cloudera/parcel-repo目录下
    • /opt/cloudera/parcel-repo目录是CDH自动识别的目录
  • 重命名:
    • mv CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel.sha1 CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel.sha
    • .sha1不识别,不重命名会重新下载sha文件。

(9) 启动主节点的CM Server和所有节点的Agent:

  • 路径为:/opt/cloudera-manager/cm-5.14.1/etc/init.d
  • ./cloudera-scm-server start
  • ./cloudera-scm-agent start

(10) 打开CM管理页面

(11) 选择Cloudera Express:

  • 选择免费。

(12) 选择主机:

  • 在“当前管理的主机”选项卡下,勾选所有节点。

(13) 群集安装:

  • 选择存储库:

(14) 安装完成后,检查主机正确性:

  • 警告一定要解决
    • 三个节点执行:
    • echo never > /sys/kernel/mm/transparent_hugepage/defrag
    • echo never > /sys/kernel/mm/transparent_hugepage/enabled
    • 再次检查 发现警告解决
    • 把上面两条命令写入/etc/rc.local
  • 其他警告比较容易,自行排查
  • 转“5. 安装后续”

4. CDH-5.14.0 离线安装配置流程

  • 操作复杂,适用于高安全性无网环境生产搭建。

(1) 搭建私有网络软件仓库:

  • 在集群安装的过程中,要求每个节点都必须挂载光驱, 而对于每台节点都手动的去挂载光驱太麻烦,也不方便。这里使用每个节点都指向同一个私有网络镜像来解决这个问题。
  • 集群采用的是全离线安装,也不可能逐个节点的安装,同样是也使用指向同一个私有的网络软件包来解决。
  • 因此选择在bigdata01上搭建一个私有的网络软件仓库,以下是搭建的全过程:

<1>. 上传镜像:

  • 搭建私有网络镜像使用的镜像文件最好就使用安装系统的镜像,这里是选择了CentOS6.7x64的镜像,将其上传到hadoop-4的/disk下(需新建/disk目录)。
  • 若遇到上传文件限制无法上传,则压缩成.zip文件上传,之后解压。

<2>. 挂载镜像

  • 创建文件夹:
    • mkdir -p /media/CentOS
  • 挂载镜像:
    • mount -o loop /disk/CentOS-6.7-x86_64-bin-DVD1.iso /media/CentOS/
  • 修改CentOS-Base.repo:
    • 进入目录:cd /etc/yum.repos.d
    • mv CentOS-Base.repo CentOS-Base.repo.bak
  • 修改CentOS-Media.repo文件:
    • vim CentOS-Media.repo
    • enable=0改成enable=1
  • 清除yum的缓存:
    • yum clean metadata
    • yum clean dbcache
  • 查看是否挂载成功:
    • yum list | wc -l
    • 这是统计镜像中有多少个软件包的命令,CentOS6.7x64位的系统的软件包个数一般在3000以上。

<3>. 安装http:

  • 已经安装可以省略,只需启动即可(一般最小化安装不会安装此服务)
  • 安装命令:yum -y install httpd
  • 启动http服务:service httpd start或者/bin/systemctl start httpd.service
  • 设置开机自启:chkconfig httpd on
  • 通过浏览器测试:
    • 输入:http://bigdata01:80
    • 出现类似如下界面说明http启动成功:

<4>. 安装createrepo

  • 用来生成http镜像的网络识别路径。
  • 安装:
    • yum –y install createrepo

(2) 挂载网络系统镜像:

<1>. 创建网络系统镜像:

  • 从镜像中挂载的文件拷贝到软件仓库的目录中:
    • cp -r /media/CentOS 目标目录
  • 删除目录repodata:
    • cd /目标目录/CentOS
    • rm -rf ./repodata
  • 生成新的软件路径目录repodata:

<2>. 使用网络系统镜像:

  • 解除对镜像文件的挂载:

    • umount /media/CentOS
  • /media/CentOS下无文件则说明解除挂载成功。

  • 若出现:

    • 说明有进程在占用挂载点,出现这种情况,表示还有进程在使用/medis/CentOS挂载点,那么此时可以借助fuser命令找出占用目录/medis/CentOS的所有进程,然后kill掉,此时就可以umount了。
  • 修改文件CentOS-Media.repo让其指向刚才创建的网络镜像:

    • vi /etc/yum.repos.d/CentOS-Media.repo
  • 清除yum的缓存:

    • yum clean metadata
    • yum clean dbcache
  • 查看是否挂载成功:

    • yum list | wc -l

<3>. 成功:

  • 到此bigdata01网络系统镜像挂载完成,可以删除镜像文件。

(3) 创建CM和CDH网络软件镜像:

<1>. 创建CM网络软件镜像:

<2>. 创建CDH网络镜像:

  • CDH下载地址:

<3>. 子节点挂载网络镜像

  • 将主节点的/etc/ yum.repos.d下的CentOS-Media.repo文件分发到各子节点的目录:

    • scp -r /etc/yum.repos.d/CentOS-Media.repo bigdata02:$PWD
    • scp -r /etc/yum.repos.d/CentOS-Media.repo bigdata03:$PWD
  • 在所有子节点执行如下命令:

    • mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
  • <4>. 子节点挂载网络镜像

    • 将主节点/etc/ yum.repos.d下的CentOS-Media.repo文件分发到各子节点的目录/etc/ yum.repos.d下:
      • scp -r /etc/yum.repos.d/CentOS-Media.repo bigdata02:/etc/yum.repos.d/
      • scp -r /etc/yum.repos.d/CentOS-Media.repo bigdata03:/etc/yum.repos.d/
    • 在所有子节点执行如下命令:
      • mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
    • 清除yum的缓存:
      • yum clean metadata
      • yum clean dbcache
    • 查看是否挂载成功:
      • yum list | wc -l
      • 这是统计镜像中有多少个软件包的命令,CentOS6.7x64位的系统的软件包个数一般在3000以上。

(4) CM安装:

  • 之前只是建立了CM的网络软件镜像,但是并没有让系统识别,现在开始一步步安装CM。
  • 由于CM只要安装在主节点bigdata01上,以下操作仅在bigdata01上执行。

<1>. 配置CM的yum源

  • 找到CM网络镜像中拷贝cloudera-cm.repo
    • 存在于cm的压缩包中,可以从压缩包中直接解压。
  • 拷贝cloudera-cm.repo/etc/yum.repos.d/目录下:
    • cp /opt/module/cm-5.14/cloudera-manager.repo /etc/yum.repos.d/
  • 进入目录/etc/yum.repos.d/:
    • cd /etc/yum.repos.d/
  • 修改cloudera-cm.repo:
    • vi cloudera-cm.repo
    • baseurl=http://bigdata01/cm5.14
    • gpgkey=http://bigdata01/cm5.14/RPM-GPG-KEY-cloudera
    • 一定要注意和cm的网络软件镜像相对应。
  • 修改cloudera-cm.repo:
    • cp cloudera-cm.repo cloudera-manager.repo

<2>. 安装CM

  • 下载CM安装的引导文件——cloudera-manager-installer.bin:

  • 将其上传到/opt下:

  • 上传的cloudera-manager-installer.bin文件并没有执行权限,赋予其执行权限:

    • chmod 755 cloudera-manager-installer.bin
  • 执行安装:

    • ./opt/cloudera-manager-installer.bin
    • 安装提示进行即可,出现下面界面即安装成功:
  • 查看cloudera的服务是否启动:

    • ./cloudera-scm-server start
  • 通过浏览器访问cm的页面控制台:

    • http://bigdata01:7180
    • 7180是默认端口,若冲突修改流程如下:
      • 登录主节点MySQL
      • mysql>use scm
      • 查看默认端口:
        • mysql>select * from CONFIGS where ATTR='http_port';
      • 修改端口:
        • update CONFIGS set VALUE='XXXX' where ATTR='http_port';
      • 重启服务器:
        • ./cloudera-scm-server start restart
      • 初始用户名密码均为admin,(可自行修改)登录后进行cdh集群安界面。

(5) CDH集群安装:

  • 接下来就通过浏览器界面来执行CDH集群安装。

<1>. 选择子节点

  • 在登录了后,进入的第一个界面是cloudera的最终用户许可条款和条件:

  • 勾选是的,再点继续,进入CDH版本选择界面:

  • 这里选择免费版, 再点击继续,进行感谢界面:

  • 直接点击继续,进入了节点选择界面:

  • 在这个界面我们需要填入,我们集群的所有节点主机名(可从任意节点的hosts文件中拷贝。),以英文逗号分隔,填完了后点击搜索。

<2>. CDH和CM的具体网络位置的选择

  • 在确认主机无误后,点击继续,就可以进入CDH和CM的网络位置选择界面。

  • a. 选择CDH的位置:

    • 先点击 更多选项,进入CDH网络位置选择界面:

    • 修改成我们自己的CDH网络软件镜像的地址,多余的删掉。

    • 点击保存更改,这时CDH和CM的网络位置选择界面变为:

    • 选择CDH版本就完成了,接下来选择CM。

  • b. 选择CM的位置

    • 在选择了CDH后,我们继续点击 自定义存储库 来选择我们自己的CM:

    • 就是把配置cloudera-cm.repo的配置拿出来,在界面上填一遍,我们的填写如下:

    • 填写完成后,就会进入给每个节点安装cloudera-scm-agent的界面,再点击继续前,我们需要将hadoop-cm中安装CM时安装的JDK文件分发到每个子节点,不然子节点在安装cloudera-scm-agent会包错。

<3>. Agent的安装和配置

  • 点击继续,进入jdk安装选项:

  • 这个就不需要勾选,直接点击继续,进入选择是否启动单用户模式:

  • 选择不启用,直接点击继续,进入节点通信选择:

  • 这里使用 所有用户接收相同的密码:

  • 填入密码后,点击继续,进行agent安装界面, 耐心等待安装完成。安装完成后,点击继续,进入CDH包分发到agent的界面,耐心等待其完成。分发为完成后,点击继续,进入agent主机检查:

    • 转“5. 安装后续”

5. 安装后续

(1) agent主机检查

  • 需要将所有警告都解决才能点击继续,不然安装可能会报错。

  • 大概率出现的警告为:

    • a. Cloudera 建议将 /proc/sys/vm/swappiness 设置为最大值 10。当前设置为 30。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf,以在重启后保存该设置。您可以继续进行安装,但 Cloudera Manager 可能会报告您的主机由于交换而运行状况不良。 - 解决方案:
      • sysctl vm.swappiness=10
      • cat /proc/sys/vm/swappiness
      • 加入配置文件永久修改:
        • 在/etc/sysctl.conf 文件里添加如下参数:
          • vm.swappiness=10
    • b. 已启用透明大页面压缩,可能会导致重大性能问题。请运行“echo never > /sys/kernel/mm/transparent_hugepage/defrag”和“echo never > /sys/kernel/mm/transparent_hugepage/enabled”以禁用此设置。
      • 解决方案:
        • echo never > /sys/kernel/mm/transparent_hugepage/defrag
        • echo never > /sys/kernel/mm/transparent_hugepage/enabled
        • vi /etc/rc.local
        • 添加:
          • echo never > /sys/kernel/mm/transparent_hugepage/defrag
          • echo never > /sys/kernel/mm/transparent_hugepage/enabled

(2) CDH服务选择

  • 安装和配置完Agent后,就会进入CDH服务选择界面:

  • 选择自定义服务,勾选如下:

  • 点击继续,进入服务安装细节界面:

(3) 配置元数据库为Mysql

在选择完服务后,点击继续就可以进入数据库选择界面,这里选择mysql,注意用户名和密码,这里需要填如Mysql中支持远程连接的用户名和密码,点击测试连接:

(4) 集群服务配置

<1>. HDFS DataNode地址配置

<2>. HDFS NameNode地址配置

<3>. 1.1.3 HDFS SNameNode地址配置

<4>. Yarn NodeManager的地址配置

  • 其他的均不需要调整,配置完后点击继续,进入安装界面。

(5) CDH集群安装

  • 在选择完集群服务配置后,就会进行运行安装界面。

  • 可能报错:

    • 原因:
      • jdk未找到
      • 内存不足
    • 原因:perl未安装
  • 完成后,点击继续,集群cm集群控制界面,