JobManager 高可用 (HA)--v1.11官网译文

概览

JobManager协调每个Flink部署。 它负责调度和资源管理。

默认情况下,每个Flink集群只有一个JobManager实例。 这将创建一个单点故障(SPOF):如果JobManager崩溃,则无法提交任何新程序,并且正在运行的程序也会失败。

使用JobManager高可用性,您可以从JobManager故障中恢复并消除SPOF。 您可以为独立群集和YARN群集配置高可用性。

在Flink Wiki中的 JobManager High Availability 中查看更多HA实现细节   。

独立群集高可用性

独立集群的JobManager高可用性的总体思想是,随时有一个JobManager leader,并且有多个备用JobManager可以在leader失败的情况下接管leader。 这样可以保证不会出现单点故障,并且只要待机JobManager处于领导地位,程序就可以取得进展。 备用JobManager实例和主JobManager实例之间没有明显区别。 每个JobManager都可以充当主角色或备用角色。

作为示例,请考虑以下三个JobManager实例的设置:


1

配置

要启用JobManager高可用性,您必须将高可用性模式设置为zookeeper,配置ZooKeeper quorum并使用所有JobManager主机及其Web UI端口设置主文件。

Flink利用ZooKeeper在所有正在运行的JobManager实例之间进行分布式协调。 ZooKeeper是Flink的一项独立服务,该服务通过leader选举和轻量级一致状态存储提供高度可靠的分布式协调。 查看 ZooKeeper’s Getting Started Guide,了解有关ZooKeeper的更多信息。 Flink包含用于引导简单的ZooKeeper安装的脚本。

Masters File (masters)

为了启动HA集群,请在conf / masters中配置masters文件:

masters文件:masters文件包含启动了JobManager的所有主机,以及Web用户界面绑定的端口。

     jobManagerAddress1:webUIPort1

     [...]

     jobManagerAddressX:webUIPortX

默认情况下,作业管理器将选择一个随机端口进行进程间通信。 您可以通过high-availability.jobmanager.port键更改此设置。 此key接受单个端口(例如50010),范围(50000-50025)或两者的组合(50010,50011,50020-50025,50050-50075)。

Config File (flink-conf.yaml)

为了启动HA集群,请向 conf / flink-conf.yaml添加以下配置key:

高可用性模式(必需):必须在conf / flink-conf.yaml中将高可用性模式设置为zookeeper,以启用高可用性模式。 或者,可以将此选项设置为Flink用来创建HighAvailabilityServices实例的工厂类的FQN。

      high-availability: zookeeper

ZooKeeper quorum (必需):ZooKeeper quorum是ZooKeeper服务器的复制组,它们提供分布式协调服务。

     high-availability.zookeeper.quorum: address1:2181[,...],addressX:2181

每个addressX:port都引用一个ZooKeeper服务器,Flink在给定的地址和端口可以访问该服务器。

ZooKeeper root(推荐):根ZooKeeper节点,所有群集节点都放置在该根节点下。

     high-availability.zookeeper.path.root: /flink

ZooKeeper cluster-id(推荐):cluster-id ZooKeeper节点,在该节点下放置了群集的所有必需协调数据。

       high-availability.cluster-id: /default_ns # important: customize per cluster

重要说明:在运行YARN群集,每作业YARN会话或在另一个群集管理器上时,您不应手动设置此值。 在这些情况下,将根据应用程序ID自动生成cluster-id。 手动设置cluster-id会覆盖YARN中的此行为。 依次使用-z CLI选项指定集群ID会覆盖手动配置。 如果您在裸机上运行多个Flink HA群集,则必须为每个群集手动配置单独的群集ID。

存储目录(必需):JobManager元数据保留在文件系统storageDir中,并且仅指向此状态的指针存储在ZooKeeper中。

     high-availability.storageDir: hdfs:///flink/recovery

storageDir存储恢复JobManager故障所需的所有元数据。

配置了主服务器和ZooKeeper quorum后,您可以照常使用提供的群集启动脚本。 他们将启动HA集群。 请记住,调用脚本时必须运行ZooKeeper quorum,并确保为要启动的每个HA群集配置单独的ZooKeeper根路径。

Example: Standalone Cluster with 2 JobManagers

1 在conf / flink-conf.yaml中配置高可用性模式和ZooKeeper quorum

        high-availability: zookeeper

        high-availability.zookeeper.quorum: localhost:2181

        high-availability.zookeeper.path.root: /flink

        high-availability.cluster-id: /cluster_one # important: customize per cluster

        high-availability.storageDir: hdfs:///flink/recovery

2  Configure masters in conf/masters:

        localhost:8081

        localhost:8082

3 在conf / zoo.cfg中配置ZooKeeper服务器(目前,每台机器只能运行一个ZooKeeper服务器):

        server.0=localhost:2888:3888

Start ZooKeeper quorum:

        $ bin/start-zookeeper-quorum.sh

        Starting zookeeper daemon on host localhost.

