天天看点

redhat7.4离线搭建cdh6.3.1(四节点)

                                                        一.安装版本

---------------------------------------------------------------------------------------------------------------------

linus版本:red hat7.4

cdh版本:6.3.1

java版本:1.8

---------------------------------------------------------------------------------------------------------------------                                            

                                                        二.使用介质

---------------------------------------------------------------------------------------------------------------------

CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel                 mysql-connector-java-5.1.47.jar

cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm        jdk-8u202-linux-x64.tar.gz

cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm      cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm       

manifest.json                                                cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm  

---------------------------------------------------------------------------------------------------------------------

                                                         三.搭建前准备工作(默认所有节点都做)

---------------------------------------------------------------------------------------------------------------------

1.配置Ip与主机名映射,命令:vi /etc/hosts:

        192.168.80.81 slave1

        192.168.80.82 slave2

        192.168.80.83 slave3

        192.168.80.84 master

2.禁用IPv6:

    echo "alias net-pf-10 off" >> /etc/modprobe.d/dist.conf

    echo "alias ipv6 off" >> /etc/modprobe.d/dist.conf    

3.关闭防火墙:

    firewall-cmd --state

    systemctl stop firewalld.service

    systemctl disable firewalld.service        

4.禁用Selinux:

    vi /etc/sysconfig/selinux,改为SELINUX=disabled    

5.设置文件打开数量和用户最大进程数:

    在文件最后增加以下内容:

* soft nofile 65535

* hard nofile 65535

* soft nproc 32000

* hard nproc 32000

6.将redhat7的系统镜像(*.ISO)做为yum源:

https://blog.csdn.net/vinke666/article/details/91345290    

7.卸载Centos自带的JDK:

    使用sudo rpm -qa|grep jdk 或 sudo rpm -qa|grep java找到自带的jdk,

    使用sudo rpm -e --nodeps xxx yyy zzz卸载自带的JDK

8.安装JDK:

    1.解压jdk-8u202-linux-x64.tar.gz到一个目录,

    2.并将路径填写到/etc/profile文件的最下方:

        JAVA_HOME=/apps/jdk1.8.0_202

        JRE_HOME=$JAVA_HOME/jre

        PATH=$JAVA_HOME/bin:$PATH

    export JAVA_HOME JRE_HOME PATH

    3.echo "JAVA_HOME=/app/jdk1.8.0_202" >> /etc/environment

9.将/proc/sys/vm/swappiness 设置为 0 (修改swap空间的swappiness,降低对硬盘的缓存 ):

    echo "vm.swappiness=0"  >> /etc/sysctl.conf

10.使用ntp同步集群时间:

    1.yum install ntp(所有节点)

    2.主节点:

        vi /etc/ntp.conf:

        注释掉这几个

        #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

        添加以下内容

        server 127.127.1.0

        fudge  127.127.1.0  stratum  10

        vi /etc/sysconfig/ntpd  加入下面一句话,用于配置boot时间和系统时间同步

        SYNC_HWCLOCK=yes

        启动ntpd服务器    

        sudo service ntpd start

        sudo service ntpd status

        chkconfig ntpd on

        chkconfig --list |grep ntpd

    3.从节点:

        vi /etc/ntp.conf:

        添加以下内容

        server master

    4.所有节点:

        service ntp restart

11.配置免密登录:

    1.在所有节点执行ssh-keygen   (提示时,直接回车即可)    

    2.在每个节点的/root/.ssh/下创建authorized_keys文件,将其它节点生成的公钥/root/.ssh/id_rsa.pub的内容放到自己的authorized_keys文件

    3.每个节点分别尝试免密连一次其它节点

12.安装mysql数据库(主节点):

    groupadd mysql

    useradd -r -g mysql mysql

    cd /usr/local/mysql/

    chown -R mysql:mysql ./

    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

    vi /etc/init.d/mysql

    basedir=/usr/local/mysql

    datadir=/usr/local/mysql/data

    cd /etc

    rm -rf my.cnf

    vi my.cnf

    # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the

    # *** default location during install, and will be replaced if you

    # *** upgrade to a newer version of MySQL.

    [client]

    port = 3306

    default-character-set=utf8

    [mysqld]

    # 一般配置选项

    basedir = /usr/local/mysql

    datadir = /usr/local/mysql/data

    port = 3306

    character-set-server=utf8

    default_storage_engine = InnoDB

    sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    cd /usr/local/mysql/bin/

    ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

    记录界面弹出的密码

    b_eFbcYEt60n.

    service mysql start

    ./mysql -uroot -p后边跟着上边的密码

    set password=password('123456');

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';

    flush privileges;

    chkconfig --add mysql

    chkconfig mysql on

    vi /etc/profile

    export MYSQL_HOME=/usr/local/mysql

    export PATH=$PATH:$MYSQL_HOME/bin

    source /etc/profile    

