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

 

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

主机名

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,前提是先把hive,oozie给添加上

安装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

然后,点击更新,。。

然后启动hive和spark

2、配置YARN高可用

CentOS7搭建CDH5.16.2集群 HA高可用(包含Spark2等组件部署)的更多相关文章

  1. hadoop 集群HA高可用搭建以及问题解决方案

    hadoop 集群HA高可用搭建 目录大纲 1. hadoop HA原理 2. hadoop HA特点 3. Zookeeper 配置 4. 安装Hadoop集群 5. Hadoop HA配置 搭建环 ...

  2. Ubuntu 16.04上搭建CDH5.16.1集群

    本文参考自:<Ubuntu16.04上搭建CDH5.14集群> 1.准备三台(CDH默认配置为三台)安装Ubuntu 16.04.4 LTS系统的服务器,假设ip地址分布为 192.168 ...

  3. CDH5.16.1集群新增节点

    如果是全新安装集群的话,可以参考<Ubuntu 16.04上搭建CDH5.16.1集群> 下面是集群新增节点步骤: 1.已经存在一个集群,有两个节点 192.168.100.19 hado ...

  4. 浅谈web应用的负载均衡、集群、高可用(HA)解决方案(转)

    1.熟悉几个组件 1.1.apache     —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安 ...

  5. K8S集群Master高可用实践

    K8S集群Master高可用实践    https://blog.51cto.com/ylw6006/2164981 本文将在前文基础上介绍k8s集群的高可用实践,一般来讲,k8s集群高可用主要包含以 ...

  6. Dubbo入门到精通学习笔记(十五):Redis集群的安装(Redis3+CentOS)、Redis集群的高可用测试(含Jedis客户端的使用)、Redis集群的扩展测试

    文章目录 Redis集群的安装(Redis3+CentOS) 参考文档 Redis 集群介绍.特性.规范等(可看提供的参考文档+视频解说) Redis 集群的安装(Redis3.0.3 + CentO ...

  7. 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...

  8. 15套java架构师、集群、高可用、高可扩 展、高性能、高并发、性能优化Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...

  9. Nginx+Zuul集群实现高可用网关

    代码参考:https://github.com/HCJ-shadow/Zuul-Gateway-Cluster-Nginx Zuul的路由转发功能 前期准备 搭建Eureka服务注册中心 服务提供者m ...

  10. Rabbitmq安装、集群与高可用配置

    历史: RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多 ...

随机推荐

  1. ChatGPT生成测试用例的最佳实践(二)

    这种测试用例还不够直观,能不能让其以表格的形式显示呢?笔者输入"请以表格形式展示,谢谢."提示词,ChatGPT输出的部分内容如图3-3所示. 图3-3  ChatGPT输出的部分 ...

  2. openEuler欧拉设置git pull免密

    使用git config命令在本地全局设置用户名和邮箱 git config --global user.name "username":全局添加用户名 git config -- ...

  3. 【杂谈】服务端能同时处理多少个 Socket 连接?背后的资源与限制分析

    一个服务端进程能同时连接多少个 Socket? 要理解一个服务端进程能同时支持多少个连接,首先我们需要明确一个 socket 连接 的表示方式.一个连接由四个部分组成:[LocalIP:LocalPo ...

  4. PDFSharp 1.5 更新

    PDFsharp 1.50 Preview Information - PDFsharp & MigraDoc PDFShapr 1.50 修复与改进 支持 Object Streams - ...

  5. Base58在java程序中应用

    Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址. 相比Base64,Base58不使用数字"0",字母大写"O" ...

  6. Qt编写地图综合应用文章导航

    文章 链接 1-闪烁点图 https://qtchina.blog.csdn.net/article/details/105310274 2-迁徙图 https://qtchina.blog.csdn ...

  7. Qt开发经验小技巧171-175

    在Qt编程中经常会遇到编码的问题,由于跨平台的考虑兼容各种系统,而windows系统默认是gbk或者gb2312编码,当然后期可能msvc编译器都支持utf8编码,所以在部分程序中传入中文目录文件名称 ...

  8. 不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?

    本文由小白debug分享,原题"能 ping 通,TCP 就一定能连通吗?",下文进行了排版和内容优化. 1.引言 平时,我们想要知道,自己的机器到目的机器之间,网络通不通,一般会 ...

  9. 按部就班--从零开始建设k8s监控(二)

    前言 书接上文,prometheus已经安装好了,并且能够对k8s的整体状态进行监控,但是我们还需要更多 环境准备 组件 版本 操作系统 Ubuntu 22.04.4 LTS docker 24.0. ...

  10. 零基础Windows Server搭建部署Word Press 博客系列教程(3):弱鸡变猛男之部署CDN加速和缓存加速

    我们博客里面存在的各种媒体文件.压缩文件.脚本文件,这些文件可能很大而且不需要随时生成.如果我们的服务器带宽很小,访问我们网站的用户等待加载完成就需要很长时间,那么访问速度会很慢.因此我们需要通过第三 ...