Flink高可用集群搭建

一、部署说明
flink是apache一款大数据实时计算应用,在生产环境中,用来实时计算应用产生的日志,数据等,满足预警,入库等需求

二、系统环境
系统版本:centos 7.2
java版本: jdk 1.8.0_161
zookeeper版本: zookeeper-3.4.9
hadoop版本: Hadoop-2.8.3.tar.gz
flink版本: flink-1.7.1
四个机器,其中192.168.3.60作为flink 的master,也就是jobmanager,其它三个机器作为taskmanager

三、准备部署
1、关闭selinux

# sed ‘s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/selinux/config

2、关闭防火墙

# firewall-cmd --state   #查看防火墙状态
# systemctl stop firewalld.service    #停用firewall
# systemctl disable firewalld.service   #禁止防火墙开机启动
# init 6    #重启主机,然后再输入第一条命令查看防火墙状态

3、安装jdk1.8
由于centos7.2自带jdk,但是是sun公司的jdk,一般我们都是用自己的jdk包,所以先卸载

# rpm -qa | grep java | xargs rpm -e --nodeps   #根据java关键词找出对应包,然后卸载

4、创建普通用户以及设置应用目录

# mkdir -p /app/appflink  #创建用户目录
# useradd -d /app/appflink appflink
# passed appflink   #设置密码

5、以普通用户上传程序包到上面配置的用户目录,配置变量

# cd /app/appflink
# tar zxvf jdk-8u101-linux-x64.tar.gz    #解压到用户目录
# vi vi ~/.bash_profile

配置如下

export PS1='[\u@\h \w]'
export JAVA_HOME=/app/appflink/jdk1.8.0_101
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

6、配置master免密码登陆其余机器
CentOS默认没有启动ssh无密登录,去掉/etc/ssh/sshd_config其中2行的注释,每台服务器都要设置,

#RSAAuthentication yes
#PubkeyAuthentication yes

输入命令,ssh-keygen -t rsa,生成key,都不输入密码,一直回车,在用户根目录就会生成.ssh文件夹,每台服务器都要设置
进入用户根目录下面的认证文件夹

#cd ~/.ssh/

合并公钥到authorized_keys文件,在flink-master服务器,通过SSH命令合并,

#cat id_rsa.pub>> authorized_keys
#ssh [email protected] cat ~/.ssh/id_rsa.pub>> authorized_keys
#ssh [email protected] cat ~/.ssh/id_rsa.pub>> authorized_keys
#ssh [email protected] cat ~/.ssh/id_rsa.pub>> authorized_keys

四、部署zookeeper集群
这里我们使用,192.168.3.61, 192.168.3.62, 192.168.3.63

# cd ./bin/zookeeper-3.4.9/conf    #这里进入配置目录
# mv zoo_sample.cfg zoo.cfg

修改主要配置

dataDir=/app/appflink/bin/zookeeper-3.4.9/data
dataLogDir=/app/appflink/bin/zookeeper-3.4.9/log

最后一行添加,使用三个机器组合集群

server.1=flink-slave1:2888:3888
server.2=flink-slave2:2888:3888
server.3=flink-slave3:2888:3888

修改hosts,ip和主机名自定义

#cat /etc/hosts
192.168.3.60 flink-master
192.168.3.61 flink-slave1
192.168.3.62 flink-slave2
192.168.3.63 flink-slave3

创建数据目录,日志目录,写入自身id

# mkdir -p /app/appflink/bin/zookeeper-3.4.9/data
# mkdir -p /app/appflink/bin/zookeeper-3.4.9/log
#vi /app/appflink/bin/zookeeper-3.4.9/data/myid

这里id要注意,要和zoo.cfg配置里的1,2,3对应,然后分别写入1,2,3,内容就一个id就好了

启动zookeeper,三个机器依次启动

# cd /app/appflink/bin/zookeeper-3.4.9/bin
# ./zkServer.sh start
# ./zkServer.sh status  #查看状态,正常情况下,应该是flower或者leader

五、部署hadoop
修改hadoop配置文件

#vi hadoop-env.sh

在25位置,配置如下

export JAVA_HOME=/app/appflink/jdk1.8.0_101

创建hadoop需要的目录

#mkdir -p /app/appflink/data/hadoop/hdfs/name
#mkdir -p /app/appflink/data/hadoop/hdfs/data
#mkdir -p /app/appflink/data/hadoop/tmp

