高可用Flink on YARN集群快速配置

我们长久以来一直使用Spark作为离线和近实时计算框架,几乎承担了主要业务中所有的计算任务。最近Flink逐渐兴起,我们通过查阅资料和参加Meetup,了解到Flink在实时计算方面确实比Spark有优势。我们正准备涉足实时业务,实时数仓、实时推荐这些东西总是要有的,快速上手Flink势在必行。

Flink的官方文档比较详尽,并且设计理念与Spark多有相通,理解成本较低。Flink有多种集群部署方式(Local/Standalone/YARN/K8s/Mesos等等),考虑到已经有现成的YARN和ZooKeeper集群,所以直接配置Flink on YARN。

下图示出Flink on YARN的基本原理,可见与Spark on YARN非常相似。

首先设定Hadoop路径的环境变量,Flink需要用它来获取HDFS、YARN的配置信息。

~ vim /etc/profile
export HADOOP_CONF_DIR=/opt/cloudera/parcels/CDH/lib/hadoop/etc/hadoop

然后编辑flink-conf.yaml,其中包含了Flink的基础配置。

  • 资源参数
# JobManager堆内存
jobmanager.heap.mb: 1024
# TaskManager堆内存
taskmanager.heap.mb: 2048
# 每个TaskManager上task slot数目
taskmanager.numberOfTaskSlots: 4
# 默认并行度
parallelism.default: 12

以上四项只是给出默认配置,实际执行作业时都可以用对应的命令行参数(-jm、-tm、-s、-p)修改。

  • 高可用配置
# 开启基于ZK的高可用
high-availability: zookeeper
# ZK集群(即所谓Quorum)地址
high-availability.zookeeper.quorum: ha1:2181,ha2:2181,ha3:2181
# Flink在ZK存储中的根节点
high-availability.zookeeper.path.root: /flink
# JobManager元数据的持久化位置,必须是可靠存储
high-availability.storageDir: hdfs://mycluster/flink/ha/
# 程序启动时的最大尝试次数
# 应当与YARN ApplicationMaster的最大尝试次数(yarn.resourcemanager.am.max-attempts)相同
yarn.application-attempts: 4

注意YARN ApplicationMaster的最大尝试次数(yarn.resourcemanager.am.max-attempts)默认值仅为2,使得作业容错率很低,因此预先把它修改为4,或者更大些。

  • StateBackend默认配置
# StateBackend类型
# 可选jobmanager(JM本身)/filesystem(外部文件系统)/rocksdb(自带的RocksDB数据库)
state.backend: filesystem
# 检查点目录
state.checkpoints.dir: hdfs://mycluster/flink-checkpoints
# 保存点目录(比检查点更重量级,一般手动操作,用于重启恢复)
state.savepoints.dir: hdfs://mycluster/flink-savepoints

选择filesystem或者rocksdb的话,可靠性比较高。对于轻量级的、逻辑不复杂的任务,可以选择jobmanager。程序中也能通过StreamExecutionEnvironment.setStateBackend()方法来指定。

  • 额外的JVM参数
env.java.opts: -server -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError

这个类似于spark-submit中的extraJavaOptions。

Flink on YARN有两种执行模式。

  • Session模式:通过yarn-session.sh创建一个持续运行的Flink Session,其中已经分配好了JobManager、TaskManager及所需资源,提交作业时,相当于提交给Session。
  • Single job模式:通过flink run脚本每次提交单个作业,设定JobManager为yarn-cluster,由YARN单独分配资源,类似于spark-submit的yarn-cluster部署模式。生产环境一般用这种模式,下面是示例脚本。
/opt/flink-1.5.1/bin/flink run \
# 分离模式运行 (-d)
--detached \
# 指定JobManager (-m)
--jobmanager yarn-cluster \
# YARN Application的名称 (-ynm)
--yarnname "test-calendar-rt" \
# 分配的YARN Container数量 (-yn)
--yarncontainer 3 \
# JobManager内存 (-yjm)
--yarnjobManagerMemory 1024 \
# TaskManager内存 (-ytm)
--yarntaskManagerMemory 2048 \
# 每个TaskManager上task slot数目 (-ys)
--yarnslots 3 \
# 并行度 (-p)
--parallelism 9 \
# 用户程序的入口类 (-c)
--class com.xyz.bigdata.rt.flink.CalendarRecordETLTest \
/var/projects/rt/flink-test-0.1-jar-with-dependencies.jar

本来想在这篇文章里把今天搞的一个Demo(RocketMQ→Flink Streaming→HBase)也贴出来的,但总感觉与集群配置不相关。这套逻辑不久之后就要投入生产环境,到时候再来详细写自定义Source/Sink、检查点配置、事件时间、水印等话题吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339