美文网首页
大数据入门系列 -- CDH5.1.3集群搭建

大数据入门系列 -- CDH5.1.3集群搭建

作者: 我要进大厂 | 来源:发表于2019-08-16 11:30 被阅读0次

    CDH5.1.3集群搭建

    环境:

    CentOS-6.10-x86_64-bin-DVD1.iso
    VMware-workstation-full-14.1.3-9474260.exe
    jdk-7u80-linux-x64.tar.gz
    CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel
    CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1
    manifest.json
    mysql-connector-java-5.1.37.jar
    centos全部节点密码cdh
    操作用户:root
    

    cdh5.1.3.12下载地址:http://archive.cloudera.com/cdh5/parcels/5.1.3.12/

    (一)VM桥接

    1. 虚拟机修改配置

    1565264244490.png 1565264355452.png

    2. 修改eth0网卡配置

    vim /etc/sysconfig/network-scripts/ifcfg-eth0

    DEVICE="eth0"
    TYPE="Ethernet"
    ONBOOT="yes"
    NM_CONTROLLED="yes"
    HWADDR="00:0C:29:CA:BE:0D"
    UUID="0721e783-4aba-4122-b21b-068137182e1f"
    BOOTPROTO="static"
    IPADDR="192.168.43.226"
    NETMASK="255.255.255.0"
    GATEWAY="192.168.43.1"
    DNS1="8.8.8.8"
    IPV6INIT="no"
    USERCTL="no"
    

    ONBOOT 开机启动,NM_CONTROLLED实时生效。记住,不要在某个值后面加 # 注释 ,会导致该项失效。如

    BOOTPROTO="static" # dhcp 因加了# dhcp而让这一项失效。IPADDR,NETMASK,GATEWAY根据你自己电脑设置。

    修改ifcfg-eth0完成后,需要service network restart

    3. 增加ip映射

    vim /etc/hosts

    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.43.228 cdh01
    192.168.43.227 cdh02
    192.168.43.226 cdh03
    

    注意:修改 /etc/hosts,此处一定要注意,不要按照网上有的说明,将127.0.0.1那一行里的localhost.localdomain改成主机名称,在安装Cloudera Agent的时候会识别不出名称和IP。像上面那样新增ip和主机名就好了,原来的内容不做修改。

    4. 修改主机名

    vim /etc/sysconfig/network

    NETWORKING=yes
    #HOSTNAME=localhost.localdomain
    HOSTNAME=cdh02
    

    以上四个步骤完成后,重启。

    进一步了解:https://www.cnblogs.com/weizaiyes/p/9911200.html

    常见错误:

    1.虚拟机桥接机无法ping到自己主机

    windows10的防火墙开启ping功能

    【入站规则】-【文件和打印机共享(回显请求 - ICMPv4-In)】

    详情:https://jingyan.baidu.com/article/36d6ed1f671a8f1bcf4883c0.html

    2.CentOS系统配置.ssh遇到port 22-No route to host问题的解决方法

    可能是/etc/hosts没配置后

    详情:https://blog.csdn.net/oba_gaga/article/details/80684051

    (二)安装Oracle的Java

    CentOS,自带OpenJdk,不过运行CDH5需要使用Oracle的Jdk,需要Java 7的支持。

    卸载自带的OpenJdk,使用rpm -qa | grep java查询java相关的包,使用rpm -e --nodeps 包名卸载之。

    将jdk解压tar -zxvf jdk*到/usr/local/jdk/目录下,并配置vim /etc/profile

    export JAVA_HOME=/usr/local/jdk/jdk1.7.0_80
    export JRE_HOME=$JAVA_HOME/jre
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
    export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
    

    保存后需要,source /etc/profile 让配置生效

    (三)配置SSH免密登录

    所有节点生成authorized_keys

    ssh-keygen -t rsa -P ''
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys

    远程汇集到master机器

    scp ~/.ssh/authorized_keys root@cdh01:~/.ssh/authorized_keys_02

    其中authorized_keys_02,为你想保存在master目录的名称,一般以你的节点机机器命名,好区分。

    master汇集各节点的authorized_keys到自己的authorized_keys

    cat authorized_keys_02 >> authorized_keys_02

    cat authorized_keys_02 >> authorized_keys_03

    master远程拷贝覆盖各节点的authorized_keys

    scp ~/.ssh/authorized_keys root@cdh02:~/.ssh/authorized_keys

    scp ~/.ssh/authorized_keys root@cdh03:~/.ssh/authorized_keys

    (四) 关闭防火墙和SELinux

    注意: 需要在所有的节点上执行,因为涉及到的端口太多了,临时关闭防火墙是为了安装起来更方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。

    关闭防火墙:

    service iptables stop (临时关闭)  
    chkconfig iptables off (重启后生效)
    

    关闭SELINUX(实际安装过程中发现没有关闭也是可以的,不知道会不会有问题,还需进一步进行验证):

    setenforce 0 (临时生效)  
    修改 vim /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)
    

    (五)安装配置MySql(主节点)

    注意:如果安装了MariaDB数据库,要卸载掉 。

    检查是否安装了mariadb rpm -qa | grep mariadb-server

    卸载数据库 yum -y remove mari*

    删除数据库文件: rm -rf /var/lib/mysql/*

    通过yum install mysql-server安装mysql服务器。chkconfig mysqld on设置开机启动,并service mysqld start启动mysql服务,并根据提示设置root的初试密码:mysqladmin -u root password 'xxxx'

    查看数据库版本 mysql -V

    mysql -uroot -pxxxx进入mysql命令行,创建以下数据库:

    # hive
    create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    # activity monitor
    create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    

    设置root授权访问以上所有的数据库:

    #授权root用户在主节点拥有所有数据库的访问权限(n1,和 xxxx 要替换成你自己的主机名和数据库密码)
    grant all privileges on *.* to 'root'@'n1' identified by 'xxxx' with grant option;
    # 刷新授权
    flush privileges;
    

    官方MySql配置文档:http://www.cloudera.com/content/cloudera/en/documentation/cloudera-manager/v5-latest/Cloudera-Manager-Installation-Guide/cm5ig_mysql.html#cmig_topic_5_5

    (六)所有节点配置NTP服务

    集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。 具体思路如下:

    master节点作为ntp服务器与外界对时中心同步时间,随后对所有datanode节点提供时间同步服务。

    所有datanode节点以master节点为基础同步时间。

    安装ntp

    查看是否安装了ntp:rpm -qa|grep ntp

    安装ntp: yum install ntp

    设定东八时区

    Linux里面用Asia/Shanghai表示东八区,等价于Windows中的 北京、重庆、香港特别行政区,乌鲁木齐的时区设置

    rm -rf /etc/localtime
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

    主节点ntp配置

    配置之前先关了服务 service ntpd status

    修改配置文件 vim /etc/ntp.conf

    内容修改如下:

    1565319290013.png

    同步阿里时间 ntpdate ntp1.aliyun.com

    启动ntp /etc/init.d/ntpd start

    开机启动 chkconfig ntpd on

    查看同步状态 ntpstat

    节点ntp配置

    先安装ntp(如何安装上面介绍了),然后关了ntp服务,再进行配置
    
    service ntpd stop # 关闭ntpd
    vim /etc/ntp.conf # server 0.centos.pool.ntp.org iburst 四条都注释,修改成 server cdh01
    ntpdate cdh01  # cdh01为主节点名称,需要ntpd是关闭状态,所以需要先关闭ntpd服务
    
    echo '*/10 * * * * /usr/sbin/ntpdate cdh01 &>/dev/null' >> /var/spool/cron/root 
    该命令是做一个每10分钟同步一次时间服务器的任务,其中cdh01是自己配置的时间服务器,&>/dev/null表示不打印日志。`crontab -e` 命令可以看到已经写进去了
    
    /etc/init.d/ntpd start # 启动
    chkconfig ntpd on      # 开机自启动
    ntpstat # 查看同步状态
    

    ntpstat

    检查是否成功,用ntpstat命令查看同步状态,出现以下状态代表启动成功:

    synchronised to NTP server (192.168.43.228) at stratum 4 
       time correct to within 512 ms
       polling server every 64 s
    

    若出现以下内容,尝试稍等几分钟再重试ntpstat

    unsynchronised
      time server re-starting
       polling server every 8 s
    

    查看同步的状态:ntpq -p # 可查看延迟多久

    详情了解:https://blog.51cto.com/13178102/2052175

    https://yq.aliyun.com/articles/696814?spm=a2c4e.11155472.0.0.2071678axvF5xr

    https://www.cnblogs.com/quchunhui/p/7658853.html

    拍快照,在运行cdh之前,易于恢复到运行cdh之前的环境。

    (七)安装CDH

    1. 安装Cloudera Manager Server 和Agent

    a. 主节点解压安装

    cloudera manager的目录默认位置在/opt下。解压:tar xzvf cloudera-manager*.tar.gz将解压后的cm-5.1.3和cloudera目录放到/opt目录下。

    附: cp -a cm-5.1.3 /opt/ # -a 拷贝所有。

    b. 为Cloudera Manager 5建立数据库

    首先需要去MySql的官网下载JDBC驱动,http://dev.mysql.com/downloads/connector/j/,解压后,找到mysql-connector-java-5.1.33-bin.jar,放到/opt/cm-5.1.3/share/cmf/lib/中。

    也可以使用maven命令下载jar

    mvn dependency:get -DremoteRepositories=http://repo1.maven.org/maven2/ -DgroupId=mysql -DartifactId=mysql-connector-java -Dversion=5.1.37 #maven命令下载jar
    

    c. 在主节点初始化CM5的数据库

    /opt/cm-5.1.3/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -pxxxx --scm-host localhost scm scm scm
    

    d. Agent配置

    修改/opt/cm-5.1.3/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名。

    e. 同步Agent到其他节点

    scp -r /opt/cm-5.1.3 root@cdh02:/opt/
    

    f. 在所有节点创建cloudera-scm用户

    useradd --system --home=/opt/cm-5.1.3/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
    

    g. 准备Parcels,用以安装CDH5

    将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中(parcel-repo需要手动创建)。

    相关的文件如下:

    • CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel
    • CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1
    • manifest.json

    最后将CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1,重命名为CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha,这点必须注意,否则,系统会重新下载CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel文件。

    h. 相关启动脚本

    通过/opt/cm-5.1.3/etc/init.d/cloudera-scm-server start启动服务端。

    通过/opt/cm-5.1.3/etc/init.d/cloudera-scm-agent start启动Agent服务。

    我们启动的其实是个service脚本,需要停止服务将以上的start参数改为stop就可以了,重启是restart。

    注:先启动server,再启动agent

    2. web界面安装配置CDH5

    访问地址:http://cdh01:7180/cmf/login

    这时可以通过浏览器访问主节点的7180端口测试一下了(由于CM Server的启动需要花点时间,这里可能要等待一会才能访问),默认的用户名和密码均为admin:

    1565316779247.png

    可以看到,免费版本的CM5已经没有原来50个节点数量的限制了。

    1565330417155.png

    各个Agent节点正常启动后,可以在当前管理的主机列表中看到对应的节点。选择要安装的节点,点继续。

    1565330457806.png

    接下来,出现以下包名,说明本地Parcel包配置无误,直接点继续就可以了。

    注:一定要选对版本,默认是CDH-5.16.3-1CDH5.16.2p0.8

    1565330548475.png

    点击,继续,如果配置本地Parcel包无误,那么下图中的已下载,应该是瞬间就完成了,然后就是耐心等待分配过程就行了,大约10多分钟吧,取决于内网网速。

    1565316320368.png

    接下来是服务器检查,可能会遇到以下问题:

    1565332241589.png
    Cloudera 建议将 /proc/sys/vm/swappiness 设置为 0。当前设置为 60。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf 以在重启后保存该设置。您可以继续进行安装,但可能会遇到问题,Cloudera Manager 报告您的主机由于交换运行状况不佳。以下主机受到影响:
    

    通过echo 0 > /proc/sys/vm/swappiness即可解决。

    接下来是选择安装服务:

    1565332299956.png

    服务配置,一般情况下保持默认就可以了(Cloudera Manager会根据机器的配置自动进行配置,如果需要特殊调整,自行进行设置就可以了):

    1565333686730.png

    接下来是数据库的设置,检查通过后就可以进行下一步的操作了:

    1565332516955.png

    下面是集群设置的审查页面,这里都是保持默认配置的:

    1565332628047.png

    终于到安装各个服务的地方了。注意,这里安装Hive的时候可能会报错,因为我们使用了MySql作为hive的元数据存储,hive默认没有带mysql的驱动,所以需要通过以下命令拷贝一个:

    cp /opt/cm-5.1.3/share/cmf/lib/mysql-connector-java-5.1.37.jar  /opt/cloudera/parcels/CDH-5.1.3-1.cdh5.1.3.p0.12/lib/hive/lib/
    

    一定先复制上面的mysql驱动,再继续下一步,免得安装失败。

    群集设置,初始化各组件

    1565333222706.png

    服务的安装过程大约半小时就可以完成:

    1565338883190.png

    相关网址:

    查看集群信息:http://cdh:8088/cluster/

    查看各节点信息:http://cdh:50070/dfshealth.html#tab-overview

    安装后:各个组件可在/etc/查看到。日志可以在/var/log/目录查看

    3. 常见错误:

    1. [03/Apr/2015 00:50:43 +0000] 8369 MainThread agent ERROR Failed to connect to previous supervisor.
    kill -9 $(pgrep -f  supervisord)然后重启agent即可
    
    ps ax | fgrep supervisord 
    
    1. There are mismatched versions across the system, which will cause failures. See below for details
    2. 安装cdh的时候,选择hosts主机的时候,没有出现主机,可能是你的/etc/hosts配置出问题了。
    注意:修改 /etc/hosts,此处一定要注意,不要按照网上有的说明,将127.0.0.1那一行里的`localhost.localdomain`改成主机名称,在安装Cloudera Agent的时候会识别不出名称和IP。像上面那样新增ip和主机名就好了,原来的内容不做修改。
    
    1. 主机使用 NONE CDH 版本进行报告
    2. CDH5.6安装报“Inspector did not run sucessfully”错误
    进入mysql命令行,创建数据库
    
    //hive
    
    create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    
    //activity monitor
    
    create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    
    如果需要安装Oozie请创建
    
    create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    
    1). --hive 数据库
    
    create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    
    2). --集群监控数据库
    
    create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    
    3). --hue 数据库
    
    create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    
    4). --oozie 数据库
    
    create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    
    1. 安装失败,无法接受agent发出的检测信号。

      确保主机名称正确

      确保端口7182可在cloudera manager server上访问(检查防火墙规则)

      确保正在添加的主机的端口9000和9001空闲

      检查在添加的主机上/var/log/cloudera-scm-agent/中的代理日志(某些日志可在安装详细信息中找到)

    1565338307273.png
    a.删了agent.pid和agent目录下run目录内容
    b.ps aux | grep super
    c.kill -9 <processID>
    
    d.ps aux | grep super
       root     18949  0.0  0.1 223624 12996 ?    Ss   11:16   0:00 /opt/cm-e.7.0/lib64/cmf/agent/build/env/bin/python /opt/cm-5.7.0/lib64/cmf/agent/build/env/bin/supervisord   
       root 23390  0.0  0.0 112656   972 pts/0    S+   11:37   0:00 grep --color=auto super
    
    e.kill   18949
    f.service cloudera-scm-agent restart
    
    1. 中途安装失败,重新安装

    关闭所有服务

     #主节点
     [root@CDH-DEV1 opt]# /opt/cm-5.13.0/etc/init.d/cloudera-scm-server stop
     #主节点及其他节点
     [root@CDH-DEV1 opt]# /opt/cm-5.13.0/etc/init.d/cloudera-scm-agent stop
    

    删除agent uuid

    rm -rf /opt/cm-5.13.0/lib/cloudera-scm-agent/*
    

    删除数据库scm

    重新配置数据库
    /opt/cm-5.13.0/share/cmf/schema/scm_prepare_database.sh mysql -hlocalhost -uroot -p scm scm
    启动Cloudera server和agent,按照之前步骤安装即可
    
    1. could not contact scm server at localhost:7182, giving up
    Detecting Cloudera Manager Server...
    Detecting Cloudera Manager Server...
    BEGIN host -t PTR 192.168.1.198
    198.1.168.192.in-addr.arpa domain name pointer localhost.
    END (0)
    using localhost as scm server hostname
    BEGIN which python
    /usr/bin/python
    END (0)
    BEGIN python -c 'import socket; import sys; s = socket.socket(socket.AF_INET); s.settimeout(5.0); s.connect((sys.argv[1], int(sys.argv[2]))); s.close();' localhost 7182
    Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "<string>", line 1, in connect
    socket.error: [Errno 111] Connection refused
    END (1)
    could not contact scm server at localhost:7182, giving up
    waiting for rollback request
    

    解决:mv /usr/bin/host /usr/bin/host.bak

    1. 副本不足的块, NameNode 运行状况
    free -m free -g 查看内存使用
    df -h查看磁盘空间
    df -ia 查看inode使用情况
    
    1. 安装过程失败,重新安装

    删除数据库cm,删除cm_guid,重启试一下(本方法未尝试是否可靠)

    1565594084152.png

    作者:陈集福

    时间:2019.08.09

    本文档参考:https://www.cnblogs.com/jasondan/p/4011153.html

    相关文章

      网友评论

          本文标题:大数据入门系列 -- CDH5.1.3集群搭建

          本文链接:https://www.haomeiwen.com/subject/yexxsctx.html