---------------------------------------------------------------------------------------------------------------------                                            

                                                        四.安装cdh

---------------------------------------------------------------------------------------------------------------------

1.安装主节点的cdh相关组件:

    yum  install -y perl

    yum install -y psmisc

    yum  install -y postgresql-server

    rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm

    rpm -ivh cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm  

    rpm -ivh cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm

2.配置连接mysql的java驱动:

    mkdir -p /usr/share/java/

    cp mysql-connector-java-5.1.47.jar /usr/share/java/mysql-connector-java.jar

3.创建cdh相关数据库:

    mysql -u root -p123456

    CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

    GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY '[email protected]';

    CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

    GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY '[email protected]';

    CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

    GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY ' [email protected]';

    CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

    GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY '[email protected]';

    CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

    GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY '[email protected]';

    CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

    GRANT ALL ON metastore.* TO 'metastore'@'%' IDENTIFIED BY '[email protected]';

    CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

    GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY '[email protected]';

    CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

    GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY '[email protected]';

    CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

    GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY '[email protected]';

    CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

    GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY '[email protected]';

4.初始化cdh的数据库:

    /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm root 123456

5.上传大数据服务组件资源包(CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel、manifest.json)到/opt/cloudera/parcel-repo,

    创建CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha,

    在manifest.json文件中找到CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel对应的hash值,写入CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha文件

    给他们赋权:chmod -R guo+wr CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel

            chmod -R guo+wr CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.sha

            chmod -R guo+wr manifest.json

6.在主节点启动server:

    systemctl start cloudera-scm-server

7.在所有节点安装agent:

    1.yum install -y bind-utils cyrus-sasl-plain cyrus-sasl-gssapi portmap /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 MySQL-python

      yum install -y bind-utils libxslt cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs httpd mod_ssl openssl-devel python-psycopg2 MySQL-python

    2.rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm

      rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm         

8.修改agent所有的节点配置文件config.ini内容

     vi  /etc/cloudera-scm-agent/config.ini:

     server_host=master (server节点)

9.所有节点启动agent:

    systemctl start cloudera-scm-agent        

10.进入http://master:7180进行集群和服务的安装

---------------------------------------------------------------------------------------------------------------------    

                                                一.异常处理

---------------------------------------------------------------------------------------------------------------------

问题:启动server失败

[[email protected] cloudera]# systemctl status cloudera-scm-server

a—? cloudera-scm-server.service - Cloudera CM Server Service

   Loaded: loaded (/usr/lib/systemd/system/cloudera-scm-server.service; enabled; vendor preset: disabled)

   Active: failed (Result: start-limit) since Thu 2020-04-09 13:55:48 CST; 5s ago

  Process: 2900 ExecStart=/opt/cloudera/cm/bin/cm-server (code=exited, status=1/FAILURE)

  Process: 2897 ExecStartPre=/opt/cloudera/cm/bin/cm-server-pre (code=exited, status=0/SUCCESS)

 Main PID: 2900 (code=exited, status=1/FAILURE)

Apr 09 13:55:48 iZ8vbi6snaln13lk0b9ybiZ systemd[1]: cloudera-scm-server.service: main process exited, code=exited, status=1/FAILURE

Apr 09 13:55:48 iZ8vbi6snaln13lk0b9ybiZ systemd[1]: Unit cloudera-scm-server.service entered failed state.

Apr 09 13:55:48 iZ8vbi6snaln13lk0b9ybiZ systemd[1]: cloudera-scm-server.service failed.

Apr 09 13:55:48 iZ8vbi6snaln13lk0b9ybiZ systemd[1]: cloudera-scm-server.service holdoff time over, scheduling restart.

