• CDH-5.12.2安装教程


    CDH是Cloudera公司提供的Hadoop发行版,它在原生开源的Apache Hadoop基础之上,针对特定版本的Hadoop以及Hadoop相关的软件,如Zookeeper、HBase、Flume、Sqoop等做了兼容性开发,我们在安装CDH发行版的Hadoop时就无需进行额外繁琐的兼容性测试。

    以往安装配置使用Apache Hadoop时,完全需要手动在服务器上,通过命令和脚本进行安装配置,比较复杂而繁琐。使用CDH,我们可以通过Cloudera提供的CM(Cloudera Manager)来进行安装,CM是一个面向Hadoop相关软件的强大SCM工具,它提供了通过Web界面向导的方式进行软件的安装配置,此外还提供了比较基础、友好的监控、预警功能,通过Web UI展示各种已安装软件的资源使用情况、系统运行状态等等。
    如果使用CM来管理CDH平台,因为CM使用了监控管理、运行状态数据采集、预警等等很多服务,所以在集群服务器资源使用方面也会比通常的Apache Hadoop版本多很多,如果所需要的Hadoop集群规模超大,比如成百上千个节点,使用CM来安装管理CDH集群能够节省大量时间,而且节省了对整个集群基本的监控的配置管理;如果集群规模比较小,如5~10个节点左右,建议对这类集群最好单个节点的资源(内存、CPU、磁盘、网络)比较充足一些为好。

    软件准备

    我们通过离线的方式,基于Parcels进行CDH的安装配置,所以首先需要找到并下载相应的软件包。下面是我们当前安装配置的系统软件、应用软件的版本情况,如下所示:

    • CentOS 7.2
    • jdk-7u80-linux-x64.tar.gz
    • http://archive.cloudera.com/cdh5/parcels/5.12.2/

    环境准备

    • CDH集群节点规划集群

    CDH集群节点规划,如下表所示:

    IP地址 主机名 节点角色
    192.168.152.128 linux_128 NameNode、SecondaryNameNode、ResourceMaster、cloudera-scm-server、cloudera-scm-agent、MySQL
    192.168.152.129 linux_129 DataNode、NodeManager、cloudera-scm-agent
         
    • 关闭防火墙

    在集群中的所有节点上,关闭防火墙,执行如下命令:

    1
    2
    systemctl stop firewalld
    systemctl disable firewalld

      

    • 修改hostname

    redhat6以下,修改文件/etc/sysconfig/network中的HOSTNAME=XXX,重启

    redhat7,修改文件/etc/hostname,写入XXX,重启

    • 修改hosts,配置域名和IP

     192.168.152.128 namenode.com linux_128

    192.168.152.129 datanode.com linux_129

    验证:python -c 'import socket; print socket.getfqdn(), socket.gethostbyname(socket.getfqdn())'

    基础环境配置

    • JDK安装配置

    下载JDK安装文件jdk-7u80-linux-x64.tar.gz,解压缩到目录/usr/local/java/中,然后在/etc/profile中增加如下配置:

    1
    2
    3
    export JAVA_HOME=/usr/local/java/jdk1.7.0_80
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/*.jar:$JAVA_HOME/jre/lib/*.jar

    然后使配置生效,执行如下命令:

    1
    source /etc/profile
    • ssh免密码配置

    为了方便安装软件文件在集群中各个节点中进行拷贝,首先在集群中每个节点上单独创建了一个hadoop账户,如下所示:

    1
    2
    useradd hadoop
    Passwd hadoop 12345678

    在NameNode上生成密钥和公钥-----------ssh-keygen -t rsa

    将公钥文件传输到DataNode--129配置文件authorized_keys中-----------ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@192.168.152.129

    现在hadoop用户可免密码登录----------ssh 'hadoop@192.168.152.129'

    有root权限用root用户打通即可

    然后,配置在NameNode上通过ssh免密码登录到集群其它节点,在所有节点上执行如下命令生成秘钥和公钥:

    1
    ssh-keygen -t rsa

    接着在NameNode上,将公钥文件拷贝到集群中所有的DataNode节点上,执行如下命令:

    1
    2
    3
    4
    scp ~/.ssh/id_rsa.pub 172.16.117.63:~/.ssh/id_rsa.pub.master
    scp ~/.ssh/id_rsa.pub 172.16.117.64:~/.ssh/id_rsa.pub.master
    scp ~/.ssh/id_rsa.pub 172.16.117.65:~/.ssh/id_rsa.pub.master
    cp ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.master

    继续在CDH集群中的NameNode及每个DataNode节点上,将公钥添加到authorized_keys文件中,执行如下命令:

    1
    2
    cat ~/.ssh/id_rsa.pub.master >> ~/.ssh/authorized_keys
    chmod g-w ~/.ssh/authorized_keys

    最后,我们验证一下在NameNode本地可以免密码访问自己:

    1
    ssh hadoop@ali-bj01-tst-cluster-001.xiweiai.cn

    同时在NameNode上,也可以直接免密码登录到所有其他的DataNode节点上:

    1
    2
    3
    ssh hadoop@ali-bj01-tst-cluster-002.xiweiai.cn
    ssh hadoop@ali-bj01-tst-cluster-003.xiweiai.cn
    ssh hadoop@ali-bj01-tst-cluster-004.xiweiai.cn

    这样,就可以在配置CDH安装文件过程中,非常方便地拷贝分发安装包和配置文件了。

    • 安装MySQL

    我们的MySQL数据库服务器,直接安装在NameNode节点,为CDH专用。
    下载MySQL软件包,并解压缩,如下所示:

    1
    2
    wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar
    tar xvf mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar

    然后,安装MySQL数据库,执行如下命令:

    1
    2
    3
    4
    rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm
    rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm
    rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm

    进行MySQL数据库的初始化,执行如下命令:

    1
    mysqld --initialize --user=mysql

    可以在/var/log/mysqld.log文件中,获取到MySQL的初始临时密码,比如我的临时密码为k6i6u!Kl0)ex。
    启动MySQL数据库服务器,执行如下命令:

    1
    systemctl start mysqld.service

    然后登录到MySQL数据库服务器:

    1
    mysql -uroot -p

    输入上述临时密码,便可以成功登录,修改默认root用户的密码,自行如下命令:

    1
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

    该密码会在后面安装CDH的过程中使用到。

    安装配置CM、CDH

    这里,做为开发环境使用,我们没有安装配置NameNode、ResourceManager的高可用(HA),如果需要可以参考官网文档进行配置。下面,为了更清晰描述,我们划分为多个步骤并按顺序进行描述,如下所示:

    • 在NameNode上准备所需软件包

    将所有需要的软件包,拷贝到NameNode节点上:

    1
    2
    3
    4
    scp CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel* hadoop@172.16.117.62:~/
    scp cloudera-manager-centos7-cm5.7.0_x86_64.tar hadoop@172.16.117.62:~/
    scp mysql-connector-java-5.1.43-bin.jar hadoop@172.16.117.62:~/
    scp manifest.json hadoop@172.16.117.62:~/

    注意,因为通过CM安装CDH,需要使用到MySQL数据库存储相关数据,所以用到了MySQL的JDBC驱动包。

    • 准备CM、CDH软件包

    在NameNode节点上,将CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel.sha1文件重命名:

    1
    2
    cd ~/
    mv CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel.sha1 CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel.sha

    解压缩cloudera-manager-centos7-cm5.7.0_x86_64.tar到/opt/cdh/目录下,如下所示:

    1
    2
    3
    4
    5
    tar -xvf cloudera-manager-centos7-cm5.7.0_x86_64.tar -C /opt/cdh/
    ll /opt/cdh/
    total 8
    drwxr-xr-x 4 hadoop hadoop 4096 Apr  2  2016 cloudera
    drwxr-xr-x 9 hadoop hadoop 4096 Apr  2  2016 cm-5.12.2

    将parcel相关文件,拷贝到/opt/cdh/cloudera/parcel-repo/目录中:

    1
    2
    cp CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel.sha1 manifest.json /opt/cdh/cloudera/parcel-repo/
    cp mysql-connector-java-5.1.43-bin.jar /opt/cdh/cm-5.12.2/share/cmf/lib/

    修改/opt/cdh/cm-5.12.2/etc/cloudera-scm-agent/config.ini配置文件,修改后的内容如下所示:

    1
    2
    server_host=ali-bj01-tst-cluster-001.xiweiai.cn
    cloudera_mysql_connector_jar=/opt/cdh/cm-5.12.2/share/cmf/lib/mysql-connector-java-5.1.43-bin.jar

    另外,还需要创建如下目录:

    1
    mkdir /opt/cdh/cm-5.12.2/run/cloudera-scm-agent

    否则,在启动SCM agent时会报如下错误:

    1
    CM agent Unable to create the pidfile.
    • 准备MySQL数据库账号

    登录到数据库里,切换用户:use mysql;

    创建scm用户,可以访问cm数据库,如下所示:

    1
    2
    GRANT ALL ON cm.* TO 'scm'@'localhost' IDENTIFIED BY 'scm';
    FLUSH PRIVILEGES;

    可执行sql查看是否添加成功:select host, user from user; 

    • 安装文件拷贝分发

    将在NameNode上准备好的所有软件包,拷贝到集群中所有的DataNode上节点上:

    1
    2
    3
    scp -r /opt/cdh/cm-5.12.2 hadoop@ali-bj01-tst-cluster-002.xiweiai.cn:/opt/cdh/
    scp -r /opt/cdh/cm-5.12.2 hadoop@ali-bj01-tst-cluster-003.xiweiai.cn:/opt/cdh/
    scp -r /opt/cdh/cm-5.12.2 hadoop@ali-bj01-tst-cluster-004.xiweiai.cn:/opt/cdh/

    可能出现拒绝访问错误:

    是由于没有该目录的操作权限,默认的是在/tmp有权限,可以先把文件放到tmp文件目录下,然后在进行mv 或者scp到其他目录

    或者可以对当前用于的目录进行权限的修改,增加写的权限

    • 创建cloudera-scm用户

    在NameNode、所有DataNode节点上,使用root用户创建cloudera-scm用户,执行如下命令:

    1
    useradd --system --home=/opt/cdh/cm-5.12.2/run/cloudera-scm-server  --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

    如果不创建该用户,在启动cloudera-scm-server时会报如下错误:

    1
    2
    install: invalid user ‘cloudera-scm’
    Starting cloudera-scm-server: [FAILED]
    • 初始化MySQL数据库

    在NameNode上,为CM初始化创建MySQL数据库cm中的相关表,使用root用户执行如下命令:

    1
    /opt/cdh/cm-5.12.2/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -P3306 -uroot -proot --scm-host localhost scm scm

    可以看到,初始化过程的信息,如下所示:

    1
    2
    3
    4
    5
    6
    7
    8
    JAVA_HOME=/usr/local/java/jdk1.7.0_80
    Verifying that we can write to /mnt/bd/installations/cdh/cm-5.12.2/etc/cloudera-scm-server
    Thu Aug 31 10:25:52 CST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
    Creating SCM configuration file in /mnt/bd/installations/cdh/cm-5.12.2/etc/cloudera-scm-server
    Executing:  /usr/local/java/jdk1.7.0_80/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/mnt/bd/installations/cdh/cm-5.12.2/share/cmf/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /mnt/bd/installations/cdh/cm-5.12.2/etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
    Thu Aug 31 10:25:53 CST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
    [                          main] DbCommandExecutor              INFO  Successfully connected to database.
    All done, your SCM database is configured correctly!

    启动验证

    在NameNode上启动CM server,在NameNode和DataNode上启动CM agent,都需要使用root用户。

    • 启动cloudera-scm-server

    启动cloudera-scm-server,在NameNode节点上执行如下命令:

    1
    /opt/cdh/cm-5.12.2/etc/init.d/cloudera-scm-server start

    如果启动成功,显示如下信息:

    1
    Starting cloudera-scm-server:                              [  OK  ]

    如果有失败,可以查看日志:

    1
    /opt/cdh/cm-5.12.2/log/cloudera-scm-server/cloudera-scm-server.log
    • 启动cloudera-scm-agent

    启动cloudera-scm-agent,在所有节点(NameNode和DataNode)上执行如下命令:

    1
    /opt/cdh/cm-5.12.2/etc/init.d/cloudera-scm-agent start

    如果启动成功,显示如下信息:

    1
    Starting cloudera-scm-agent:                              [  OK  ]

    如果有失败,可以查看日志:

    1
    /opt/cdh/cm-5.12.2/log/cloudera-scm-agent/cloudera-scm-agent.log
    • 查看CM Web管理控制台

    通过浏览器,打开链接http://192.168.152.128:7180/,就可以看到Web界面,根据配置向导进行配置即可。下图是我配置好的CM管理界面,如下图所示:
    cloudera-manager-webconsole
    配置好Hadoop相关软件后,就可以使用相关的服务了,例如下面是我们测试用的Spark Application程序的提交脚本,如下所示:

    1
    2
    export SPARK_DIST_CLASSPATH=$(hadoop classpath)
    spark-submit --class org.shirdrn.robot.advisor.etl.InitialBatchDataSplittingByDate --master yarn --deploy-mode cluster --executor-memory 2g --num-executors 12 /var/lib/hadoop-hdfs/robot-advisor-etl_2.10-0.0.1-SNAPSHOT.jar 2 /tmp/fund_batch_price_file /tmp/output

    提交成功后,可以通过CM Web控制台上的YARN中对应的Web UI(ResourceManager Web UI)来查看上述提交的Spark Application的运行状态,链接示例:http://ali-bj01-tst-cluster-001.xiweiai.cn:8088/cluster/app/application_1505441596298_0360

    参考链接

  • 相关阅读:
    一种简洁明了的权限管理系统
    css小技巧(1)
    多功能旋转木马轮播实例
    jquery双向列表选择器select版
    jquery双向列表选择器DIV模拟版
    单击页面任何地方关闭隐藏层
    用户登录体验之密码框设计
    扁平化设计的美感
    分析网站的用户行为
    app的架构和导航设计
  • 原文地址:https://www.cnblogs.com/fanshudada/p/9782417.html
Copyright © 2020-2023  润新知