Apache Flink 零基础入门(二十)Flink部署与作业的提交

之前我们都是基于Idea在本地进行开发,这种方式很适合开发以及测试,但是开发完之后,如何提交到服务器中运行?

Flink单机部署方式

本地开发和测试过程中非常有用,只要把代码放到服务器直接运行。

前置条件

jdk8
maven3
下载解压Flink,这里直接下载源码编译,直接从github上下载源码https://github.com/apache/flink/releases 选择1.8.1
然后解压到本地,解压后的文件夹如下:
在这里插入图片描述

编译

接下来我们需要编译这段源码。

mvn clean install -DskipTests -Dfast -Pvendor-repos -Dhadoop.version=2.6.0-cdh5.15.1

第一次编译需要花费很长时间,因为需要从网上下载一些依赖文件。

编译结果

编译成功后,会在当前目录下产生flink-dist/target/flink-1.8.1-bin文件夹,这个文件夹就是我们所需要的东西,把这个文件夹拷贝到服务器中就可以进行部署了。

单机模式部署

将flink-1.8.1-bin文件夹拷贝到服务器中,服务器中的目录如下:
在这里插入图片描述

启动服务

在这里插入图片描述
当前是stand-alone模式,输入jps可以查看:
在这里插入图片描述
可以在UI上面看到,默认ip是8081:
在这里插入图片描述

使用Flink跑一个WordCount程序

使用socket方式读入数据,然后统计数据wordcount
在服务器中开启socket:nc -lk 9999
然后运行命令:

./bin/flink run examples/streaming/SocketWindowWordCount.jar --port 9999

在这里插入图片描述
在WEB界面中可以查看任务:
在这里插入图片描述

测试数据

在nc终端输入数据(使用tab分割):
在这里插入图片描述

查看运行结果

在flink-1.8.1/log路径下,有一个flink--taskexecutor-.out文件,就是输出结果文件。
在这里插入图片描述

停止任务

可以在WEB界面上点击Running JOB,然后点击任务:
在这里插入图片描述
点击Cancel就可以取消这个任务了。这时,取消成功之后,可用slot就变为1了:
在这里插入图片描述

停止集群

使用命令./bin/stop-cluster.sh就可以了

Flink分布式standalone部署方式

我们在conf/flink-conf.yaml文件中配置主节点(jobmanager.rpc.address)的ip.
在conf/slaves文件中配置从节点(taskmanager)的ip

常用配置

jobmanager.rpc.address参数用来指向master节点的地址
jobmanager.heap.size 表示jobmanager节点可用的内存
taskmanager.heap.size表示taskmanager节点可用的内存
taskmanager.numberOfTaskSlots 每一个机器可用的CPU个数,决定了并行度
paraparallelism.default 表示任务的并行度 可以在代码层面覆盖
taskmanager.tmp.dirs taskmanager的临时数据存储目录

修改配置文件

修改conf/flink-conf.yaml文件:
jobmanager.rpc.address: swarm-manager(修改为本服务器的主机名)
修改conf/slaves文件:swarm-manager
使用命令./bin/start-cluster.sh启动集群,可以正常启动:
在这里插入图片描述
修改配置:
taskmanager.heap.size: 2048m
taskmanager.numberOfTaskSlots: 2
再次启动集群:
在这里插入图片描述
可以看到配置已经生效了。
这时再次使用命令nc -lk 9999 然后在另一个终端运行./bin/flink run examples/streaming/SocketWindowWordCount.jar --port 9999 开启一个任务。这时查看页面:
在这里插入图片描述
可以看到之前两个slots,现在已经用了一个,因为当前的并行度是1。

扩展和容错

现在我们输入jps命令时:
在这里插入图片描述
我们现在把TaskManagerRunner给Kill掉,然后在查看:
在这里插入图片描述
这时在查看Web页面:
在这里插入图片描述
可以看到都变成0了。
这时再启动taskmanager.sh
在这里插入图片描述
再次查看:
在这里插入图片描述

yarn方式部署

搭建Hadoop

下载Hadoop 2.6.0 解压,配置环境变量:
在这里插入图片描述
修改配置文件etc/hadoop/hadoop-env.sh ,配置java home export JAVA_HOME=/usr/jdk1.8.0_101
修改配置文件etc/hadoop/core-site.xml,配置:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://swarm-manager:9000</value>
    </property>
</configuration>

修改配置文件etc/hadoop/hdfs-site.xml,配置:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/iie4bu/app/tmp</value>
    </property>
</configuration>

修改配置文件slave 内容:swarm-manager
接下来配置yarn-site.xml

修改mapred-site.xml.template文件名为:mapred-site.xml ,内容如下:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

格式化hdfs,使用命令~/app/hadoop-2.6.0/bin$ ./hdfs namenode -format
启动hadoop,使用命令~/app/hadoop-2.6.0/sbin$ ./start-all.sh
使用jps查看启动状态:
在这里插入图片描述
使用WEB页面进行查看
首先查看hdfs:http://192.168.170.170:50070
在这里插入图片描述
在这里插入图片描述
然后查看yarn:http://192.168.170.170:8088

测试一下

测试HDFS :
在这里插入图片描述
没有问题!

Flink On Yarn

方式一:Flink初始化的时候就申请一个资源,并且作为一个服务常驻在yarn中。Flink 的job共用一个yarn session。资源不够用时,出现排队情况。
从flink1.8之后hadoop相关jar包需要额外下载:
在这里插入图片描述
将下载后的flink-shaded-hadoop-2-uber-2.6.5-7.0.jar文件放到 flink-1.8.1/lib目录下,然后可以输入 ./bin/yarn-session.sh --help
./bin/yarn-session.sh参数:

-n  taskmanager的数量
-jm jobmanager的内存
-tm taskmanager的内存

方式二: 每次提交Flink job都申请一个yarn session,用完之后释放。任务之间不相互影响,任务之间是相互独立的。
在这里插入图片描述

使用方式一

启动一个常服务./bin/yarn-session.sh -n 1 -jm 1024m -tm 4096m表示启动job manager是1GB的堆内存,task manager是4GB的堆内存。
使用这个命令之后,打开yarn页面,http://192.168.170.170:8088/cluster
在这里插入图片描述

使用方式二:./bin/flink run -m yarn-cluster -p 4 -yjm 1024m -ytm 4096m ./examples/batch/WordCount.jar

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Apache Flink 是一个分布式流处理框架,它可以处理实时数据流和批处理数据。如果你想学习 Apache Flink,可以从以下几个方面入手: 1. 学习 Flink 的基本概念和架构,包括数据流、数据源、数据转换、数据汇聚等。 2. 学习 Flink 的编程模型和 API,包括 DataSet API 和 DataStream API。 3. 学习 Flink部署和配置,包括集群部署和单机部署。 4. 学习 Flink 的应用场景和实践,包括实时数据处理、批处理、机器学习等。 如果你是零基础入门,可以先从 Flink 的官方文档入手,了解 Flink 的基本概念和架构,然后通过实践来深入学习 Flink 的编程模型和 API。同时,可以参考一些 Flink 的教程和案例,加深对 Flink 的理解和应用。 ### 回答2: Apache Flink是一个开源的流处理框架,能够对流数据进行实时处理和分析。它提供了多种处理功能,如数据流的转换、聚合、窗口计算等。在大数据时代,实时处理已经成为了一个不可或缺的需求,因此学习和掌握Flink框架具有非常重要的意义。 下面是Flink零基础入门指南: 1. Flink的运行环境 Flink的运行环境可以分为本地模式和集群模式。在本地模式下,可以通过Flink命令自动启动一个Flink进程,进行代码测试与调试工作;在集群模式下,需要先构建一个Flink集群,然后在集群中启动Flink程序。 2. Flink的数据模型 Flink的数据模型包括了DataStream和DataSet两种。DataStream主要用于流计算,而DataSet主要用于批处理计算。在Flink中,数据是以并行的数据流或批次进行传输的。 3. Flink的操作符 Flink中的操作符包括了以下几种:Source(数据源),Transformation(转换操作)和Sink(数据输出)。Source用于获取数据源,Transformation用于数据处理,而Sink则是将计算结果输出到外部。 4. Flink的核心API Flink的核心API包括了DataStream API和DataSet API两种。DataStream API主要用于流数据处理,而DataSet API主要用于批处理数据。其中,DataStream API提供了多种类型的转换操作,如map、filter等;而DataSet API则提供了多种聚合和关联操作,如group、join等。 5. Flink的窗口函数 在流处理中,为了处理非无限的数据流,通常需要将数据按照一定的规则分成有限大小的窗口。而Flink的窗口函数就是用于实现这个功能的。Flink提供了多种窗口函数,如滚动窗口、滑动窗口、会话窗口等。 总之,掌握Flink框架具有重要的意义,尤其是对于需要进行实时大数据处理的行业。通过对Flink的API和窗口函数的了解,可以更好地了解其中的分布式计算和容错机制,从而更好地运用Flink进行大数据实时计算。 ### 回答3: 作为一种分布式流式计算框架,Apache Flink 不仅可以处理批处理任务,在处理实时数据的时候也十分出色。而且,Apache Flink 在容错性、可伸缩性和高效性方面都表现得相当优秀,并且它具有易于使用的 Java API 和 SQL 接口。 如果您是想要学习 Apache Flink零基础用户,以下是一些可以帮助您入门的建议。 1.去官网了解 Flink 的基本知识 在开始学习 Apache Flink 之前,建议去官网先了解一下 Flink 基本的架构和使用方法,以及相关的概念和体系架构。这样可以帮助您更快地开始构建您自己的 Flink 应用程序。 2.学习 Flink API Flink 提供了三种类型的 API:DataStream API、DataSet API 和 Table/SQL API。其中,DataStream API 和 DataSet API 是 Flink 的核心 API,可以通过编写 Java 或 Scala 代码来使用。而 Table/SQL API 则是最近推出的一种新型 API,可以更方便地处理 SQL 查询。 3.使用文档和示例 Apache Flink 官网提供了丰富的文档和示例代码,以帮助用户更好地理解和应用 Flink。通过按照教程操作,并对示例代码进行修改和调试,可以帮助您更快地了解如何使用 Flink 并使其工作。 4.尝试使用 Flink 社区现成的解决方案 Apache Flink 的社区已经开发了许多解决方案和应用场景,比如 FlinkML、FlinkCEP、FlinkGraph 等等,可以用来解决不同的业务需求和数据处理问题。尝试使用这些现成的解决方案,并在实践中不断优化和修改,可以巩固您对 Flink 的理解和使用。 总之,学习 Apache Flink 需要一定的时间和耐心,但掌握 Flink 的核心概念和 API 可以帮助您更轻松地构建快速、可靠的数据流处理系统。尝试多练习并与 Flink 社区互动,在实践中不断探索 Flink 系统的优化和升级,相信您一定能在 Flink 技术上迅速成长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值