1、部署说明
flink是apache一款大数据实时计算应用,在生产环境中,用来实时计算应用产生的日志,数据等,知足预警,入库等需求java
2、系统环境
系统版本: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,其它三个机器做为taskmanagernode
3、准备部署
一、关闭selinuxlinux
# sed ‘s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/selinux/config
二、关闭防火墙web
# firewall-cmd --state #查看防火墙状态 # systemctl stop firewalld.service #停用firewall # systemctl disable firewalld.service #禁止防火墙开机启动 # init 6 #重启主机,而后再输入第一条命令查看防火墙状态
三、安装jdk1.8
因为centos7.2自带jdk,可是是sun公司的jdk,通常咱们都是用本身的jdk包,因此先卸载apache
# rpm -qa | grep java | xargs rpm -e --nodeps #根据java关键词找出对应包,而后卸载
四、建立普通用户以及设置应用目录centos
# mkdir -p /app/appflink #建立用户目录 # useradd -d /app/appflink appflink # passed appflink #设置密码
五、以普通用户上传程序包到上面配置的用户目录,配置变量bash
# 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
六、配置master免密码登录其他机器
CentOS默认没有启动ssh无密登陆,去掉/etc/ssh/sshd_config其中2行的注释,每台服务器都要设置,app
#RSAAuthentication yes #PubkeyAuthentication yes
输入命令,ssh-keygen -t rsa,生成key,都不输入密码,一直回车,在用户根目录就会生成.ssh文件夹,每台服务器都要设置
进入用户根目录下面的认证文件夹ssh
#cd ~/.ssh/
合并公钥到authorized_keys文件,在flink-master服务器,经过SSH命令合并,
#cat id_rsa.pub>> authorized_keys #ssh appflink@192.168.3.61 cat ~/.ssh/id_rsa.pub>> authorized_keys #ssh appflink@192.168.3.62 cat ~/.ssh/id_rsa.pub>> authorized_keys #ssh appflink@192.168.3.63 cat ~/.ssh/id_rsa.pub>> authorized_keys
4、部署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
5、部署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
配置以下
<property> <name>dfs.namenode.name.dir</name> <value>file:/app/appflink/data/hadoop/hdfs/name</value> <description>HDFS namenode数据镜象目录</description> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/app/appflink/data/hadoop/hdfs/data</value> <description>HDFS datanode数据镜象存储路径,能够配置多个不一样的分区和磁盘中,使用,号分隔</description> </property> <property> <name>dfs.namenode.http-address</name> <value>flink-master:50070</value> <!---HDFS Web查看主机和端口--> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>flink-master:50090</value> <!--辅控HDFS web查看主机和端口--> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <property> <name>dfs.replication</name> <value>3</value> <!--HDFS数据保存份数,一般是3--> </property> <property> <name>dfs.datanode.du.reserved</name> <value>1073741824</value> <!-- datanode 写磁盘会预留 1G空间 给其余程序使用,而非写满,单位 bytes--> </property> <property> <name>dfs.block.size</name> <value>134217728</value> <!--HDFS数据块大小,当前设置为128M/Blocka--> </property> <property> <name>dfs.permissions.enabled</name> <value>false</value> <!-- HDFS 关闭文件权限 --> </property>
`
#vi core-site.xml
配置内容以下
<property> <name>fs.defaultFS</name> <value>hdfs://flink-master:9000</value> <!--hadoop namenode 服务器地址和端口,以域名形式--> </property> <property> <name>dfs.namenode.checkpoint.period</name> <value>1800</value> <!-- editlog每隔30分钟触发一次合并,默认为60分钟 --> </property> <property> <name>fs.checkpoint.size</name> <value>67108864</value> </property> <property> <name>fs.trash.interval</name> <value>1440</value> <!-- Hadoop文件回收站,自动回收时间,单位分钟,这里设置是1天,默认为0。--> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/app/appflink/data/hadoop/tmp</value> <!-- Hadoop的默认临时路径,这个最好配置,若是在新增节点或者其余状况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录便可。不过若是删除了NameNode机器的此目录,那么就须要从新执行NameNode格式化的命令。/data/hadoop/tmp这里给的路径不须要建立会自动生成.--> </property> <property> <name>io.file.buffer.size</name> <value>131702</value> <!-- 流文件的缓冲区--> </property>
配置mapred-site.xml
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
配置yarn-site.xml,内容以下
<property> <name>yarn.resourcemanager.address</name> <value>flink-master:18040</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>flink-master:18030</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>flink-master:18088</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>flink-master:18025</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>flink-master:18141</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property>
配置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控制台建立目录节点
6、搭建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 appflink@192.168.3.61:/app/appflink/bin/ #scp -r /app/appflink/bin/flink-1.4.0 appflink@192.168.3.62:/app/appflink/bin/ #scp -r /app/appflink/bin/flink-1.4.0 appflink@192.168.3.63:/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进程,看看是否是都能访问