这将是一套完整详细且持续更新的、长期维护的 原创 Flink系列教程、文档,其中会包含各种商用实例详解、Flink源码讲解、机制剖析、周边组件讲解等,旨在帮助开发者快速融入Flink开发,或作为工具文档参阅。也希望更多的开发者可以参与到大数据相关的技术讨论中来,共同商讨疑难杂症,丰富社区。——尽际
本文标题: 基于 Standalone 模式部署 Flink 服务
文章作者: 尽际
发布时间: 2019年07月25日 - 23:38:30
最后更新: 2019年07月25日 - 23:38:30
原始链接:
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。
二、基于 Standalone 模式部署 Flink 服务
通过上一篇文章,我们已经下载了Flink 1.8.1版本的安装包到本地磁盘:
- flink-1.8.1-bin-scala_2.11.tgz
- flink-shaded-hadoop-2-uber-2.7.5-7.0.jar
然后将其上传至虚拟机中。
接下来,开始部署 Flink 服务。在此过程中,会穿插Flink相关概念的讲解。
2.1 基于 Standalone 模式部署 Flink 服务
本教程会基于两种模式(Standalone 和 YARN)部署 Flink 服务。
本章首先使用 Standalone 模式部署 Flink 服务。Standalone 是 Flink 自带的服务管理模式,不需要依赖于其他分布式组件,也不需要提前安装其他第三方服务,从而达到开箱即用的效果。
2.1.1 Flink 服务介绍
在部署 Flink 服务之前,我们需要提前了解如下两个基本概念:
-
客户端(Client)
向 Flink 集群提交 Job 的客户端。并可以持续与 Flink 集群进行 RPC 通信,从而持续获取 Job 的运行状态。
-
主服务(JobManager)
Flink 主服务 的名称为 JobManager。它是一个 Java 进程。
该服务所在的节点(宿主机)称之为 Flink 主节点(Master)。
该服务主要用来接收用户(Client 端)提交的Flink Job(数据分析任务),并将 Job 调度分配到从服务上运行。
-
从服务(TaskManager)
Flink 从服务 的名称为 TaskManager,它也是一个Java进程。
该服务所在的节点(宿主机)称之为 Flink 从节点(Woker)。
该服务主要用来运行 JobManager 派发过来的 Flink Job。
在部署 Flink 服务阶段,暂且不需要了解太多关于任务运行的概念。后续再慢慢展开介绍。此处将展示 Flink 服务的官方架构如图2-1 所示,读者暂且粗略了解即可。
-
图2-1 Flink 服务架构图
2.1.2 基于 Standalone 模式部署服务
了解了 Flink 服务的基本概念后,开始根据如下步骤部署服务吧。
在本例中,将在 3 台虚拟机中部署的 Flink 服务如表2-1 所示。
-
表2-1 Standalone 模式下部署的 Flink 服务的分布
linux01 linux02 linux03 JobManager - - - TaskManager TaskManager
-
解压 Flink 压缩包
将Flink压缩包上传至第一台虚拟机的 ~/softwares/installations 目录后,使用如下命令进行解压:
$ tar -zxf tar -zxf ~/softwares/installations/flink-1.8.1-bin-scala_2.11.tgz -C ~/modules/
-
修改配置文件
-
修改flink-conf.yaml文件
修改 conf 目录下的 flink-conf.yaml 配置文件,涉及到修改的内容如下所示:
jobmanager.rpc.address: linux01
该项配置是指将笔者所使用的第一台虚拟机作为 Master 节点,即,第一台机器会开启 Flink 的JobManager服务。
提示:如果Master和Worker机器上没有配置JAVA_HOME环境变量,需要在 flink-conf.yaml 中通过 env.java.home 变量指定JAVA的安装目录。
-
-
修改slaves文件
修改 conf 目录下的 slaves 配置文件,修改后的内容如下所示:
linux02 linux03
该文件中的每一行是一个 IP 或 主机名,代表稍后会在这些节点上开启 TaskManager 服务。
-
合理配置依赖包
-
添加 Flink-Table 依赖包
在生产环境中,开发者开发的 Flink 应用程序可能会伴随 Table API 的操作(支持以 SQL 的方式进行数据分析),因此,开发者需要将 Flink 安装目录下的 opt 中的 flink-table_2.11-1.8.1.jar 包拷贝到 lib 目录中。操作命令如下所示:
$ pwd /home/admin/modules/flink-1.8.1 $ cp -a opt/flink-table_2.11-1.8.1.jar lib/
-
添加 Hadoop 依赖包
将之前下载好的 flink-shaded-hadoop-2-uber-2.7.5-7.0.jar 包移动至 Flink 安装目录的 lib 目录中,使 Flink 能够支持对 Hadoop 的操作。操作命令如下所示:
$ pwd /home/admin/modules/flink-1.8.1 $ cp -a ~/softwares/installations/flink-shaded-hadoop-2-uber-2.7.5-7.0.jar ./lib/
以上操作完成后,即可看到 lib 目录下的内容如下所示:
$ ll lib/ flink-dist_2.11-1.8.1.jar flink-shaded-hadoop-2-uber-2.7.5-7.0.jar flink-table_2.11-1.8.1.jar log4j-1.2.17.jar slf4j-log4j12-1.7.15.jar
-
-
分发 Flink 安装目录
以上步骤配置完成后,即可分发该安装包到其他节点,操作命令如下:
$ pwd /home/admin/modules scp -r flink-1.8.1/ admin@linux02:/home/admin/modules/ scp -r flink-1.8.1/ admin@linux03:/home/admin/modules/
提示:在进行上述操作时,最好配置完成集群各个节点之间的 SSH 无秘钥访问。其中 scp -r 表示远程分发目录到后面的节点对应目录中。
分发完成后,即可在其他节点对应目录中查看到 Flink 安装包。
-
启动 Flink 服务
接下来,即可启动 Flink 集群,操作命令如下:
$ pwd /home/admin/modules/flink-1.8.1 $ bin/start-cluster.sh Starting cluster. Starting standalonesession daemon on host linux01. Starting taskexecutor daemon on host linux02. Starting taskexecutor daemon on host linux03.
稍等片刻,我们即可通过 jps 分别查看到 3 台节点的进程如下:
----------------admin@linux01----------------- 4132 Jps 4038 StandaloneSessionClusterEntrypoint ----------------admin@linux02----------------- 3057 Jps 2951 TaskManagerRunner ----------------admin@linux03----------------- 2977 TaskManagerRunner 3032 Jps
现在,可以通过浏览器,访问 Flink Master 节点的地址进入后台管理页面,查看启动的集群服务。
后台页面默认地址如下:
http://linux01:8081
提示:如果在 Windows 中通过浏览器访问虚拟机中的页面服务,可以通过虚拟机的 IP 地址访问如果想要通过虚拟机的主机名访问,则需要将虚拟机的 IP 地址与虚拟机的主机名配置到 Windows 中的 C:/windows/system32/driver/etc/hosts文件中。
查看到的页面效果如图2-2 所示。
-
图2-2 Flink 后台管理页面
2.2 基于 Standalone 模式提交 Flink Job
完成上述部署后,可通过运行官方提供的一个案例来检测集群是否能够正常工作。运行官方案例的命令如下:
$ pwd
/home/admin/modules/flink-1.8.1
$ bin/flink run ./examples/batch/WordCount.jar
正常情况下,提交上述命令后,前往 Flink 后台管理页面,即可看到如图2-3 所示内容。
-
图2-3 提交的 Flink Job
在上述提交 Job 的命令中,是最简化的形式,开发者在提交任务时,还可以通过其他参数配置 Job 运行时的资源、状态、功能等信息。我们将在后续的章节中进行说明。
2.3 本章小结
本章基于 Standalone 模式部署了 Flink 服务,在此过程中,忽略了配置文件中的若干可配置项,并简述了相关概念。目的在于先将集群环境梳理清楚,完成集群搭建,循序渐进捋清前置知识。下一章,我们将基于 YARN 模式部署 Flink 服务。