CDH 5.16.1 离线部署 & 通过 CDH 部署 Hadoop 服务

参考

  1. Cloudera Enterprise 5.16.x
  2. Installing Cloudera Manager, CDH, and Managed Services
  3. Installation Path B - Manual Installation Using Cloudera Manager Packages

一. 环境

1.1 系统节点信息

HostnameIPCPU(cores)Memory(GB)OSServiceRemark
master172.30.200.7524centos 7.5jdk, cloudera-scm-server, mysql实际部署后,master节点也需要部署cloudera-scm-agent服务,或采用4个slave节点
slave01172.30.200.7624centos 7.5jdk, cloudera-scm-agent
slave02172.30.200.7724centos 7.5jdk, cloudera-scm-agent
slave03172.30.200.7824centos 7.5jdk, cloudera-scm-agent

1.2 软件版本

相关软件放置在/usr/local/src/目录。

SoftVersionDownloadRemark
CM(Cloudera Manager)cloudera-manager-centos7-cm5.16.1_x86_64.tar.gzbin包,根据版本下载
CDH parcelCDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel根据版本下载软件安装包
CDH parcel.shaCDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1根据版本下载软件包hash码
CDH manifest.jsonmanifest.json根据版本下载版本说明文件
JDKjdk-8u181-linux-x64.tar.gzbin包,根据版本下载
MySQLmysql-5.7.24-el7-x86_64.tar.gzbin包,根据版本下载存放Cloudera Manager配置文件
MySQL-connector-Javamysql-connector-java-8.0.13.jarjar包,根据版本下载JDBC

二. 准备工作

2.1 部分预配置

所有节点执行以下操作:

  • 永久关闭防火墙(firewalldiptables);
  • 永久关闭selinux
  • 设置ntp

2.2 设置hosts

  • 所有节点设置/etc/hosts

    cat << EOF >> /etc/hosts
    
    # hadoop nodes
    172.30.200.75 master
    172.30.200.76 slave01
    172.30.200.77 slave02
    172.30.200.78 slave03
    EOF

2.3 免密访问设置

  • 在所有节点生成秘钥

    ssh-keygen -t rsa
  • 在master节点生成authorized_keys文件

    cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
  • 在master节点执行,将集群每个节点的公钥id_rsa.pub放入master节点的authorized_keys文件中

    for i in {1..3}; do ssh root@slave0$i cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys; done
  • 在master节点执行,将master节点的authorized_keys文件放置到集群每个节点的/root/.ssh/目录,依然命名位authorized_keys
    • 最终的效果是集群中所有节点两两相互免密访问;
    • 注意:首次登陆时有公钥检查,可通过在/etc/ssh/ssh_config文件中设置StrictHostKeyChecking no绕过,或使用-o参数跳过。
    for i in {1..3}; do scp /root/.ssh/authorized_keys root@slave0$i:/root/.ssh/authorized_keys; done

2.4 安装JDK

所有节点都需要安装JDK。

  • 安装JDK

    
    cd /usr/local/src
    tar -zxvf jdk-8u181-linux-x64.tar.gz
    mkdir -p /usr/java
    mv jdk1.8.0_181/ /usr/java/
    
    # 设置软链接,方便升级替换
    ln -s /usr/java/jdk1.8.0_181/ /usr/java/current
  • 设置变量

    cat << EOF >> /etc/profile
    
    # JDK
    export JAVA_HOME=/usr/java/current
    export JRE_HOME=/usr/java/current/jre
    export PATH=$PATH:/usr/java/current/bin
    export CLASSPATH=./:/usr/java/current/lib:/usr/java/current/jre/lib
    EOF
  • 验证

    # 加载变量
    source /etc/profile
    
    # 验证
    java -version

2.5 安装MySQL

