一:组件
1、hadoop(包含了yarn和hdfs),hadoop 2.8.5版本
2、flink,版本 flink-1.7.2-bin-hadoop28-scala_2.11.tgz
3、centos7
二:步骤。
1、自行安装hadoop集群,很多帖子,随意找。
1)关于配置 core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<!-- 指定tmp文件夹路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/data/tmp</value>
</property>
</configuration>
2)关于配置hadoop-env.sh
export JAVA_HOME=/data/soft/jdk1.8.0_181
3)关于配置hdfs-site.xml
<configuration>
<!--副本数 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--指定 secondaryNamenode地址及启动机器-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave2:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/data/dfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/data/dfs/datanode</value>
</property>
</configuration>
4)关于配置mapred-env.sh
export JAVA_HOME=/data/soft/jdk1.8.0_181
5)关于配置 mapred-site.xml
mapred-site.xml文件默认是没有的,需要cp mapred-site.xml.template mapred-site.xml
<configuration>
<!--设置mapreduce任务运行在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--是设置mapreduce的历史服务器安装在master机器上(可设置可不设置)-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<!--是设置历史服务器的web页面地址和端口号(可设置可不设置)-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
<!--设置map阶段内存,默认是1024,此设置可解决一个启动报错问题-->
<property>
<name>mapreduce.map.memory.mb</name>
<value>2048</value>
</property>
</configuration>
报错如下:
Diagnostics: Container [pid=16377,containerID=container_1533988876407_0004_02_000001] is running beyond virtual memory limits. Current usage: 59.9 MB of 1 GB physical memory used; 2.2 GB of 2.1 GB virtual memory used. Killing container.
6)关于配置slaves(此时把master也当做一个slave了)
vim slaves
master
slave1
slave2
7)关于配置 yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定resourcemanager服务器-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<!--配置是否启用日志聚集功能-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!--配置聚集的日志在HDFS上最多保存多长时间-->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
<!--NodeManager总的可用虚拟CPU个数-->
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>8</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://master:19888/jobhistory/logs/</value>
</property>
<!--此配置为了解决上文说的报错-->
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>5</value>
</property>
</configuration>
注:日志聚集功能不配置
这点点进去会报错。
三:flink部署
下载flink包
1)配置flink-conf.yaml
#Jobmanager的IP地址,即master地址。
jobmanager.rpc.address: master
#每一个TaskManager的堆大小(单位是MB),由于每个taskmanager要运行operator的各种函数(Map、Reduce、CoGroup等,包含sorting、hashing、caching),因此这个值应该尽可能的大。如果集群仅仅跑Flink的程序,建议此值等于机器的内存大小减去1、2G,剩余的1、2GB用于操作系统。如果是Yarn模式,这个值通过指定tm参数来分配给container,同样要减去操作系统可以容忍的大小(1、2GB)。
#本地方设置6G
taskmanager.heap.size: 6144
#每个TaskManager的并行度。一个slot对应一个core,默认值是1.一个并行度对应一个线程。总的内存大小要且分给不同的线程使用。
taskmanager.numberOfTaskSlots: 4
#启动job默认用的parallelism数量
parallelism.default:8
#临时目录
taskmanager.tmp.dirs: /tmp
#JobManager的堆大小(单位是MB)。当长时间运行operator非常多的程序时,需要增加此值。具体设置多少只能通过测试不断调整。
jobmanager.heap.size: 2048
#jobmanager.web.port: 8081
#JobMamanger的端口,默认是6123。
jobmanager.rpc.port: 6123
state.backend: filesystem
state.backend.fs.checkpointdir: hdfs:///flink/checkpoints
fs.hdfs.hadoopconf: /var/apps/hadoop285/etc/hadoop
注:如果配置高可用,这里面少了zookeeper的配置
2)配置master
vim masters
master:8081
3)配置slaves
vim slaves
slave1
slave2
三:启动yarn 和flink
四:提交任务。
./bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 -d -c com.xxxxx.flink.app.xxxxxFlinkData /var/apps/xxxx-xxxxx.jar
页面如下:
完成!