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高可用

     

     

     

     

  • 相关阅读:
    随机森林算法参数调优
    BAYES和朴素BAYES
    阿里云 金融接口 token PHP
    PHP mysql 按时间分组 表格table 跨度 rowspan
    MySql按周,按月,按日分组统计数据
    PHP 获取今日、昨日、本周、上周、本月的等等常用的起始时间戳和结束时间戳的时间处理类
    thinkphp5 tp5 会话控制 session 登录 退出 检查检验登录 判断是否应该跳转到上次url
    微信 模板消息
    php 腾讯 地图 api 计算 坐标 两点 距离 微信 网页 WebService API
    php添加http头禁止浏览器缓存
  • 原文地址:https://www.cnblogs.com/wyh-study/p/13885517.html
Copyright © 2011-2022 走看看