只有master节点需要安装MySQL。

  • 卸载系统自带的相关数据库

    rpm -qa | grep mysql
    rpm -qa | grep mariadb
    
    # --nodeps:不检查依赖
    rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
  • 部署MySQL

    # 采用bin包部署,解压后直接使用
    cd /usr/local/src
    tar -zxvf mysql-5.7.24-el7-x86_64.tar.gz -C /usr/local/
    mv /usr/local/mysql-5.7.24-el7-x86_64/ /usr/local/mysql
  • 账号与权限

    # 添加账号
    groupadd mysql
    useradd -g mysql -s /sbin/nologin mysql
    
    # 创建"data"目录
    mkdir /data
    
    # 赋权
    chown -R mysql:mysql /usr/local/mysql/
    chown -R mysql:mysql /data/
  • 初始化MySQL
    • 获取root@localhost账号的初始密码Hqe6x<Re4jhK
    cd /usr/local/mysql/
    bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data
  • 设置变量

    cat << EOF >> /etc/profile
    
    # MySQL
    export PATH=$PATH:/usr/local/mysql/bin
    EOF
    
    # 加载变量
    source /etc/profile
    
    # 软链接
    ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
    ln -s /usr/local/mysql/include/mysql /usr/include/mysql
  • 设置开机启动

    # 复制开机启动脚本到系统服务
    cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
    chown mysql:mysql /etc/rc.d/init.d/mysqld
    
    # 修改默认的"basedir"与"datadir"
    vim /etc/rc.d/init.d/mysqld
    basedir=/usr/local/mysql
    datadir=/data
    
    # 添加开机启动脚本
    chkconfig --add mysqld
    chkconfig --level 35 mysqld on
  • 文件路径:log && pid && socket

    # 日志路径
    mkdir -p /var/log/mysqld
    touch /var/log/mysqld/mysqld.log
    chown -R mysql:mysql /var/log/mysqld/
    
    # pid路径
    mkdir -p /var/run/mysqld
    chown -R mysql:mysql /var/run/mysqld/
    
    # socker路径
    mkdir -p /var/lib/mysqld
    chown -R mysql:mysql /var/lib/mysqld/
    ln -s /var/lib/mysqld/mysql.sock /tmp/mysql.sock
  • 设置my.cnf文件

    # 注意"log-error","pid-file"与"socket"的路径
    mkdir -p /usr/local/mysql/etc
    cat << EOF >> /usr/local/mysql/etc/my.cnf
    [mysqld]
    character-set-server=utf8
    max_connections = 3000
    log-error=/var/log/mysqld/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    socket=/var/lib/mysqld/mysql.sock
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    
    [mysql]
    default-character-set=utf8
    EOF
    
    # 软链接
    ln -s /usr/local/mysql/etc/my.cnf /etc/my.cnf
    
    # 赋权
    chown -R mysql:mysql /usr/local/mysql/etc/
  • 启动MySQL服务

    # 启动服务
    service mysqld start
    
    # 验证
    service mysqld status
  • 设置MySQL账号密码与登陆权限

    # 使用初始化密码登陆
    mysql -uroot -p
    
    # 修改密码,注意不能使用"$"等特殊符号
    set password=password('cdh12#hadoop');
    flush privileges;
    
    # 远程登陆权限
    grant all privileges on *.*  to  'root'@'%'  identified by 'cdh12#hadoop'  with grant option;
    flush privileges;
    
    # 查看账号
    select user, host, authentication_string from mysql.user;

三. Cloudera Manager安装

3.1 部署CM Server & Agent

  • 在所有节点创建CM目录/opt/cloudera-manager

    mkdir /opt/cloudera-manager
  • 在master节点向其余节点分发cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz

    for i in {1..3}; do scp /usr/local/src/cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz  root@slave0$i:/usr/local/src/ ; done
  • 在所有节点解压cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz/opt/cloudera-manager/目录

    tar -zxvf /usr/local/src/cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz -C /opt/cloudera-manager/
  • 在所有slave节点修改/opt/cloudera-manager/cm-5.16.1/etc/cloudera-scm-agent/config.iniserver_host参数为master节点ip或主机名

    sed -i "s/server_host=localhost/server_host=master/g" /opt/cloudera-manager/cm-5.16.1/etc/cloudera-scm-agent/config.ini

3.2 账号 && 权限

  • 在所有节点创建cloudera-scm账号,这是CM相关服务使用的默认账号

    # 禁止使用"cloudera-scm"账号登陆
    useradd --system --home=/opt/cloudera-manager/cm-5.16.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
  • 在所有节点/opt/cloudera-manager目录赋权

    chown -R cloudera-scm:cloudera-scm /opt/cloudera-manager

