Flink学习笔记(三)Flink安装部署

集群部署启动

Flink 是典型的 Master-Slave 架构的分布式数据处理框架,其中 Master 角色对应着JobManager,Slave 角色则对应 TaskManager。

  1. 下载安装包并解压
    进入 Flink 官网,下载 1.13.0 版本安装包 flink-1.13.0-bin-scala_2.12.tgz,注意对应 scala 版本为 scala 2.12 的安装包。
    解压至/opt/moudle下
tar -zxvf flink-1.13.0-bin-scala_2.12.tgz -C /opt/module/
  1. 修改集群配置

(1)进入 conf 目录下,修改 flink-conf.yaml 文件,修改 jobmanager.rpc.address 参数为hadoop102;

# JobManager 节点地址.
jobmanager.rpc.address: hadoop102

(2)修改 workers 文件,将另外两台节点服务器添加为本 Flink 集群的 TaskManager 节点,具体修改如下:

$ vim workers 
hadoop103
hadoop104

(3)配置修改完毕后,使用xsync将 Flink 安装目录发给另外两个节点服务器。

(4)启动集群,在 hadoop102 节点服务器上执行 start-cluster.sh 启动 Flink 集群:

	xxxxxxxxxx $ bin/start-cluster.shshell

在这里插入图片描述

(5)关闭集群,在 hadoop102 节点服务器上执行 stop-cluster.sh 启动 Flink 集群:

$ bin/stop-cluster.sh

提交作业

1. web UI提交

打包插件

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

引入插件之后,在Maven的Lifecycle里双击package进行打包,注意如果代码写完没有运行的话,要先compile编译。
在这里插入图片描述
在这里插入图片描述
上传到Flink:

show plan: 程序的运行流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KKfPyTsV-1653465033187)(C:\Users\Husheng\AppData\Roaming\Typora\typora-user-images\image-20220424150025298.png)]

提交后失败:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1KVzZETk-1653465033188)(C:\Users\Husheng\AppData\Roaming\Typora\typora-user-images\image-20220424150341959.png)]

查看日志:

原因:hadoop102上nc没有启动

[hty@hadoop102 conf]$ nc -lk 7777 

再次提交:

在TaskManagers中可以查看输出:

停掉Job:

2.命令行的提交

上传jar包,放到Flink的根目录下:

image-20220424152832546

当前主机hadoop102被nc占用,因此在hadoop103上进行提交,需要 -m指定到底要提交到哪台主机:

bin/flink run -m hadoop102:8081 -c com.atguigu.chapter02.StreamWordCount ./FlinkTutorial-1.0-SNAPSHOT.jar

提交成功:

关闭Job:

bin/flink cancel 82e029b6b487601bb6423c81048f0e1d  //最后是JobID

部署模式

  1. 会话模式(Session Mode)
    会话模式需要先启动一个集群,保持一个会话,在这个会话中 通过客户端提交作业。

  2. 单作业模式(Per-Job Mode)

    ​ 单作业模式就是严格的一对一,集群只为这个作业而生。同样由客户端运行应用程序,然后启动集群,作业被提交给 JobManager,进而分发给 TaskManager 执行。作业作业完成后,集群就会关闭,所有资源也会释放。这样一来,每个作业都有它自己的 JobManager管理,占用独享的资源,即使发生故障,它的 TaskManager 宕机也不会影响其他作业。这些特性使得单作业模式在生产环境运行更加稳定,所以是实际应用的首选模式。

    ​ 需要注意的是,Flink 本身无法直接这样运行,所以单作业模式一般需要借助一些资源管理框架来启动集群,比如 YARN、Kubernetes。

  3. 应用模式(Application Mode)
    不要客户端,直接把应用提交到 JobManger 上运行。而这也就代表着,需要为每一个提交的应用单独启动一个 JobManager,也就是创建一个集群。这 个 JobManager 只为执行这一个应用而存在,执行结束之后 JobManager 也就关闭了。

总结:在会话模式下,集群的生命周期独立于集群上运行的任何作业的生命周期,并且提交的所有作业共享资源。而单作业模式为每个提交的作业创建一个集群,带来了更好的资源隔离,这时集群的生命周期与作业的生命周期绑定。最后,应用模式为每个应用程序创建一个会话集群,在 JobManager 上直接调用应用程序的 main()方法。

Yarn模式

​ YARN 上部署的过程是:客户端把 Flink 应用提交给 Yarn 的 ResourceManager, Yarn 的 ResourceManager 会向 Yarn 的 NodeManager 申请容器。在这些容器上,Flink 会部署JobManager 和 TaskManager 的实例,从而启动集群。Flink 会根据运行在 JobManger 上的作业所需要的 Slot 数量动态分配 TaskManager 资源。

​ 在将 Flink 任务部署至 YARN 集群之前,需要确认集群是否安装有 Hadoop,保证 Hadoop版本至少在 2.2 以上,并且集群中安装有 HDFS 服务。

1. 会话部署模式

​ 1.1 启动集群

​ (1)启动 hadoop 集群(HDFS, YARN)。

​ (2)执行脚本命令向 YARN 集群申请资源,开启一个 YARN 会话,启动 Flink 集群。

bin/yarn-session.sh -nm test

可用参数解读:

  • -d:分离模式,如果你不想让 Flink YARN 客户端一直前台运行,可以使用这个参数,即使关掉当前对话窗口,YARN session 也可以后台运行。

  • -jm(–jobManagerMemory):配置 JobManager 所需内存,默认单位 MB。

  • -nm(–name):配置在 YARN UI 界面上显示的任务名。

  • -qu(–queue):指定 YARN 队列名。

  • -tm(–taskManager):配置每个 TaskManager 所使用内存。

YARN Session 启动之后会给出一个 web UI 地址以及一个 YARN application ID,如下所示,用户可以通过 web UI 或者命令行两种方式提交作业。

image-20220424163752142在这里插入图片描述

  1. 2 提交作业

    跟上文提交相同,也是上传jar包,将任务提交到已经开启的 Yarn-Session 中运行。

2. 单作业模式部署

执行命令提交作业:

bin/flink run -d -t yarn-per-job -c com.atguigu.wc.StreamWordCount FlinkTutorial-1.0-SNAPSHOT.jar

可以使用命令行查看或取消作业,命令如下:

$ ./bin/flink list -t yarn-per-job -Dyarn.application.id=application_XXXX_YY
$ ./bin/flink cancel -t yarn-per-job -Dyarn.application.id=application_XXXX_YY <jobId>

​ 这里的 application_XXXX_YY 是当前应用的 ID,是作业的 ID。注意如果取消作业,整个 Flink 集群也会停掉。

3.应用模式部署

(1)执行命令提交作业。

$ bin/flink run-application -t yarn-application -c com.atguigu.wc.StreamWordCount FlinkTutorial-1.0-SNAPSHOT.jar

(2)在命令行中查看或取消作业。

$ ./bin/flink list -t yarn-application -Dyarn.application.id=application_XXXX_YY
$ ./bin/flink cancel -t yarn-application -Dyarn.application.id=application_XXXX_YY <jobId>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半岛铁子_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值