美文网首页
离线部署 Cloudera Manager 5 和 CDH 5.

离线部署 Cloudera Manager 5 和 CDH 5.

作者: 南知唔知 | 来源:发表于2018-11-10 15:58 被阅读0次

    历时一天半,着实废了不少功夫。
    整个搭建过程,是参考这篇文章大神的部署文档。

    一、系统环境配置

    前提是/etc/hostname已经修改过了。并且要注意,hostname中不允许有下划线_,一律用-代替。

    1.修改映射关系

    修改所有节点/etc/hosts文件并添加所有节点的映射关系

    [root@see-data-pre-slave-1 local]# vim /etc/hosts
    

    查看修改后的/etc/hosts文件内容

    [root@see-data-pre-slave-1 local]# cat /etc/hosts
    #127.0.0.1  localhost  localhost.localdomain  see-data-pre-slave-1
    #::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.0.1  see-data-pre-master-01
    192.168.0.2  see-data-pre-slave-1
    

    2.配置免密的sudo用户

    [root@see-data-pre-slave-1 local]# useradd hadoop
    [root@see-data-pre-slave-1 local]# passwd hadoop
    

    用户名:hadoop,密码:hadoop
    root用户下visudo,添加hadoop ALL=(ALL) NOPASSWD: ALL

    ## Allow root to run any commands anywhere
    root    ALL=(ALL)       ALL
    hadoop  ALL=(ALL)       NOPASSWD: ALL
    

    所有节点都需要这样配置

    3.配置节点间免密ssh(hadoop用户)

    hadoop用户下

    ssh-keygen -t rsa
    

    猛按回车。
    ~/.ssh/下会生成公钥id_rsa.pub和私钥id_rsa文件。然后将各节点的公钥互相追加。
    公钥追加时,ssh-copy-id也好,手动创建也好,都可以。
    但要确保节点对应用户下的authorized_keys文件,有对应的读权限。比较常见的作法就是chmod 400 authorized_keys。不然有可能会在都配置好的情况下,ssh时要么需要密码验证。要么会报Permission denied (publickey,gssapi-keyex,gssapi-with-mic).的error。
    同时也要注意sshd_config的配置方法。

    $ vim /etc/ssh/sshd_config
    

    记得放开PasswordAuthentication no > yes

    # To disable tunneled clear text passwords, change to no here!
    #PasswordAuthentication no
    #PermitEmptyPasswords no
    PasswordAuthentication yes
    

    如果要修改ssh默认的端口配置,则需要vim /etc/ssh/ssh_config,将port变更为你想要的端口。

       Port 37500
    #   Protocol 2
    #   Cipher 3des
    
    

    之后重启sshd服务。
    全部完成后,开一个窗口测试下能否免密登录

    $ ssh hadoop@see-data-pre-slave-1
    

    4.关闭防火墙

    $ systemctl stop firewalld.service
    

    5.关闭SELINUX

    这里我选择永久关闭

    $ vi /etc/selinux/config
    

    SELINUX=enforcing 改为 SELINUX=disabled
    设置需要重启后才能生效。

    6.配置jdk

    下载Linux环境下的jdk1.8,上传至/opt并解压。

    $ cd /opt
    $ tar zxvf jdk-8u144-linux-x64.tar.gz
    $ mv jdk1.8.0_144/ /lib/jvm
    

    配置环境变量

    $ vi /etc/profile
    

    在其中添加

    #jdk
    export JAVA_HOME=/lib/jvm/jdk1.8.0_144
    export JRE_HOME=${JAVA_HOME}/jre   
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib   
    export PATH=${JAVA_HOME}/bin:$PATH 
    

    保存后使环境变量生效

    $ source /etc/profile
    

    通过java -versionwhereis java验证。
    这里如果没用生效的话。我是选择设置软链接的方式,直接指向我解压的文件夹

    $ ln -sf /lib/jvm/jdk1.8.0_144/jre/bin/java /bin/java
    $ ln -sf /lib/jvm/jdk1.8.0_144/bin/javac /bin/javac
    

    7.设置NTP

    所有节点安装NTP

    $ yum install ntp
    

    设置同步

    $ ntpdate -d master-01
    

    然后重启服务

    $ service ntpd restart
    

    这里需要注意,如果是腾讯云的云服务器,需要vim /etc/ntp.conf来使用腾讯云的服务。

    sudo vim /etc/ntp.conf
     
    # Use public servers from the pool.ntp.org project.
     
    # Please consider joining the pool (http://www.pool.ntp.org/join.html).
     
    server ntpupdate.tencentyun.com
     
    #server 0.centos.pool.ntp.org iburst
     
    #server 1.centos.pool.ntp.org iburst
     
    #server 2.centos.pool.ntp.org iburst
     
    #server 3.centos.pool.ntp.org iburst
    

    8.安装httpd服务

    $ yum install httpd
    

    启动

    $ service httpd start
    

    9.主节点(master)安装配置mysql

    mysql 依赖libaio库

    $ yum install libaio
    

    下载mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz,上传至/opt,解压重命名至/usr/local/mysql

    $ cd /opt
    $ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
    $ tar -zxvf /opt/mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
    $ mv /usr/local/mysql-5.7.19-linux-glibc2.12-x86_64/ /usr/local/mysql
    

    新建用户组和用户

    $ groupadd mysql
    $ useradd mysql -g mysql
    

    创建目录并授权

    $ cd /usr/local/mysql/ 
    $ mkdir data mysql-files
    $ chmod 750 mysql-files
    $ chown -R mysql .
    $ chgrp -R mysql .
    

    初始化mysql

    $ bin/mysqld --initialize --user=mysql
    

    注意mysql临时密码。root@localhost生成临时密码o89<flb-t2oD,也就是root@localhost:后的字符串。
    授予读写权限

    $ chown -R root .
    $ chown -R mysql data mysql-files
    

    添加到mysql启动脚本到系统服务

    $ cp support-files/mysql.server /etc/init.d/mysql.server
    

    给日志目录授予读写权限

    $ mkdir /var/log/mariadb
    $ touch /var/log/mariadb/mariadb.log
    $ chown -R mysql:mysql /var/log/mariadb
    

    修改/etc/my.cnf

    $ vi /etc/my.cnf
    

    修改 [mysqld]组下的 socket 路径,注释掉/var/lib/mysql/mysql.sock,加一行为tmp/mysql.sock

    [mysqld]
    datadir=/var/lib/mysql
    #socket=/var/lib/mysql/mysql.sock
    socket=/tmp/mysql.sock
    

    启动mysql服务

    $ service mysql.server start
    

    登录mysql

    $ /usr/local/mysql/bin/mysql -uroot -p
    Enter password: 
    

    这里的密码就是之前提到的,临时密码o89<flb-t2oD。

    登陆成功后,设置MySQL密码

    mysql> ALTER USER   'root'@'localhost' identified by '你想设置的密码';
    mysql> flush privileges;
    

    开启远程登录

    mysql> grant all privileges on *.*  to  'root'@'%'  identified by '你想设置的密码'  with grant option;
    mysql> flush privileges;
    mysql> exit;
    

    安装mysql时,我遇到过bin/mysqld: error while loading shared libraries: libnuma.so.1的error。
    解决办法是yum -y install numactl(centos情况下)

    10.下载依赖包

    $ yum -y install chkconfig
    $ yum -y install bind-utils
    $ yum -y install psmisc
    $ yum -y install libxslt
    $ yum -y install zlib
    $ yum -y install sqlite
    $ yum -y install cyrus-sasl-plain
    $ yum -y install cyrus-sasl-gssapi
    $ yum -y install fuse
    $ yum -y install portmap
    $ yum -y install fuse-libs
    $ yum -y install redhat-lsb
    

    二、cloudera manager Server & Agent 安装

    1.在所有节点,创建/opt/cloudera-manager

    把下载好的cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz安装包上传至 master节点/opt/目录。
    所有节点解压安装Cloudera Manager Server & Agent。

    $ cd /opt
    $ tar xvzf cloudera-manager*.tar.gz -C /opt/cloudera-manager
    

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

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

    3.配置cm agent

    修改所有节点agent server_host

    $ vim /opt/cloudera-manager/cm-5.12.1/etc/cloudera-scm-agent/config.ini
    

    将server_host 修改成 master节点

    # Hostname of the CM server.
    server_host=192.168.0.1
    
    # Port that the CM server is listening on.
    server_port=7182
    

    4.配置cm server的数据库

    在master节点初始化cm5的数据库。
    下载mysql驱动包

    $ cd /opt/cloudera-manager/cm-5.12.1/share/cmf/lib
    $ wget http://maven.aliyun.com/nexus/service/local/repositories/hongkong-nexus/content/Mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar
    

    启动mysql服务

    $ service mysql.server start
    
    $ cd /opt/cloudera-manager/cm-5.12.1/share/cmf/schema/
    
    $ ./scm_prepare_database.sh mysql cm -h 192.168.0.1 -uroot -pseemysql2018 --scm-host 192.168.0.1 scm scm scm
    

    如果看到如下信息,说明成功

    [main] DbCommandExecutor              INFO  Successfully connected to database.
    All done, your SCM database is configured correctly!
    

    在这里遇到的坑就是,找不到$JAVA_HOME

    ./scm_prepare_database.sh: line 379: /lib/jvm/bin/java: No such file or directory
    

    如果之前配置了软链接,或环境变量生效的话,不会出现这个错误。
    最坏的办法就是去修改对应的配置shell,找到java8下的目录列表,把你解压好的java绝对路径加进去。
    在初始化失败后,再次启动时,会报cm库已存在的error。解决办法就是在mysql中删掉对应的库,再次初始化。


    master配置的mysql

    5.创建 parcel 目录

    master节点创建目录/opt/cloudera/parcel-repo
    将下载好的文件

    CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel
    CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha
    manifest.json
    

    cp到该目录下

    $ mkdir -p /opt/cloudera/parcel-repo
    $ chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
    $ cd /opt/cloudera/parcel-repo
    

    重命名,CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1 否则,系统会重新下载 CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel

    $ mv CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1 CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha
    

    slave 节点创建目录/opt/cloudera/parcels

    $ mkdir -p /opt/cloudera/parcels
    $ chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
    

    6.启动cm manager & agent服务

    master节点

    $ /opt/cloudera-manager/cm-5.12.1/etc/init.d/cloudera-scm-server start
    

    这里如果启动失败的话。就sudo执行
    slave节点

    $ /opt/cloudera-manager/cm-5.12.1/etc/init.d/cloudera-scm-agent start
    

    如果http://master:7180(用户名/密码,admin/admin)可以访问,则安装成功。

    登录页 不选最后一个就行。现在默认会有60天的试用期,到期之后就会转到免费版,不影响集群使用。

    再点击继续。

    如果agent服务启动正常就可以在当前管理的主机中,看到对应的节点。
    正常情况下,这里不用主动搜索新主机。如果当前管理的主机中没有缺少节点,则需要检查对应节点的agent服务是否正常启动。
    ssh端口需修改成服务器sshd_config中指定的默认端口。 选中节点,点击继续
    选中离线下载的cdh对应版本

    点击继续,如果配置本地 Parcel 包无误,那么下图中的已下载,应该是瞬间就完成了,然后就是耐心等待分配过程就行了。
    在这里,如果选择主动扫描添加新节点,在没有配置好本地yum的情况下,会出现各种各样意外的bug。
    比如IOError: [Errno 20] Not a directory: u'/opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel/meta/parcel.json'
    cloudemanager安装时出现ProtocolError: <ProtocolError for 127.0.0.1/RPC2: 401 Unauthorized>
    cdh Timed out waiting for worker process collecting filesystem usage to complete。这个部分我没有找到很好的解决办法。困扰了至少2个小时。直到我选择在当前管理主机中安装,问题就解决了。

    等待完成
    中间出现的,选择是否安装oracle java se 开发工具包(JDK)步骤,勾选安装。
    集群安装,是否启用单用户模式,不勾选。
    点击继续,检查主机正确性

    一般情况下,检查完之后只会出图中这两个error。第一个不清楚是什么。第二个是说已启用透明大页压缩,可能会导致性能问题。解决办法就是如下如下三个命令。

    $ echo 0 > /proc/sys/vm/swappiness
    $ echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
    $ echo never > /sys/kernel/mm/transparent_hugepage/enabled
    

    然后将这两个命令添加到/etc/rc.local中。
    重新运行检查主机正确性。完成后点击继续。

    根据实际需求选择
    点击继续。
    角色分配页,分配好对应的角色后,
    点击继续。
    配置数据库,这里使用之前master节点安装的mysql数据库。
    配置项共有hive/hue/ozzie,可根据实际需要建对应的库及账号。
    对应配置确定之后,右下方会有一个测试连接按钮。全部测试通过后,才可以点击继续。
    在这里,我遇到的一个JDBC driver cannot be found. Unable to find the JDBC database jar on host的error。解决办法是mysql-connector-java.jar 复制为/usr/share/java/mysql-connector-java.jar,文件名必须一致。
    点击继续。
    目录文件的配置页,基本上保持默认即可。
    点击继续。
    等待分配,安装。 主页
    至此,集群配置安装成功!
    到这一步时,我还遇到一个错误Cloudera NFS Gateway Error : Cannot connect to port 111。出现这种问题的原因可能是 rpcbind 停止了服务。
    解决办法
    $ systemctl status rpcbind.service
    $ systemctl start rpcbind.service
    $ systemctl stop rpcbind.service
    

    相关文章

      网友评论

          本文标题:离线部署 Cloudera Manager 5 和 CDH 5.

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