Apr 09 13:55:48 iZ8vbi6snaln13lk0b9ybiZ systemd[1]: Stopped Cloudera CM Server Service.

Apr 09 13:55:48 iZ8vbi6snaln13lk0b9ybiZ systemd[1]: start request repeated too quickly for cloudera-scm-server.service

Apr 09 13:55:48 iZ8vbi6snaln13lk0b9ybiZ systemd[1]: Failed to start Cloudera CM Server Service.

Apr 09 13:55:48 iZ8vbi6snaln13lk0b9ybiZ systemd[1]: Unit cloudera-scm-server.service entered failed state.

Apr 09 13:55:48 iZ8vbi6snaln13lk0b9ybiZ systemd[1]: cloudera-scm-server.service failed.

解决办法:

[[email protected] cloudera-scm-server]# mkdir -p /usr/java

[[email protected] cloudera-scm-server]# ln -s /app/jdk1.8.0_202  /usr/java/default

1 异常1

已启用“透明大页面”,它可能会导致重大的性能问题。版本为“CentOS release 6.3 (Final)”且版本为“2.6.32-279.el6.x86_64”的 Kernel 已将 enabled 设置为“[always] never”,并将 defrag 设置为“[always] never”。请运行“echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag”以禁用此设置,然后将同一命令添加到一个 init 脚本中,如 /etc/rc.local,这样当系统重启时就会设置它 

(每个节点)

解决方案

echo never > /sys/kernel/mm/transparent_hugepage/defrag

echo never > /sys/kernel/mm/transparent_hugepage/enabled

echo never >> /etc/rc.local

------------------------------------------

echo never > /sys/kernel/mm/transparent_hugepage/defrag

echo never > /sys/kernel/mm/transparent_hugepage/enabled

并将上面的两条命令写入开机自启动

vim /etc/rc.local

--------------------------------------------------------------

2 异常2

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

解决方案:

echo  0 >  /proc/sys/vm/swappiness

sysctl vm/swappiness

echo 'vm.swappiness = 0'>/etc/sysctl.conf

sysctl -p

3 异常3

pstree: 未找到命令

解决方案

yum install -y psmisc

4,找不到jdk

 输入:sudo vi /etc/sudoers ,在sudoers最后面添加以下内容

 Defaults env_keep+=JAVA_HOME

 输入:sudo vi /etc/default/bigtop-utils  在 bigtop-utils 文件中添加以下内容

 export JAVA_HOME=/usr/java/latest

 然后执行以下命令

 source /etc/default/bigtop-utilssource /etc/default/bigtop-utils

5,异常

如果出现agent主机不良状况

Error, CM server guid updated, expected 85587073-270d-43d9-a44a-e213d9f7e45b, received 4c1402a5-8364-4598-a382-0c760710e897

,尝试运行以下命令

rm -rf /var/lib/cloudera-scm-agent/cm_guid

之后重启agent

service cloudera-scm-agent restart

异常

[roo[email protected] cloudera-scm-server]# service cloudera-scm-server start

Starting cloudera-scm-server:                              [失败]

[[email protected] cloudera-scm-server]# more cloudera-scm-server.out 

+======================================================================+

|      Error: JAVA_HOME is not set and Java could not be found         |

+----------------------------------------------------------------------+

| Please download the latest Oracle JDK from the Oracle Java web site  |

|  > http://www.oracle.com/technetwork/java/javase/index.html <        |

|                                                                      |

| Cloudera Manager requires Java 1.6 or later.                         |

| NOTE: This script will find Oracle Java whether you install using    |

|       the binary or the RPM based installer.                         |

+======================================================================+

[[email protected] cloudera-scm-server]# 

[[email protected] cloudera-scm-server]# mkdir -p /usr/java

[[email protected] cloudera-scm-server]# ln -s /app/jdk1.8.0_202  /usr/java/default

[roo[email protected] cloudera-scm-server]# service cloudera-scm-server start

Starting cloudera-scm-server:                              [确定]

[[email protected] cloudera-scm-server]# 

把jdk换成兼容的11版本就好了

Dec 03 10:51:57 bogon cm-server[3060]: +======================================================================+

Dec 03 10:51:57 bogon cm-server[3060]: |      Error: Unable to find a compatible version of Java on this host,|

