目录
Flink
1.框架比较
Storm延迟低但是吞吐量小。
Spark Streaming吞吐量大但是延迟低。
Flink是一种兼具低延迟和高吞吐量特点的流计算技术,还是一套框架中同时支持批处理和流处理的一个计算平台。
2.flink standalone集群搭建
配置 conf/flink-conf.yaml masters slaves
然后 ./start-cluster.sh
停止standalone模式:./stop-cluster.sh
提交任务
通过 hdfs getconf -confKey fs.default.name 查看hdfs端口为8020
. /flink run ../examples/batch/WordCount.jar -input hdfs://10.31.1.125:8020/test.txt -output hdfs://10.31.1.125:8020/wordcount-result.txt
3.flink配置文件
flink-conf.yaml 文件中的几个重要参数进行分析:
jobmanager.heap.size:JobManager 节点可用的内存大小。
taskmanager.heap.size:TaskManager 节点可用的内存大小。
taskmanager.numberOfTaskSlots:每台机器可用的Slot 数量。
parallelism.default:默认情况下Flink 任务的并行度。
上面参数中所说的Slot 和parallelism 的区别:
Slot 是静态的概念,是指TaskManager 具有的并发执行能力。
parallelism 是动态的概念,是指程序运行时实际使用的并发能力。
设置合适的parallelism 能提高运算效率。
4.flink的2种管理模式
内存集中管理模式:
在Yarn中初始化一个Flink集群,开辟指定的资源,之后我们提交的Flink Job都在这个Flink yarn-session中,也就是说不管提交多少个job,这些job都会共用开始时在yarn中申请的资源。这个Flink集群会常驻在Yarn集群中,除非手动停止。
yarn-session.sh(开辟资源)+flink run(提交任务)
开启资源:yarn-session.sh -n 2 -jm 1024 -tm 1024 -d (单位为MB)
提交任务:./flink run …/examples/batch/WordCount.jar -input hdfs://192.168.83.129:9000/LICENSE -output hdfs://192.168.83.129:9000/wordcount-result.txt
-n 2 表示指定两个容器 TaskManager的数量
-s(–slots) 每个TaskManager的slot数量,默认一个slot一个core,默认每个taskmanager的slot的个数为1,有时可以多一些taskmanager,做冗余。
-jm 1024 表示jobmanager的内存 1024M内存
-tm 1024表示每个taskmanager的内存 1024M内存
-d 任务后台运行
-nm,–name YARN上为一个自定义的应用设置一个名字
-q,–query 显示yarn中可用的资源 (内存, cpu核数)
-z,–zookeeperNamespace 针对HA模式在zookeeper上创建NameSpace
-id,–applicationId YARN集群上的任务id,附着到一个后台运行的yarn session中
内存Job管理模式【推荐使用】:
在Yarn中,每次提交job都会创建一个新的Flink集群,任务之间相互独立,互不影响并且方便管理。任务执行完成之后创建的集群也会消失。
执行 ./flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 ../examples/batch/WordCount.jar 有默认指定的-input -output
或者 flink run [OPTIONS] <jar-file> <arguments>
“run” 操作参数:
-c,–class 如果没有在jar包中指定入口类,则需要在这里通过这个参数指定
-m,–jobmanager host:port 指定需要连接的jobmanager(主节点)地址,使用这个参数可以指定一个不同于配置文件中的jobmanager
-p,–parallelism 指定程序的并行度。可以覆盖配置文件中的默认值。
-yn,–container 表示分配容器的数量,也就是TaskManager 的数量。
-d,–detached:设置在后台运行。
-yjm,–jobManagerMemory:设置JobManager 的内存,单位是MB。
-ytm,–taskManagerMemory:设置每个TaskManager 的内存,单位是MB。
-ynm,–name:给当前Flink application 在Yarn 上指定名称。
-yq,–query:显示yarn 中可用的资源(内存、cpu 核数)
-yqu,–queue :指定yarn 资源队列
-ys,–slots :每个TaskManager 使用的Slot 数量。
-yz,–zookeeperNamespace:针对HA 模式在Zookeeper 上创建NameSpace
-yid,–applicationID : 指定Yarn 集群上的任务ID,附着到一个后台独立运行的Yarn Session 中。
5.Flink任务提交优先级设置
一个任务的并行度设置可以从4 个层面指定:
Operator Level(算子层面)。 算子调用setParallelism()
Execution Environment Level(执行环境层面)。env.setParallelism()
Client Level(客户端层面)。./flink run -p 10
System Level(系统层面)。 / flink的配置文件
这些并行度的优先级为**Operator Level>Execution Environment Level>Client Level>System Level**