3.3 设置开机启动

  • 在master节点设置系统服务

    # 设置使用"cloudera-scm-server"为系统启动服务
    cp /opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-server /etc/rc.d/init.d/
    chown cloudera-scm:cloudera-scm /etc/rc.d/init.d/cloudera-scm-server
    
    # 修改"CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}"的路径
    vim /etc/rc.d/init.d/cloudera-scm-server
    CMF_DEFAULTS=/opt/cloudera-manager/cm-5.16.1/etc/default
    
    
    # 添加系统启动服务
    chkconfig --add cloudera-scm-server
    chkconfig --level 35 cloudera-scm-server on
    checkconfig --list
  • 在所有slave节点设置系统服务

    # 设置使用"cloudera-scm-agent"为系统启动服务
    cp /opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-agent /etc/rc.d/init.d/
    chown cloudera-scm:cloudera-scm /etc/rc.d/init.d/cloudera-scm-agent
    
    # 修改"CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}"的路径"-/etc/default"
    vim /etc/rc.d/init.d/cloudera-scm-agent
    CMF_DEFAULTS=${CMF_DEFAULTS:/opt/cloudera-manager/cm-5.16.1/etc/default}
    
    # 添加系统启动服务
    chkconfig --add cloudera-scm-agent
    chkconfig --level 35 cloudera-scm-agent on
    checkconfig --list

3.4 初始化数据库

  • 在所有节点设置MySQL驱动(JDBC);
  • 注意:部署JDBC在任意节点,则后续"CDH安装配置"阶段Reports Manager被分配在任意节点都可以

    cp /usr/local/src/mysql-connector-java-8.0.13.jar /opt/cloudera-manager/cm-5.16.1/share/cmf/lib/
    chown cloudera-scm:cloudera-scm /opt/cloudera-manager/cm-5.16.1/share/cmf/lib/mysql-connector-java-8.0.13.jar
  • 在master节点重启MySQL服务

    service mysqld restart
  • 在任意节点初始化CM
  • 注意:Cloudera服务需要的相关database如下:
    • 表中给出的是CM相关服务配置文件中默认的databaseuser,但不是必须使用;
    • database在数据库中可直接创建,但CM初始化时如果没有database,则自动创建。
    ServiceDatabaseUser
    Cloudera Manager Serverscmscm
    Activity Monitoramonamon
    Reports Managerrmanrman
    Huehuehue
    Hive Metastore Servermetastoremetastore
    Sentry Serversentrysentry
    Cloudera Navigator Audit Servernavnav
    Cloudera Navigator Metadata Servernavmsnavms
    Oozieoozieoozie
    # 格式:scm_prepare_database.sh [options] (postgresql|mysql|oracle) database username [password]
    # scm_prepare_database.sh:创建与配置CMS需要的数据库脚本,默认在"/opt/cloudera-manager/cm-5.16.1/share/cmf/schema/"目录;
    # postgresql|mysql|oracle:必选项,数据库类型;
    # database:必选项,针对postgresql|mysql,创建SCM数据库;针对oracle,填写sid;
    # username:必选项,SCM数据库的账号;
    # password:选填项,SCM数据库的账号密码,如果不指定,会提示输入;
    # options:
    # -h:数据库主机ip或hostname,默认是"localhost";
    # -u:数据库账号,需要具备增删改查的权限,默认是"root";
    # -p:账号密码,默认无密码;
    # --scm-host:SCM server主机名,默认是"localhost"
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % scm scm scm_pass
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % amon amon amon_pass
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % rman rman rman_pass
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % hue hue hue_pass
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % metastore metastore metastore_pass
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % sentry sentry sentry_pass
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % nav nav nav_pass
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % navms navms navms_pass
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % oozie oozie oozie_pass

    返回如下信息,表示配置成功

    [main] INFO  com.cloudera.enterprise.dbutil.DbCommandExecutor  - Successfully connected to database.
    All done, your SCM database is configured correctly!

