002 基于 Standalone 模式部署 Flink 服务

这将是一套完整详细且持续更新的、长期维护的 原创 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 服务架构图
    002 基于 Standalone 模式部署 Flink 服务_第1张图片
    Flink 服务架构图.png

2.1.2 基于 Standalone 模式部署服务

了解了 Flink 服务的基本概念后,开始根据如下步骤部署服务吧。

在本例中,将在 3 台虚拟机中部署的 Flink 服务如表2-1 所示。

  • 表2-1 Standalone 模式下部署的 Flink 服务的分布

    linux01 linux02 linux03
    JobManager - -
    - TaskManager TaskManager
  1. 解压 Flink 压缩包

    将Flink压缩包上传至第一台虚拟机的 ~/softwares/installations 目录后,使用如下命令进行解压:

    $ tar -zxf tar -zxf ~/softwares/installations/flink-1.8.1-bin-scala_2.11.tgz -C ~/modules/
    
  2. 修改配置文件

    • 修改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 服务。

  1. 合理配置依赖包

    • 添加 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
    
  2. 分发 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 安装包。

  3. 启动 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 后台管理页面
    002 基于 Standalone 模式部署 Flink 服务_第2张图片
    Flink 后台管理页面.png

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
    002 基于 Standalone 模式部署 Flink 服务_第3张图片
    提交Flink Job.png

在上述提交 Job 的命令中,是最简化的形式,开发者在提交任务时,还可以通过其他参数配置 Job 运行时的资源、状态、功能等信息。我们将在后续的章节中进行说明。

2.3 本章小结

本章基于 Standalone 模式部署了 Flink 服务,在此过程中,忽略了配置文件中的若干可配置项,并简述了相关概念。目的在于先将集群环境梳理清楚,完成集群搭建,循序渐进捋清前置知识。下一章,我们将基于 YARN 模式部署 Flink 服务。


  • IT全栈公众号:
    002 基于 Standalone 模式部署 Flink 服务_第4张图片
    IT全栈营二维码.png
  • QQ大数据技术交流群:476966007:
    002 基于 Standalone 模式部署 Flink 服务_第5张图片
    大数据交流群二维码.png

你可能感兴趣的:(002 基于 Standalone 模式部署 Flink 服务)