【基础篇】四、本地部署Flink

这篇具有很好参考价值的文章主要介绍了【基础篇】四、本地部署Flink。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Flink的常见三种部署方式:

  • 独立部署(Standalone部署)
  • 基于K8S部署
  • 基于Yarn部署

1、本地独立部署会话模式的Flink

独立部署就是独立运行,即Flink自己管理Flink资源,不依靠任何外部的资源管理平台,比如K8S或者Hadoop的Yarn,当然,独立部署的代价就是:如果资源不足,或者出现故障,没有自动扩展或重分配资源的保证,必须手动处理,生产环境或者作业量大的场景下不建议采用独立部署。

  • 下载安装包
# 下载地址:
https://archive.apache.org/dist/flink/flink-1.17.0/
flink-1.17.0-bin-scala_2.12.tgz
  • 上传安装包到Linux节点服务器上的某目录:
/opt/moudle/flink-1.17.0-bin-scala_2.12.tgz
  • 解压
tar -zxvf flink-1.17.0-bin-scala_2.12.tgz -C /opt/module/
  • 启动,进入安装目录执行start-cluster.sh
[code9527@node01 flink-1.17.0]  bin/start-cluster.sh

【基础篇】四、本地部署Flink,Flink,flink,java,linux,本地部署

  • 访问WebUI,对Flink集群进行监控管理
http://IP:8081

【基础篇】四、本地部署Flink,Flink,flink,java,linux,本地部署

独立安装会话模式的Flink成功,控制台中,可以看到,TaskManager的数量为1(本来就一台机器,一个节点),由于默认每个TaskManager的Slot数量为1,所以总Slot数和可用Slot数都为1。最后,可停止集群:

[code9527@node01 flink-1.17.0]  /bin/stop-cluster.sh

可能遇到的坑:

坑1:

start-cluster.sh执行报错:Please specify JAVA_HOME. Either in Flink config ./conf/flink-conf.yaml or as system-wide JAVA_HOME.

原因:未安装Java环境

yum install -y java-1.8.0-openjdk.x86_64

坑2:

http://IP:8081访问不通

处理下防火墙:

firewall-cmd --add-port 8081/tcp --permanent

firewall-cmd --reload

2、本地独立部署会话模式的Flink集群

上面部署的单机Flink,当你有多台服务器,要部署一个集群时,大体流程和上面一样。假设有三台服务器,角色分配规划如下:

【基础篇】四、本地部署Flink,Flink,flink,java,linux,本地部署

节点服务器 node-01 node-02 node-03
角色 JobManager+TaskManager TaskManager TaskManager

主节点上的操作:

  • 上传安装包到Linux节点服务器上的某目录:
/opt/moudle/flink-1.17.0-bin-scala_2.12.tgz
  • 解压
tar -zxvf flink-1.17.0-bin-scala_2.12.tgz -C /opt/module/
  • 进入解压目录/conf目录,修改flink-conf.yaml文件
vi flink-conf.yaml

# 修改内容如下:
# JobManager节点地址,我写了IP,这里IP或者hostname都行
jobmanager.rpc.address: node-01  
jobmanager.bind-host: 0.0.0.0
rest.address: node-01
rest.bind-address: 0.0.0.0
# TaskManager节点地址.需要配置为当前机器名
taskmanager.bind-host: 0.0.0.0    
taskmanager.host: node-01

  • 其他可选配置:在flink-conf.yaml文件中还可以对集群中的JobManager和TaskManager组件进行优化配置
- jobmanager.memory.process.size:对JobManager进程可使用到的全部内存进行配置,包括JVM元空间和其他开销,默认为1600M,可以根据集群规模进行适当调整。

- taskmanager.memory.process.size:对TaskManager进程可使用到的全部内存进行配置,包括JVM元空间和其他开销,默认为1728M,可以根据集群规模进行适当调整。

- taskmanager.numberOfTaskSlots:对每个TaskManager能够分配的Slot数量进行配置,默认为1,可根据TaskManager所在的机器能够提供给Flink的CPU数量决定。所谓Slot就是TaskManager中具体运行一个任务所分配的计算资源。

- parallelism.default:Flink任务执行的并行度,默认为1。优先级低于代码中进行的并行度配置和任务提交时使用参数指定的并行度数量。
  • 修改workers文件,指定干活儿的节点TaskManager的信息,这里是node01和另外两台主机02、03
[code9527@node01 conf] vi workers

# 修改如下内容:
node-01
node-02
node-03

# 用IP也行,这就是上面单机我也用用IP,而不用默认localhost的原因,多节点下看着乱得很
  • 修改masters文件
vi masters

# 修改内容,hostname也行
node-01:8081