3.5 创建本地parcel源

  • 在master节点制作本地parcel源

    # 创建本地parcel源目录
    mkdir -p /opt/cloudera/parcel-repo
    
    # 将parcel相关安装包放置到"/opt/cloudera/parcel-repo"目录;
    # 说明:"/opt/cloudera/parcel-repo"目录可放置多套parcel安装包;
    # 将"CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1"重命名为"CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha",否则会重新下载"CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel"安装包
    mv /usr/local/src/CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel /opt/cloudera/parcel-repo/
    mv /usr/local/src/CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha
    mv /usr/local/src/manifest.json /opt/cloudera/parcel-repo/
    
    # 赋权
    chown -R cloudera-scm:cloudera-scm /opt/cloudera/
  • 在所有salve节点创建软件安装目录

    mkdir -p /opt/cloudera/parcels
    
    # 赋权
    chown -R cloudera-scm:cloudera-scm /opt/cloudera/

3.6 启动CM服务

  • 在master节点启动cloudera-scm-server服务

    # "cloudera-scm-server"启动需要连接数据库,监听端口启动会延迟
    service cloudera-scm-server restart
    service cloudera-scm-server status -l
    
    # 通过启动后的状态查看,脚本需要执行"pstree"命令,需要安装依赖包
    yum install psmisc -y
  • 在所有salve节点启动cloudera-scm-agent服务

    yum install psmisc -y
    service cloudera-scm-agent restart
    service cloudera-scm-agent status -l

四. 安装CDH

4.1 CDH安装配置

  • 浏览器访问CM:http://172.30.200.75:7180
  • 默认账号/密码:admin/admin
    924276-20181227205845465-749388167.png
  • 最终用户许可条款与条件
    924276-20181227205903071-1403573769.png
  • 部署版本,选择Cloudera Enterprise 试用版
    924276-20181227205934711-1224840215.png
  • 版本与服务说明
    924276-20181227205944581-1983414114.png
  • cloudera-scm-agent正常启动后,可发现相应的节点,指定集群服务的安装节点
    924276-20181227205957929-411439860.png
  • 选择CDH版本
    924276-20181227210010108-818939276.png
  • 集群安装,如果本地parcel源配置正确,则"下载"阶段瞬间完成,其余阶段视节点数与内部网络情况决定
    924276-20181227210020541-685802065.png
  • 检查主机正确性(需要一些时间),针对slave节点有两个优化建议:
    924276-20181227210046206-405428313.png
    • 1.建议将/proc/sys/vm/swappiness设置为最大值10
      • swappiness值控制操作系统尝试交换内存的积极;
      • swappiness=0:表示最大限度使用物理内存,之后才是swap空间;
      • swappiness=100:表示积极使用swap分区,并且把内存上的数据及时搬迁到swap空间;
      • 如果是混合服务器,不建议完全禁用swap,可以尝试降低swappiness
      • 临时调整:

        sysctl vm.swappiness=10
      • 永久调整:

        cat << EOF >> /etc/sysctl.conf
        
        # Adjust swappiness value
        vm.swappiness=10
        EOF
    • 2.已启用透明大页面压缩,可能会导致重大性能问题,建议禁用此设置。
      • 临时调整:

        echo never > /sys/kernel/mm/transparent_hugepage/defrag
        echo never > /sys/kernel/mm/transparent_hugepage/enabled
      • 永久调整:

        cat << EOF >> /etc/rc.d/rc.local
        
        # Disable transparent_hugepage
        echo never > /sys/kernel/mm/transparent_hugepage/defrag
        echo never > /sys/kernel/mm/transparent_hugepage/enabled
        EOF
        
        # centos7.x系统,需要为"/etc/rc.d/rc.local"文件赋予执行权限
        chmod +x /etc/rc.d/rc.local
  • 集群设置,选择服务进行安装,这里选择自定义服务HDFS服务
    924276-20181227210108097-429512961.png
  • 集群设置,自定义角色分配,默认即可
    924276-20181227210123784-21558180.png
  • 集群设置,Reports Manager数据库名称rman,用户名rman
    924276-20181227210147006-450790244.png
  • 集群设置,审核更改,默认即可
    924276-20181227210159687-1122450180.png
  • 集群设置,首次运行
    924276-20181227210213618-1231718600.png
  • 集群设置,服务安装完成
    924276-20181227210225625-1483051990.png
  • Cloudera Manager 主页
    924276-20181227210234419-2021964377.png
  • Cloudera Manager HDFS 服务汇总
    924276-20181227210244984-1106141268.png

转载于:https://www.cnblogs.com/netonline/p/10187348.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值