Flink快速入门系列(3) | Flink基本配置和启动集群,提交任务和测试,命令行操作及其它部署方式

美图欣赏:
在这里插入图片描述

康完,漂酿的小姐姐,是否感觉写代码更有动力呢? 嘿嘿,欢迎小伙伴们在评论区留言呦~

一.基本配置和启动集群

1.1 基本配置

Standalone模式为代表

1.解压缩 flink-1.7.2-bin-hadoop27-scala_2.11.tgz
2.进入 conf 目录中修改flink/conf/flink-conf.yaml 文件:

红框里面改成自己的主机名或者IP

在这里插入图片描述

3.修改 /conf/master 文件:

4.修改 /conf/slave文件:
在这里插入图片描述

以上Standalone模式配置完成

5.flink-conf.yaml配置详解

①基础配置:

#根据节点所在的主机名自动配置主机名
#JobManager运行
jobmanager.rpc。地址:bigdata115

#可以访问JobManager的RPC端口
jobmanager.rpc.port:6123

#JobManager JVM的堆大小
jobmanager.heap.size:1024m

#TaskManager JVM的堆大小
taskmanager.heap.size:1024m

#每个TaskManager提供的任务插槽数。每个插槽运行一个并行管道。
taskmanager.numberOfTaskSlots:1

#用于未指定程序的并行性和其他并行性。
parallelism.default:1

②高可用性配置:

# 可以选择 'NONE' 或者 'zookeeper'.
# high-availability: zookeeper

# 文件系统路径,让 Flink 在高可用性设置中持久保存元数据
# high-availability.storageDir: hdfs:///flink/ha/

# zookeeper 集群中仲裁者的机器 ip 和 port 端口号
# high-availability.zookeeper.quorum: localhost:2181

# 默认是 open,如果 zookeeper security 启用了该值会更改成 creator
# high-availability.zookeeper.client.acl: open

③容错和检查点 配置

# 用于存储和检查点状态
# state.backend: filesystem

# 存储检查点的数据文件和元数据的默认目录
# state.checkpoints.dir: hdfs://namenode-host:port/flink-checkpoints

# savepoints 的默认目标目录(可选)
# state.savepoints.dir: hdfs://namenode-host:port/flink-checkpoints

# 用于启用/禁用增量 checkpoints 的标志
# state.backend.incremental: false

④web 前端配置

# 基于 Web 的运行时监视器侦听的地址.
#jobmanager.web.address: 0.0.0.0

#  Web 的运行时监视器端口
rest.port: 8081

# 是否从基于 Web 的 jobmanager 启用作业提交
# jobmanager.web.submit.enable: false

⑤Flink 集群安全配置

# 指示是否从 Kerberos ticket 缓存中读取
# security.kerberos.login.use-ticket-cache: true

# 包含用户凭据的 Kerberos 密钥表文件的绝对路径
# security.kerberos.login.keytab: /path/to/kerberos/keytab

# 与 keytab 关联的 Kerberos 主体名称
# security.kerberos.login.principal: flink-user

# 以逗号分隔的登录上下文列表,用于提供 Kerberos 凭据(例如,`Client,KafkaClient`使用凭证进行 ZooKeeper 身份验证和 Kafka 身份验证)
# security.kerberos.login.contexts: Client,KafkaClient

1.2 启动集群

1.启动Flink

[root@bigdata115 flink-1.7.2]# ./bin/start-cluster.sh 

在这里插入图片描述
2.成功查看Web 界面:flink后面端口号8081

http://192.168.1.xxx:8081
在这里插入图片描述

二.提交任务和测试

2.1 提交任务

①用socketTextStream方法,测试wordcount

import org.apache.flink.api.java.utils.ParameterTool
import org.apache.flink.streaming.api.scala._

/**
 1. Project: FlinkMVP
 2. Package: com.jackson.wc
 3. Version: 1.0
 4. create : 2020-5-25
  */
