购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 独立模式

独立模式(Standalone)是部署Flink最基本也是最简单的方式:所需要的所有Flink组件,都只是操作系统上运行的一个JVM进程。

独立模式是独立运行的,不依赖任何外部资源管理平台;当然独立也是有代价的,如果资源不足,或者出现故障,没有自动扩展或重分配资源的保证,必须手动处理。所以独立模式一般只用在开发测试或作业非常少的场景下。

另外,我们也可以将独立模式的集群放在容器中运行。Flink提供了独立模式的容器化部署方式,可以在Docker或Kubernetes(简称K8s)上进行部署。

3.3.1 会话模式部署

可以发现,独立模式的特点是不依赖外部资源管理平台,而会话模式的特点是先启动集群、后提交作业。所以,我们在3.1节用的就是独立模式的会话模式部署。

3.3.2 单作业模式部署

在3.2.2节中我们提到,Flink本身无法直接以单作业方式启动集群,一般需要借助资源管理平台。所以Flink的独立(Standalone)集群并不支持单作业模式部署。

3.3.3 应用模式部署

在应用模式下不会提前创建集群,所以不能调用start-cluster.sh脚本。我们可以使用同样在bin目录下的standalone-job.sh来创建一个JobManager。

具体步骤如下所示。

(1)进入Flink的安装路径下,将应用程序的jar包放到lib/目录下。

(2)执行以下命令,启动JobManager。

这里我们直接指定作业入口类,脚本会到lib目录扫描所有的jar包。

(3)同样是使用bin目录下的脚本,启动TaskManager。

(4)如果希望停掉集群,同样可以使用脚本,命令如下。

3.3.4 高可用

分布式除了提供高吞吐,另一大好处就是有更好的容错性。对Flink而言,一般会有多个TaskManager,即使运行时出现故障,也不需要将全部节点重启,只要尝试重启故障节点就可以了。但是我们发现,对一个作业而言,管理它的JobManager却只有一个,这同样有可能出现单点故障。为了实现更好的可用性,我们需要JobManager做一些主备冗余,这就是所谓的高可用(High Availability,HA)。

我们可以通过配置,让集群在任何时候都有一个主JobManager和多个备用JobManager,如图3-13所示,这样主节点故障时就由备用节点来接管集群,接管后作业就可以继续正常运行。主备JobManager实例之间没有明显的区别,每个JobManager都可以充当主节点或备节点。

图3-13 一个主JobManager和多个备用JobManager

具体配置如下所示。

(1)进入Flink安装路径的conf目录下,修改配置文件:flink-conf.yaml,增加如下配置。

(2)修改配置文件:masters,配置备用JobManager列表。

(3)分发修改后的配置文件到其他节点服务器。

(4)在/etc/profile.d/my_env.sh中配置环境变量。

注意:

· 需要提前保证HAOOP_HOME环境变量配置成功。

· 分发到其他节点。

具体部署方法如下所示。

(1)启动HDFS集群和Zookeeper集群。

(2)执行以下命令,启动standalone HA集群。

(3)可以分别访问两个备用JobManager的Web UI页面。

(4)在zkCli.sh中查看谁是领导者(leader)。

“杀死”hadoop102上的JobManager进程,再次查看谁是领导者。

注意:不管是不是领导者,从Web UI上是看不到区别的,都可以提交应用。 zk/ljF3kHYJegVlC3b9tTxX2wrtVutihCvUGLQRlT5Ly3FIMIdPoBrpf9UuK/hsy

点击中间区域
呼出菜单
上一章
目录
下一章
×