Dec 03 10:51:57 bogon cm-server[3060]: |             either because JAVA_HOME has not been set or because a   |

Dec 03 10:51:57 bogon cm-server[3060]: |             compatible version of Java is not installed.             |

Dec 03 10:51:57 bogon cm-server[3060]: +----------------------------------------------------------------------+

Dec 03 10:51:57 bogon cm-server[3060]: | Please install either:                                               |

Dec 03 10:51:57 bogon cm-server[3060]: | - a supported version of the Oracle JDK from the Oracle Java web     |

Dec 03 10:51:57 bogon cm-server[3060]: |   site:                                                              |

Dec 03 10:51:57 bogon cm-server[3060]: |   > http://www.oracle.com/technetwork/java/javase/index.html <       |

Dec 03 10:51:57 bogon cm-server[3060]: | OR                                                                   |

Dec 03 10:51:57 bogon cm-server[3060]: | - a supported version of the OpenJDK from your OS vendor.  Help for  |

Dec 03 10:51:57 bogon cm-server[3060]: |   some OSes are available at:                                        |

Dec 03 10:51:57 bogon cm-server[3060]: |   > http://openjdk.java.net/install/ <                               |

Dec 03 10:51:57 bogon cm-server[3060]: |                                                                      |

Dec 03 10:51:57 bogon cm-server[3060]: | Cloudera Manager requires Oracle JDK or OpenJDK 1.8 or later.        |

Dec 03 10:51:57 bogon cm-server[3060]: | NOTE: Cloudera Manager will find the Oracle JDK when starting,       |

Dec 03 10:51:57 bogon cm-server[3060]: |       regardless of whether you installed the JDK using a binary     |

Dec 03 10:51:57 bogon cm-server[3060]: |       installer or the RPM-based installer.                          |

Dec 03 10:51:57 bogon cm-server[3060]: +======================================================================+

-bash: scp: command not found

执行命令

yum install openssh-clients

查看mysql的状态:

/usr/local/mysql/support-files/mysql.server status

安装Kafka服务

但是有提示:Before adding this service, ensure that either the Kafka parcel is activated or the Kafka package is installed. 这样子直接添加kafka的服务是不正确的

1.在Cloudera Manager页面找到主机->Parcel点击进入

2.在页面的Parcel列找到KAFKA并点击下载,下载完成后点击 分配 进行分配,然后点击 激活, 出现 已分配,已激活 证明分配激活成功

回到Cloudera Manager页通过添加服务添加kafka服务,但是在启动kafka服务的过程中又报错了:

报的错误是内存溢出错误,默认的是50M,

内存溢出错误问题解决:回到Cloudera Manager页面进入Kafka管理界面,点击配置项,然后在其配置栏中点击 kafka  broker  找到Heap Size of Broker这一栏,改成1G就可以了,然后保存更改重启该服务

cdh集群卸载:

查看安装了那些包

rpm -qa | grep cloudera

依次卸载安装包

rpm -e cloudera-manager-server-db-2-5.15.1-1.cm5151.p0.3.el6.x86_64

rpm -e cloudera-manager-server-5.15.1-1.cm5151.p0.3.el6.x86_64

rpm -e cloudera-manager-agent-5.15.1-1.cm5151.p0.3.el6.x86_64

rpm -e cloudera-manager-daemons-5.15.1-1.cm5151.p0.3.el6.x86_64

rm -rf /usr/share/cmf /var/lib/cloudera* /var/cache/yum/x86_64/6/cloudera* /var/log/cloudera* /var/run/cloudera*

rm -rf /etc/cloudera*

rm -rf /opt/cloudera/parcel-cache /opt/cloudera/parcels

rm: 无法删除"/var/run/cloudera-scm-agent/process": 设备或资源忙

这个问题需要重启各个节点

然后再执行rm -rf 命令

重启后,登陆mysql ,删除scm库,重新执行初始化数据库命令。

agent节点启动过后立马死掉

[[email protected] cloudera-scm-agent]# netstat -tupnl |grep 19001

tcp        0      0 127.0.0.1:19001             0.0.0.0:*                   LISTEN      2857/python         

[[email protected] cloudera-scm-agent]# kill -9 2857

检查ssh 免密码登陆到自己,到各个子节点

检查ntp服务

---------------------------------------------------------------------------------------------------------------------    

继续阅读