object DataStreamWordCount {
  def main(args: Array[String]): Unit = {

    val params = ParameterTool.fromArgs(args)
    val host: String = params.get("host")
    val port: Int = params.getInt("port")

    // 创建一个流处理的执行环境
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    //    env.setParallelism(1)
    //    env.disableOperatorChaining()

    // 接收socket数据流
    val textDataStream = env.socketTextStream(host, port)

    // 逐一读取数据,分词之后进行wordcount
    val wordCountDataStream = textDataStream.flatMap(_.split(" "))
     // .filter(_.length>1).disableChaining()
      .filter(_.length>1).startNewChain()
      .map( (_, 1) )
      .keyBy(0)
      .sum(1)

    // 打印输出
    wordCountDataStream.print().setParallelism(1)

    // 执行任务
    env.execute("stream word count job")
  }
}

②打包测试代码

  1. 先clean
  2. 在package

在这里插入图片描述

2.2 Web UI jar包测试

①提交jar包
在这里插入图片描述
②.点击Upload,上传
在这里插入图片描述
③在Web UI 提交,最后点击Submit

注:先在Liunx端,启动nc -lk 端口

Show Plan,也可以直接展现执行计划图。
表明在没提交之前,就已经有执行计划图。

在这里插入图片描述
④查看结果
在这里插入图片描述
查看日志:
在这里插入图片描述
⑤并行度设置为1,重新提交。

在Linux下,发送俩条消息:hello Jackson
在这里插入图片描述
可以看到是Running状态,说明提交成功,已经接收到消息。
在这里插入图片描述

Transform过程收到的字节数<Sink过程中收到的字节数

⑥查看日志结果,在TaskManger端
在这里插入图片描述

注:默认心跳时间为10s一次

代码运行优先级顺序:代码>Web UI端设置/Liunx下命令参数>底层配置文件

三.命令行操作及其它部署方式

3.1 命令行操作

1.一先要启动端口 nc -lk 端口号

注:要不然会报连接异常

2.提交命令

./bin/flink run -c com.Jackson.wc.DataStreamWordCount 
-p 2 /root/data/flinkjar/FlinkMVP-1.0-SNAPSHOT.jar 
--host bigdata115 --port 888

注:-p指的是并行度,并行度影响任务速度

3.结果

悬停状态,但在WebUI中可以看到日志结果

4.提交命令后,可以ctrl+c ,任务仍在运行。

5.用list查看,运行任务

[root@bigdata115 flink-1.7.2]# ./bin/flink list
Waiting for response...
------------------ Running/Restarting Jobs -------------------
03.06.2020 16:11:42 : c5a8c5da349caceb4e6a143d5a4c7055 : stream word count job (RUNNING)

No scheduled jobs.

6.cancel ID号,就可以取消运行任务

[root@bigdata115 flink-1.7.2]# ./bin/flink cancel c5a8c5da349caceb4e6a143d5a4c7055
c5a8c5da349caceb4e6a143d5a4c7055
Cancelling job c5a8c5da349caceb4e6a143d5a4c7055.
Cancelled job c5a8c5da349caceb4e6a143d5a4c7055.

7.list再次查看,无运行任务

[root@bigdata115 flink-1.7.2]# ./bin/flink list
Waiting for response...
No running jobs.
No scheduled jobs.

8.可以加个–all参数,查看所有的任务(包括failed,running,cancel)