.

 #vi hdfs-site.xml

配置如下


	dfs.namenode.name.dir
	file:/app/appflink/data/hadoop/hdfs/name
	HDFS namenode数据镜象目录



	dfs.datanode.data.dir
	file:/app/appflink/data/hadoop/hdfs/data
	HDFS datanode数据镜象存储路径,可以配置多个不同的分区和磁盘中,使用,号分隔



	dfs.namenode.http-address
	flink-master:50070
	



	dfs.namenode.secondary.http-address
	flink-master:50090
	



	dfs.webhdfs.enabled
	true



	dfs.replication
	3




	dfs.datanode.du.reserved
	1073741824




	dfs.block.size
	134217728




	dfs.permissions.enabled
	false
	

`

#vi core-site.xml

配置内容如下


	fs.defaultFS
	hdfs://flink-master:9000
	



	dfs.namenode.checkpoint.period
	1800
	



	fs.checkpoint.size
	67108864



	fs.trash.interval
	1440
	



	hadoop.tmp.dir
	file:/app/appflink/data/hadoop/tmp
	



	io.file.buffer.size
	131702
	

配置mapred-site.xml


    mapreduce.framework.name
    yarn

配置yarn-site.xml,内容如下


	yarn.resourcemanager.address
	flink-master:18040


	yarn.resourcemanager.scheduler.address
	flink-master:18030


	yarn.resourcemanager.webapp.address
	flink-master:18088


	yarn.resourcemanager.resource-tracker.address
	flink-master:18025


	yarn.resourcemanager.admin.address
	flink-master:18141


	yarn.nodemanager.aux-services
	mapreduce_shuffle


	yarn.nodemanager.aux-services.mapreduce.shuffle.class
	org.apache.hadoop.mapred.ShuffleHandler

配置hadoop环境变量

#set hadoop path

添加如下配置

export HADOOP_HOME=/app/appflink/hadoop-2.8.3
export PATH=$PATH:$HADOOP_HOME/bin

确认生效

#cd /app/appflink/hadoop-2.8.3/etc/hadoop
#source hadoop-env.sh
#hadoop Version

格式化数据目录,只需要一次,下次启动不再需要格式化,只需start-all.sh

hadoop namenode -format

启动hadoop

#cd /app/appflink/hadoop-2.8.3/sbin
#./start-all.sh

使用jsp查看进程是否都启动了,然后我们可以登陆web控制台创建目录节点

六、搭建flink集群
编辑flink-conf.yaml文件

#vi flink-conf.yaml

主要内容如下

jobmanager.rpc.address: 192.168.3.60   #job进程监听的地址,建议写hostname
fs.hdfs.hadoopconf: /app/flink/hadoop/conf/ #高可用时候,hadoop配置地址
high-availability: zookeeper     #使用zk实现高可用
#下面两个目录需要在hadoop上面创建,分别是/flinkshare/ha, /ZooKeeper/ha
high-availability.storageDir: hdfs://flink-master:9000/flinkshare/ha/
recovery.zookeeper.storageDir: hdfs://flink-master:9000/ZooKeeper/ha/
#通过zk来选举
high-availability.zookeeper.quorum: flink-slave1:2181,flink-slave2:2181,flink-slave3:2181

编辑master文件,写入两个机器ip和端口

192.168.3.60:8081
192.168.3.61:8081

编辑slaves文件,写入所有task进程机器

flink-slave1
flink-slave2
flink-slave3

编辑zoo.cfg,将机器列表填入

server.1=flink-slave1:2888:3888
server.2=flink-slave2:2888:3888
server.3=flink-slave3:2888:3888

将文件通过scp拷贝到其它机器

#scp -r /app/appflink/bin/flink-1.4.0 [email protected]:/app/appflink/bin/
#scp -r /app/appflink/bin/flink-1.4.0 [email protected]:/app/appflink/bin/
#scp -r /app/appflink/bin/flink-1.4.0 [email protected]:/app/appflink/bin/

接下来,启动flnk集群

#cd /app/appflink/bin/flink-1.4.0/bin
#./start-cluster.sh cluster start

登陆web控制台,http://192.168.3.60:8081,正常情况下,就能看到3个taskmanager,2个jobmanager
为了验证高可用,可以随便结束一个jobmanager进程,看看是不是都能访问

你可能感兴趣的:(Flink)