zoukankan      html  css  js  c++  java
  • CentOS7搭建CDH5.16.2集群 HA高可用(包含Spark2等组件部署)

    CentOS7搭建CDH5.16.2集群 HA高可用

     

    机器准备:(这里HA是对HDFSYARN的高可用)

    主机名

    cpu内存

    bigdata-master01

    8c32G

    bigdata-master02

    8c32G

    bigdata-datanode01

    8c16G

    bigdata-datanode02

    8c16G

    bigdata-datanode03

    8c16G

    基本软件目录(/usr/local/soft)自定义创建

    一、环境准备:

    1、改主机名(每台机器都要操作)

    vim /etc/hostname

     

     

    。。。(省略在其他四台的操作,一模一样)

    2、修改hosts映射(每台机器都要操作)

    注意:如果是阿里云上的服务器,这里配置的映射IP是内网IP,并在阿里云账户上设置白名单,防止出现ping不通的情况。将当前主机ip放在第一个。

    vim /etc/hosts

     

    3、每台机器重启

    init 6

    重启之后发现主机名已经更改(永久更改)

     

    互相ping一下看看(千万别侥幸心理,每一台都相互ping一下)

     

    。。。(省略其他主机之间互相ping的截图,若不成功检查上面hosts文件和阿里云白名单设置

    4、关闭防火墙(每台机器上都要操作)

    systemctl stop firewalld    #关闭防火墙

    systemctl disable firewalld  #取消开机启动

    firewall-cmd --state #查看防火墙状态

     

    5、关闭SELINUX(每台机器上都要操作)

    vim /etc/selinux/config

    将SELINUX设置为disabled

    /usr/sbin/sestatus –v   查看状态

     

    6、设置SSH免密登录(每台机器上都要操作)

    1产生公钥和私钥:ssh-keygen -t rsa (一直回车直即可)

    2将公钥分发给所有节点包括本机 ssh-copy-id -i 主机名

    3测试ssh访问: ssh root@主机名

    举例截图:(这里有五台机器,所以每台机器需要操作 “ssh-copy-id -i 主机名5次)

     

    7、时间同步(每台机器上都要操作)

    yum install ntp -y

    ntpdate -u s2c.time.edu.cn

     

    8、安装jdk每台机器上都要操作)

    1)查看已经安装java的信息

    rpm -qa | grep java

    (2)卸载自带的open jdk

    rpm -e --nodeps 包名

    (3)上传并scp远程拷贝到其余机器上

     

    (4)分别解压配置环境变量

    tar -zxvf jdk-8u171-linux-x64.tar.gz

     

    vim /etc/profile

     

    让环境变量生效:

    source /etc/profile 

    查看java版本:

    java -version

     

    9、安装mysql(只在主节点安装,这里是bigdata-master01

    (1)查看Linux操作系统版本和系统内核版本

    cat /etc/redhat-release

    uname -r

     

    (2)下载对应版本的MySQL安装文件,下载完记得解压  tar -xvf xxx.tar

    wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar

     

    tar -xvf /usr/local/soft/mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar -C /usr/local/soft/mysql_libs/

     

    (3)卸载旧版本的MySql (没有的话,则跳过此步骤)

    查看旧版本MySql

    rpm -qa | grep mysql

    将会列出旧版本Mysql的组件列表

    我的电脑没有,若有的话:

    使用命令rpm -e --nodeps {-file-name}进行移除操作,移除的时候可能会有依赖,要注意一定的顺序。

    (4)清除yum里所有mysql依赖包

    rpm -qa|grep mysql

    yum remove mysql-libs

    有的系统可能不太一样,没有mysql-libs,而是mariadb-libs,此时要移除的则是mariadb-libs

    rpm -qa|grep mariadb              yum remove mariadb-libs

    5)使用rpm命令安装mysql

    使用命令rpm -ivh {-file-name}进行安装操作。

    按照依赖关系依次安装rpm包 依赖关系依次为common→libs→client→server

    rpm -ivh mysql-community-common-5.7.22-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-5.7.22-1.el7.x86_64.rpm
    rpm -ivh mysql-community-client-5.7.22-1.el7.x86_64.rpm
    rpm -ivh mysql-community-server-5.7.22-1.el7.x86_64.rpm

    在阿里云ECS云服务器上安装mysql5.7,当安装 mysql-community-server-5.7.22-1.el7.x86_64.rpm 时报错,报错如下:

    [root@i3467544tdsxfrZ ~]# rpm -ivh mysql-community-server-5.7.22-1.el7.x86_64.rpm
    warning: mysql-community-server-5.7.22-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
    error: Failed dependencies:
            libaio.so.1()(64bit) is needed by mysql-community-server-5.7.22-1.el7.x86_64
            libaio.so.1(LIBAIO_0.1)(64bit) is needed by mysql-community-server-5.7.22-1.el7.x86_64
            libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-5.7.22-1.el7.x86_64

    所以,解决法案就是:

    安装libaio

     yum -y install libaio

    安装libaio后,再重新安装一次mysql-community-server-5.7.22-1.el7.x86_64.rpm,此时就能正常安装了

    (6)启动Mysql

     安装完后,使用命令 service mysqld start  systemctl start mysqld.service 启动MySQL服务。(如果mysql服务无法启动,就重启一下系统)

    systemctl start mysqld.service    启动mysql
    systemctl status mysqld.service  查看mysql状态
    systemctl stop mysqld.service   关闭mysql

    查看mysql进程 ps -ef|grep mysql
    查看3306端口 netstat -anop|grep 3306

     

    (7)登录mysql修改root密码

     由于MySQL5.7.4之前的版本中默认是没有密码的,登录后直接回车就可以进入数据库,进而进行设置密码等操作。其后版本对密码等安全相关操作进行了一些改变,在安装过程中,会在安装日志中生成一个临时密码。

     怎么找到这个临时密码呢?

     使用:grep 'temporary password' /var/log/mysqld.log

    即可查询到类似于如下的一条日志记录:

     

    pov(>AZS59rd就是随机密码登录进去,然后修改密码,使用命令:

    mysql -uroot -p

     

    (8)

    #修改mysql密码

    set password='P@ssw0rd';

    #授权远程登陆

    grant all privileges on *.* to 'root'@'%' identified by 'P@ssw0rd';

    #更新权限

    flush privileges;   

     

    (9)创建其他组件需要的数据库

    #hive

    create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

    #Hue

    create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

    #Oozie Server

    create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

     

    二、安装Cloudera Manager    Server&Agent

    1、下载第三方依赖

    依次在5台节点(所有Agent的节点)上执行下载需要的第三方依赖

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

    2、上传安装包(每台机器上都要操作)包括上传mysql驱动包(到这里可以拍个快照,大家懂的,比较放心,阿里云上的就是自定义镜像,内容就是cdh安装的前期基础环境准备)

     

    CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel.sha1 我这里已经改名把1去了

     

    3、安装到/opt目录下(每台机器上都要操作)在上传压缩包目录下操作:

    tar -zxvf cloudera-manager-centos7-cm5.16.2_x86_64.tar.gz -C /opt/

     

    4、配置CM Agent

    1)cm的安装包的server和agent都是同一个包,启动的时候启动命令指定为server还是agent;
    2)cm有一个工作目录,需要我们来创建;创建一个用户;修改agent的配置,给它指定server的位置;那个端口7182是server和agent通信的端口;

    (3)server_host配置为server的名字;(每台机器上都要操作)
    vim /opt/cm-5.16.2/etc/cloudera-scm-agent/config.ini 中 server_host

    config.ini文件设置server_host=主节点名字或IP

     

    (4)创建用户cloudera-scm(每台机器上都要操作)

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

    (5)创建palcel目录

    创建parcel目录,这个目录是server和agent用来接收和发送数据的目录,server端的parcel-repo这个目录会把所有的安装文件全部下载到此目录,而agent也需要安装包,parcels就是用来存储指定的安装包的,当然需要有权限能操作这些目录;

    Server节点

    [root@bigdata-master01 cloudera]# mkdir -p /opt/cloudera/parcel-repo

    [root@bigdata-master01 cloudera]# chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo

     

    Agent节点

    [root@bigdata-master01 cloudera]# mkdir -p /opt/cloudera/parcels

    [root@bigdata-master01 cloudera]# chown cloudera-scm:cloudera-scm /opt/cloudera/parcels

     

    注意:这儿我们master节点既是server也是agent,所以master节点也创建parcels

    CDH安装包移到cloudera/parcel-repo下面,并修改其中后缀为sha1的文件为sha,(还记得咱们之前已经把1去过了嘛,这里就直接cp过来就行啦)如下:

     

    (6)配置CMServer的数据库(每台机器上都要操作)

    [root@bigdata-master01 parcel-repo]# mkdir -p /usr/share/java

    [root@bigdata-master01 parcel-repo]# cd /usr/share/java/

    [root@bigdata-master01 java]# ll

    total 0

    [root@bigdata-master01 java]# pwd

    usr/share/java

    [root@bigdata-master01 java]# cp /usr/local/soft/mysql-connector-java-5.1.49.jar /usr/share/java/mysql-connector-java.jar

    Cloudera Manager规定了在这个目录下找该名称的jar包。(注意:必须要改名字)

    mysql数据库的驱动jar包放到/opt/cm-5.16.2/share/cmf/lib/目录下

    cp /usr/local/soft/mysql-connector-java-5.1.49.jar /opt/cm-5.16.2/share/cmf/lib/

    (7)初始化数据库(bigdata-master01上执行)

    /opt/cm-5.16.2/share/cmf/schema/scm_prepare_database.sh mysql cm -hbigdata-master01 -uroot -pKunzhan12345! --scm-host bigdata-master01 scm scm scm

     

    可能会报错:Error Code: 1044. Access denied for user 'root'@'%' to database

    1)先删除cm数据库

    2)回到安装mysql那里按照下面许多箭头的截图执行一遍,再执行初始化数据库就没问题了。

    5、启动CM Manager&Agent服务(注意:启用CM服务时要确保mysql启动)

    cd /opt/cm-5.16.2/etc/init.d/

    Server节点执行:(bigdata-master01执行)

    ./cloudera-scm-server start

     

    Agent节点执行:(5台机器都执行

    ./cloudera-scm-agent start

     

    查看7180端口是否被占用   netstat -apn|grep 7180

     

    当端口已被占用,就可以用http://Server节点IP:7180打开登录页面,用户名和密码都是admin登录进去选择5台机器后到下面页面。

     

     

    这个警告如果严格按照整理的步骤搭建应该不会出现,若出现的话漏了将hosts文件IP映射没有将当前主机IP设为第一个,并且存在重复的IP

     

    如下禁用此设置,然后将同一命令添加到 /etc/rc.local 等初始化脚本中,以便在系统重启时予以设置。以下主机将受到影响:
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    先执行上面2条命令,再将其添加到/etc/rc.local文件中

     

    再次检查主机的正确性

     

    组件先选择hdfs,yarn,zookeeper

     

     

    默认就好,继续

     

    等待启动完毕。继续

     

    点击完成

     

     

    看到上面截图页面就代表快接近成功了,别急,让我们看下进程。

    jps看下进程:

    bigdata-master01:

     

    bigdata-master02:

     

    bigdata-datanode01-bigdatanode03:

     

     

    恭喜!初步搭建已经成功!(将服务全部停止,再拍个快照,cdh基础安装已经完毕)

    三、添加服务:

    1、添加hive

     

    先添加驱动包cp /opt/cm-5.16.2/share/cmf/lib/mysql-connector-java-5.1.49.jar /opt/cloudera/parcels/CDH-5.16.2-1.cdh5.16.2.p0.8/lib/hive/lib/

     

     

    Master节点是不存数据的 和datanode节点一致

     

    配置数据库信息

     

    点击测试连接,继续

     

    默认就好,继续。

     

     

    点击继续。

     

     

    2、添加spark2.4服务

    提前准备好文件:(一会结束上传到网盘中,若忘记或者没找到,联系本人)

     

    1安装前可以停掉集群和Cloudera Management Service,也可以不停,但是待会还是要停止重启的。

    2)上传CSD包到每台服务器上的/opt/cloudera/csd目录,并且修改文件的用户和组。注意如果本目录下有其他的jar包,把删掉或者移到其他目录----cdn包放在/opt/cloudera/csd目录才能被识别

     

    (3)上传

    manifest.json

    SPARK2-2.4.0.cloudera2-1.cdh5.13.3.p0.1041012-el7.parcel

    SPARK2-2.4.0.cloudera2-1.cdh5.13.3.p0.1041012-el7.parcel.sha1到主节点,并且重新命名

    mv SPARK2-2.4.0.cloudera2-1.cdh5.13.3.p0.1041012-el7.parcel.sha1 SPARK2-2.4.0.cloudera2-1.cdh5.13.3.p0.1041012-el7.parcel.sha

    到机器master的/opt/cloudera/parcel-repo目录下。注意:将   SPARK2-2.4.0.cloudera2-1.cdh5.13.3.p0.1041012-el7.parcel.sha1重命名为  SPARK2-2.4.0.cloudera2-1.cdh5.13.3.p0.1041012-el7.parcel.sha。如果有其他的安装包,不用删除 ,但是如果本目录下有其他的重名文件比如manifest.json文件,把它重命名备份掉。然后把那3个parcel包的文件放在这里。

     

    4如果刚刚没有停掉CM和集群,现在将他们停掉。然后运行命令。

    (5)CM和集群启动起来。然后点击主机->Parcel页面,看是否多了个spark2的选项。如下图,你这里此时应该是分配按钮,点击,等待操作完成后,点击激活按钮

     

     

    (6)激活后,点击你的群集-》添加服务,添加spark2服务。注意,如果你这里看不到spark2服务,就请检查你的CSD包和parcel包是否对应,上面的步骤是否有漏掉。正常情况下,应该是能用了。我的集群到此已经OK.

     

     

     

    Spark中的服务选择主机(history选一台,Gateway所有主机都要选):

     

     

     

     

    重启一下

     

    这时候提交spark任务会报错

    第一种错误:

     

    修改文件权限:

    sudo -u hdfs hadoop fs -chmod 777 /user

     

    第二种错误:

     

    修改spark-env.sh配置文件,在文件末尾添加hadoop运行环境:

     

    export SPARK_LOCAL_DIRS=/mnt/disk1/sparktmp1

    export JAVA_HOME=/usr/local/soft/jdk1.8.0_171

    export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop

    export SPARK_DIST_CLASSPATH=$(${HADOOP_HOME}/bin/hadoop classpath)

    再次提交就没问题了。

    3、添加hue,前提是先把hiveoozie给添加上

    安装OOZIE,跟安装HIVE的方式一样所以省略,同样在安装过程中可能会报错,需要将mysql的连接驱动添加到/opt/cloudera/parcels/CDH-5.9.1-1.cdh5.9.1.p0.4/lib/oozie/libext和/var/lib/oozie这两个目录中

    HUE的安装,为了报错,我们先把错误可以解决的解决了。(这里坑已经踩过,放心执行吧!)

    需修改一(坑1):

     

    这是因为装CDH的时候,将系统自带的mysql依赖删除了,所以需要从别的相同系统拷贝一个出来放到/usr/lib64/mysql目录下

    ln–s libmysqlclient_r.so.18.0.0 libmysqlclient_r.so.18

     

    然后 vi /etc/ld.so.conf 后面增加一条记录:/usr/lib64/mysql (libmysqlclient.so.18 和libmysqlclient.so.18.0.0所在目录)运行 ldconfig 命令,让其生效。

    别急,还没结束,这里如果再测试连接数据库会有个启动失败,接着执行下面:

    需修改二:(坑2:

    需要提前安装环境  httpd, mod_ssl为了保险起见,每台机器都装一下

    yum install httpd

    yum install mod_ssl

    安装好之后, 重启就好了

     

    四、配置HA

    1、配置DHFS高可用

     

     

     

     

     

     

     

    我们来测试一下:

     

     

     

     

     

    上面有个hive的警告,我们来解决一下:

    spark再停止hive

     

    然后,点击更新,。。

     

     

     

    然后启动hivespark

     

     

    2、配置YARN高可用

     

     

     

     

  • 相关阅读:
    Codeforces Round #702 (Div. 3) 题解
    Educational Codeforces Round 104 (Rated for Div. 2) A~E题解
    AtCoder Regular Contest 112 A~D题解
    Codeforces Round #701 (Div. 2) A~E 题解
    java String, StringBuffer, StringBuilder简单介绍和使用
    货仓选址
    线程的同步
    数据结构课设作业
    线程的生命周期(java 图)
    JAVA多线程的创建和使用
  • 原文地址:https://www.cnblogs.com/wyh-study/p/13885517.html
Copyright © 2011-2022 走看看