[root@bigdata115 flink-1.7.2]# ./bin/flink list --all
Waiting for response...
No running jobs.
No scheduled jobs.
---------------------- Terminated Jobs -----------------------
03.06.2020 14:59:15 : 282e60de37d8b9c6a008ef5e0df97b10 : stream word count job (FINISHED)
03.06.2020 15:31:07 : 0d4a351a00bd388baf52eb2c26e6e4cf : stream word count job (FAILED)
03.06.2020 15:31:40 : 25b1ee3a846498889ea83f2ec91717ac : stream word count job (CANCELED)
03.06.2020 15:33:20 : eab5cb4ebe9ea3765313271d88ecb623 : stream word count job (FINISHED)
03.06.2020 16:01:03 : cb05aefe0172a1300e502c7850fee4f9 : stream word count job (FAILED)
03.06.2020 16:01:24 : 3966cd24efc7f2cd14a3694d79b30638 : stream word count job (FINISHED)
03.06.2020 16:06:17 : 45b24c400bf91e5f46eefafe1096d527 : stream word count job (FAILED)

3.2 Yarn 模式

以 Yarn 模式部署 Flink 任务时,要求 Flink 是有 Hadoop 支持的版本(flink-1.7.2-bin-hadoop27-scala_2.11.tgz), Hadoop环境需要保证版本在 2.2 以上,并且集群中安装有 HDFS 服务。

  1. 启动 hadoop 集群(略)

注: 一定要修改etc/hadoop/yarn-site.xml,添加下面内容,不然报错。

<property> 
    <name>yarn.nodemanager.vmem-check-enabled</name> 
    <value>false</value> 
</property> 
  1. 启动 yarn-session
    ./bin/yarn-session.sh -n 1 -s 1 -jm 1024 -tm 1024 -nm test -d

其中:
-n(–container): TaskManager 的数量。
-s(–slots): 每个 TaskManager 的 slot 数量,默认一个 slot 一个 core,默认每个
taskmanager 的 slot 的个数为 1,有时可以多一些 taskmanager,做冗余。
-jm: JobManager 的内存(单位 MB)。
-tm:每个 taskmanager 的内存(单位 MB)。
-nm: yarn 的 appName(现在 yarn 的 ui 上的名字)。
-d:后台执行。

  1. 执行任务
./bin/flink run -m yarn-cluster -c com.Jackson.wc.DataStreamYarnWordCount 
/root/flinkjar/FlinkMVP-1.0-SNAPSHOT.jar 
--input /root/flinkjar/firstdata.txt 
--output /root/flinkjar/out1.csv
  1. 去 yarn 控制台查看任务状态

报错:
yarn提交 org.apache.flink.yarn.AbstractYarnClusterDescriptor - Deployment took more than 60 seconds. Please check if the requested resources are available in the YARN cluster

3.3 Kubernetes 模式

容器化部署时目前业界很流行的一项技术,基于 Docker 镜像运行能够让用户更加 方 便地 对应 用进 行管 理 和运 维。 容器 管理 工 具中 最为 流行 的就 是 Kubernetes( k8s),而 Flink 也在最近的版本中支持了 k8s 部署模式。

1) 搭建 Kubernetes 集群(略)

2) 配置各组件的 yaml 文件
在 k8s 上构建 Flink Session Cluster,需要将 Flink 集群的组件对应的 docker 镜像分别在 k8s 上启动,包括 JobManager、 TaskManager、 JobManagerService 三个镜像服务。 每个镜像服务都可以从中央镜像仓库中获取。

3)启动 Flink Session Cluster

// 启动 jobmanager-service 服务
kubectl create -f jobmanager-service.yaml
// 启动 jobmanager-deployment 服务
kubectl create -f jobmanager-deployment.yaml
// 启动 taskmanager-deployment 服务
kubectl create -f taskmanager-deployment.yaml

4) 访问 Flink UI 页面集群启动后,就可以通过 JobManagerServicers 中配置的 WebUI 端口,用浏览器输入以下 url 来访问 Flink UI 页面了:
http://{JobManagerHost:Port}/api/v1/namespaces/default/services/flink-jobmanager:ui/proxy

那么谢谢大家,本次的分享就到这里了。

感谢小伙伴们,同时欢迎大家与我交流,VX:LQ1518123002。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Jackson_mvp/article/details/107212180