至于两个Task的从节点,直接把上面改好的Flink安装目录拷贝或分发给另外两个节点服务器:

# node02、node03上建好/opt/moudle/flink-1.17.0/目录后,01节点执行
scp /opt/moudle/flink-1.17.0 root@node02:/opt/moudle/flink-1.17.0/
scp /opt/moudle/flink-1.17.0 root@node03:/opt/moudle/flink-1.17.0/

再修改node02的taskmanager.host:

# conf目录下
vim flink-conf.yaml

# 改为:
taskmanager.host: node02  # IP或hostname

再修改node03的taskmanager.host:

# conf目录下
vim flink-conf.yaml

# 改为:
taskmanager.host: node03  # IP或hostname

回node01启动,执行start-cluster.sh

[code9527@node01 flink-1.17.0]  bin/start-cluster.sh

此时,在控制台,应该可以看到当前集群的TaskManager数量为3,总Slot数和可用Slot数都为3

3、向Flink集群提交作业

上一篇,写了读取socket发送的单词并统计单词个数的程序,这里演示将它提交到集群中年去执行,首先将程序打包,在pom.xml中添加打包插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.2.4</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <artifactSet>
                            <excludes>
                                <exclude>com.google.code.findbugs:jsr305</exclude>
                                <exclude>org.slf4j:*</exclude>
                                <exclude>log4j:*</exclude>
                            </excludes>
                        </artifactSet>
                        <filters>
                            <filter>
                                <!-- Do not copy the signatures in the META-INF folder.
                                Otherwise, this might cause SecurityExceptions when using the JAR. -->
                                <artifact>*:*</artifact>
                                <excludes>
                                    <exclude>META-INF/*.SF</exclude>
                                    <exclude>META-INF/*.DSA</exclude>
                                    <exclude>META-INF/*.RSA</exclude>
                                </excludes>
                            </filter>
                        </filters>
                        <transformers combine.children="append">
                            <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer">
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

打包,指令或者IDEA页面上操作:

mvn clean
mvn package

打包完成后,在target目录下即可找到所需JAR包,JAR包会有两个,一个原始包,一个带依赖的包(类似SpringBoot打包插件),因为集群中已经具备任务运行所需的所有依赖,所以建议使用原始包original-xxx.jar。下面打开Flink的控制台,在右侧导航栏点击“Submit New Job”,然后点击按钮“+ Add New”,选择要上传运行的JAR包:

【基础篇】四、本地部署Flink,Flink,flink,java,linux,本地部署

点击该JAR包,出现任务配置页面,进行相应配置:

【基础篇】四、本地部署Flink,Flink,flink,java,linux,本地部署
点Submit提交作业(点Submit没反应参考【这篇】),导航栏的Running Jobs可查看程序运行列表情况

【基础篇】四、本地部署Flink,Flink,flink,java,linux,本地部署

在Flink程序里写的Linux主机里开启端口监听,并在socket端口中输入一些字符串:

【基础篇】四、本地部署Flink,Flink,flink,java,linux,本地部署

先点击Task Manager侧边栏,再切StdOut的tab页,点刷新,可以看到运行成功:

【基础篇】四、本地部署Flink,Flink,flink,java,linux,本地部署

先取消任务,接下来用命令行提交任务:

【基础篇】四、本地部署Flink,Flink,flink,java,linux,本地部署
使用命令行提交,会话模式下还是先启动集群:

bin/start-cluster.sh

进入flink安装目录/opt/module/flink-1.17.0,把前面的jar包上传到该目录下,执行flink run指令提交作业

bin/flink run -m 10.4.95.27:8081 -c com.plat.count.SocketStreamWordCount ./FlinkService-1.0-SNAPSHOT.jar

#  -m指定了提交到的JobManager
# -c指定了入口类

提交成功:

【基础篇】四、本地部署Flink,Flink,flink,java,linux,本地部署
此时web控制台还是可以看到同样的效果,且/opt/module/flink-1.17.0/log路径中,也可以查看TaskManager的输出:

[root@node-105-69 log] cat flink-atguigu-standalonesession-0-node-105-69.out

(hello,1)
(hello,2)
(flink,1)
(hello,3)
(scala,1)

4、Standalone方式部署单作业模式

部署不了单作业模式,前面说了,Standalone方式下,Flink并不支持单作业模式部署。因为单作业模式需要借助一些资源管理平台,比如K8S

5、Standalone方式部署应用模式的Flink

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

# 先停掉会话模式
[root@node-105-69 flink-1.17.0] bin/stop-cluster.sh
# 继续开启对应的Linux主机的netcat
nc -lk 9527

将上面的安装包放到flink的lib目录下

[root@node-105-69 flink-1.17.0] mv FlinkService-1.0-SNAPSHOT.jar lib/

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

[root@node-105-69 flink-1.17.0] bin/standalone-job.sh start --job-classname com.plat.count.SocketStreamWordCount

启动TaskManager:(独立部署,这个时候干活的Task是手动起的)

[root@node-105-69 flink-1.17.0] bin/taskmanager.sh start

发送数据到9527端口:

【基础篇】四、本地部署Flink,Flink,flink,java,linux,本地部署

查看控制台:

【基础篇】四、本地部署Flink,Flink,flink,java,linux,本地部署

停掉集群:文章来源地址https://www.toymoban.com/news/detail-718426.html

bin/taskmanager.sh stop
bin/standalone-job.sh stop

到了这里,关于【基础篇】四、本地部署Flink的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 1、Flink1.12.7或1.13.5详细介绍及本地安装部署、验证

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年02月05日
    浏览(32)
  • Flink入门——基础知识,Linux安装,Docker安装

    在linux部署Flink需要先安装Java的JDK。 Flink的安装包,需要到官网先下载。 官网下载地址:https://flink.apache.org/downloads/ 各个版本下载地址:https://dlcdn.apache.org/flink/ Flink相关网站如下: flink官网学习地址:https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/ flinkCD

    2024年02月22日
    浏览(39)
  • Apache Flink连载(十四):Flink 本地模式开启WebUI

    🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客  🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。  🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

    2024年02月03日
    浏览(43)
  • Flink本地checkpoint测试

    在本地IDEA测试中,使用本地文件存储系统,作为checkpoint的存储系统,将备份数据存储到本地文件中,作业停止后,从本地备份数据启动Flink程序。 主要分为两步: 1)备份数据 2)从备份数据启动 备份数据的配置,和使用HDFS文件体统类似,只不过路径填写成本地文件系统的

    2024年02月15日
    浏览(41)
  • 【Flink系列】部署篇(一):Flink集群部署

    主要回答以下问题: Flink集群是由哪些组件组成的?它们彼此之间如何协调工作的? 在Flink中job, task, slots,parallelism是什么意思?集群中的资源是如何调度和分配的? 如何搭建一个Flink集群?如何配置高可用服务?如何使用外部文件系统? Flink的核心组件包含客户端,jobmanag

    2023年04月09日
    浏览(46)
  • 【Flink】1.Flink集群部署

    Flink可以部署于各种各样的集群之中,比如Flink自己的standalone集群(不依赖于其他资源调度框架,是Flink自带的),flink on yarn集群等。而不管是standalone还是flink on yarn都属于集群,还有一种特殊的单机flink——local。 Flink真正用来做执行操作的叫做worker,进程在不同的环境模式

    2024年02月13日
    浏览(37)
  • [Flink04] Flink部署实践

        Flink部署支持三种模式:本地部署、Standalone部署、Flink on Yarn部署。     独立(Standalone)模式由Flink自身提供资源,无需其他框架,这种方式降低了和其他第三方资源框架的耦合性,独立性非常强。但Flink 是大数据计算框架,不是资源调度框架,这并不是它的强项;所以

    2024年02月20日
    浏览(32)
  • Flink本地运行WebUI日志问题

    前几天在本地开发调试Flink程序时,在WebUI页面无法查看jobManager日志或者taskManager日志,点击会在控制台报如下错误: 解决办法如下: 1、引入日志配置,包括pom文件中的依赖和 src/main/resources 目录下的日志文职文件。下面以log4j2.xml为例展示日志配置: 2、在flink程序开始初始

    2024年02月12日
    浏览(72)
  • 在IDEA本地开发时Flink CDC和Flink的guava版本冲突解决办法

    使用Flink CDC 2.2.0版本的时候,会报ThreadFactoryBuilder这个类找不到的错误,如下所示: 因为Flink CDC使用的是guava版本是18.0-13.0,如下所示: 而Flink 1.14.4使用的guava版本是30.1.1-jre-14.0,如下所示: 但是项目中会使用30.1.1-jre-14.0版本的guava,所有会找不到guava 18.0-13.0这个版本,所以

    2023年04月08日
    浏览(33)
  • 【Flink-1.17-教程】-【二】Flink 集群搭建、Flink 部署、Flink 运行模式

    集群规划: 具体安装部署步骤如下: 1、下载并解压安装包 (1)下载安装包 flink-1.17.0-bin-scala_2.12.tgz,将该 jar 包上传到 hadoop102 节点服务器的 /opt/software 路径上。 (2)在 /opt/software 路径上解压 flink-1.17.0-bin-scala_2.12.tgz 到 /opt/module 路径上。 2、修改集群配置 (1)进入 conf 路

    2024年01月18日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包