Start an HA-cluster:

        $ bin/start-cluster.sh

        Starting HA cluster with 2 masters and 1 peers in ZooKeeper quorum.

        Starting standalonesession daemon on host localhost.

        Starting standalonesession daemon on host localhost.

        Starting taskexecutor daemon on host localhost.

Stop ZooKeeper quorum and cluster:

        $ bin/stop-cluster.sh

        Stopping taskexecutor daemon (pid: 7647) on localhost.

        Stopping standalonesession daemon (pid: 7495) on host localhost.

        Stopping standalonesession daemon (pid: 7349) on host localhost.

        $ bin/stop-zookeeper-quorum.sh

        Stopping zookeeper daemon (pid: 7101) on host localhost.


YARN Cluster High Availability

在运行高度可用的YARN群集时,我们不会运行多个JobManager(ApplicationMaster)实例,而只能运行一个实例,当实例出现故障时,YARN会重新启动该实例。 确切的行为取决于您使用的特定YARN版本。

Configuration

最大应用程序主尝试次数(yarn-site.xml)

您必须在yarn-site.xml中为YARN设置配置应用程序主数据库的最大尝试次数:


2

当前YARN版本的默认值为2(表示可以容忍单个JobManager故障)。

Application Attempts (flink-conf.yaml)

除了高可用性配置(参见上文),您还必须在conf / flink-conf.yaml中配置最大尝试次数:

    yarn.application-attempts: 10

这意味着在YARN使应用程序失败之前,可以为失败的尝试将应用程序重新启动9次(9次重试+ 1次初始尝试)。 如果YARN操作需要,则YARN可以执行其他重新启动:抢占,节点硬件故障或重新启动,或NodeManager重新同步。 这些重新启动不计入yarn.application-attempts,请参阅Jian Fang的博客文章。 请务必注意,yarn.resourcemanager.am.max-attempts是应用程序重新启动的上限。 因此,在Flink中设置的应用程序尝试次数不能超过启动YARN的YARN群集设置。

Container Shutdown Behaviour

YARN 2.3.0 <版本<2.4.0。 如果应用程序主服务器失败,则所有容器都将重新启动。

YARN 2.4.0 <版本<2.6.0。 TaskManager容器在应用程序主服务器发生故障时保持活动状态。 这样的优点是启动时间更快,并且用户不必等待再次获取容器资源。

YARN 2.6.0 <=版本:将尝试失败的有效性间隔设置为Flinks的Akka超时值。 尝试失败有效性间隔表示只有在系统在一个间隔内看到最大次数的应用程序尝试后,才会终止应用程序。 这样可以避免长时间的工作会耗尽应用程序的尝试次数。

注意:Hadoop YARN 2.4.0有一个主要错误(已在2.5.0中修复),阻止容器从重新启动的Application Master / Job Manager容器重新启动。 有关详细信息,请参见FLINK-4142。 对于YARN上的高可用性设置,我们建议至少使用Hadoop 2.5.0。

Example: Highly Available YARN Session

Configure HA mode and ZooKeeper quorum in conf/flink-conf.yaml:

        high-availability: zookeeper

        high-availability.zookeeper.quorum: localhost:2181

        high-availability.storageDir: hdfs:///flink/recovery

        high-availability.zookeeper.path.root: /flink

        yarn.application-attempts: 10

Configure ZooKeeper server in conf/zoo.cfg (currently it’s only possible to run a single ZooKeeper server per machine):

        server.0=localhost:2888:3888

Start ZooKeeper quorum:

        $ bin/start-zookeeper-quorum.sh

Starting zookeeper daemon on host localhost.

Start an HA-cluster:

        $ bin/yarn-session.sh -n 2

Configuring for Zookeeper Security


如果ZooKeeper使用Kerberos在安全模式下运行,则可以根据需要在flink-conf.yaml中覆盖以下配置:


3

有关用于Kerberos安全性的Flink配置的更多信息,请参见此处。 您还可以在此处找到有关Flink如何在内部设置基于Kerberos的安全性的更多详细信息。

Zookeeper Versions

Flink随附了用于3.4和3.5的单独Zookeeper客户端,其中3.4位于发行版的lib目录中,因此默认使用,而3.5放置在opt目录中。

3.5客户端允许您通过SSL保护Zookeeper连接,但可能不适用于3.4- Zookeeper安装。

您可以通过将任一jar放在lib目录中来控制Flink使用哪个版本。

Bootstrap ZooKeeper

如果没有正在运行的ZooKeeper安装,则可以使用Flink附带的帮助程序脚本。

conf / zoo.cfg中有一个ZooKeeper配置模板。 您可以配置主机以在server.X条目上运行ZooKeeper,其中X是每个服务器的唯一ID:


脚本bin / start-zookeeper-quorum.sh将在每个配置的主机上启动ZooKeeper服务器。 启动的进程通过Flink包装器启动ZooKeeper服务器,该包装器从conf / zoo.cfg中读取配置,并确保设置一些必需的配置值以方便使用。 在生产设置中,建议管理您自己的ZooKeeper安装。


原文链接 https://ci.apache.org/projects/flink/flink-docs-release-1.11/zh/ops/jobmanager_high_availability.html

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