flink on yarn 部署

社会主义新天地 提交于 2019-12-04 16:26:23

一、部署说明


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.4.0

四个机器,其中192.168.3.60作为flink 的master,也就是jobmanager,其它三个机器作为taskmanager

三、准备部署

1、关闭selinux

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

2、关闭防火墙

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

3、安装jdk1.8

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

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

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

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

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

123456789
cd /app/appflinktar 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行的注释,每台服务器都要设置,

12
RSAAuthentication yesPubkeyAuthentication yes

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

123456
cd ~/.ssh/#合并公钥到authorized_keys文件,在flink-master服务器,通过SSH命令合并cat id_rsa.pub>> authorized_keysssh appflink@192.168.3.61 cat ~/.ssh/id_rsa.pub>> authorized_keysssh appflink@192.168.3.62 cat ~/.ssh/id_rsa.pub>> authorized_keysssh appflink@192.168.3.63 cat ~/.ssh/id_rsa.pub>> authorized_keys

四、部署zookeeper集群

这里我们使用,192.168.3.61, 192.168.3.62, 192.168.3.63

12345678910111213141516171819202122232425262728
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

123456789
修改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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
vi hdfs-site.xml  配置如下:<property>   <name>dfs.namenode.name.dir</name>   <value>file:/app/appflink/data/hadoop/hdfs/name</value>   <!--HDFS namenode数据镜象目录-->   <description>  </description>  </property>  <property>  <name>dfs.datanode.data.dir</name>  <value>file:/app/appflink/data/hadoop/hdfs/data</value>  <!-- HDFS datanode数据镜象存储路径,可以配置多个不同的分区和磁盘中,使用,号分隔 -->  <description> </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 cre-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环境变量

12345678910111213141516
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集群

1234567891011121314151617181920212223242526272829303132333435363738
#编辑flink-conf.yaml文件vi flink-conf.yaml#主要内容如下:jobmanager.rpc.address: 192.168.3.60   #job进程监听的地址fs.hdfs.hadoopconf: /app/flink/hadoop/conf/ #高可用时候,hadoop配置地址high-availability: zookeeper     #使用zk实现高可用#下面两个目录需要在hadoop上面创建,分别是/flinkshare/ha, /ZooKeeper/hahigh-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:8081192.168.3.61:8081#编辑slaves文件,写入所有task进程机器flink-slave1flink-slave2flink-slave3#编辑zoo.cfg,将机器列表填入server.1=flink-slave1:2888:3888server.2=flink-slave2:2888:3888server.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/#接下来,启动flink集群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进程,看看是不是都能访问
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!