Flink学习安装部署、任务提交

快速入门
流式Wordcount
package com.belle

import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment

object _1StreamWordCount {

  def main(args: Array[String]): Unit = {
    // 1.初始化流计算环境
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    // 修改并行度
    env.setParallelism(1)
    // 2.导入隐式转换
    import org.apache.flink.streaming.api.scala._
    // 3.读取数据
    val lines = env.socketTextStream("127.0.0.1", 9999)
    // 4.转换和处理数据
    val res = lines.flatMap(_.split(" "))
      .map((_, 1))
      .keyBy(0)
      .sum(1)
    // 5.打印结果
    res.print()
    // 6.启动流计算程序
    env.execute("StreamWordCount")
  }

}

批式Wordcount
package com.belle

import org.apache.flink.api.scala._

object _2BatchWordCount {

  def main(args: Array[String]): Unit = {
    val env = ExecutionEnvironment.getExecutionEnvironment

    val dataPath = getClass.getResource("/wc.txt")

    val data = env.readTextFile(dataPath.getPath)

    data.flatMap(_.split(" ")).map((_, 1)).groupBy(0).sum(1).print()

  }
}

安装和部署
基本架构

在这里插入图片描述

  • client

    与 JobManager 构建 Akka 连接,然后将任务提交到 JobManager,通过和 JobManager 之间进行交互获取任务执行状态。

  • JobManager

    JobManager 负责整个 Flink 集群任务的调度以及资源的管理,为提交的应用分配相应的 TaskSlots 资源并命令 TaskManger 启动从客户端中获取的应用,触发 Checkpoints 操作

  • TaskManager

    负责具体的任务执行

安装和部署

集群模式:

  • 准备三台机器 172.17.209.3、172.17.209.4、172.17.209.5 实现免密登录

  • 下载 flink-1.10.0-bin-scala_2.12.tgz 解压

  • 编辑 conf/flink-conf.yaml 配置文件在这里插入图片描述 在这里插入图片描述
    ​ taskmanager.numberOfTaskSlot 参数默认值为 1,修改成 3。表示数每一个 TaskManager 上有 3 个 Slot

    • flink-conf.yaml 文件中的几个重要参数进行分析:
      jobmanager.heap.size:JobManager 节点可用的内存大小。
      taskmanager.heap.size:TaskManager 节点可用的内存大小。
      taskmanager.numberOfTaskSlots:每台机器可用的 Slot 数量,建议和节点 CPU 的数量保持一致。
      parallelism.default:默认情况下 Flink 任务的并行度。
    • 上面参数中所说的 Slot 和 parallelism 的区别:
      Slot 是静态的概念,是指 TaskManager 具有的并发执行能力。
      parallelism 是动态的概念,是指程序运行时实际使用的并发能力。
      设置合适的 parallelism 能提高运算效率。
  • 编辑 conf/slaves 配置文件

    sz19f-bdc-dev-172-17-209-3.belle.lan
    sz19f-bdc-dev-172-17-209-4.belle.lan
    sz19f-bdc-dev-172-17-209-5.belle.lan
    
  • 编辑 conf/masters 配置文件

    sz19f-bdc-dev-172-17-209-3.belle.lan:8081
    
  • 将172.17.209.3上分发到其他两台服务器

  • 启动flink集群
    在这里插入图片描述

  • 访问web UI http://172.17.209.3:8081/#/overview
    在这里插入图片描述

提交任务方式
  • 通过命令提交任务

    • 上传jar包[如果提示找不到主类,先maven clean 再build project 之后maven package]
      在这里插入图片描述

    • 执行命令: 在执行命令之前先确保 nc -lk 8888 是否启动

      bin/flink run -d -c com.belle._1StreamWordCount /root/flink_study-1.0-SNAPSHOT.jar
      
      -d选项表示提交 job 之后,客户端结束并退出
      

      在这里插入图片描述

    • 查看job执行结果
      在这里插入图片描述
      在这里插入图片描述

  • 通过 WebUI 提交 job 到集群
    在这里插入图片描述

Flink提交到Yarn

flink on yarn的交互图解:
在这里插入图片描述

Flink on Yarn 两种模式
  • 第1种模式(Session-Cluster):是在 YARN 中提前初始化一个 Flink 集群(称为 Flink yarn-session),开辟指定的资源,以后的 Flink 任务都提交到这里。这种方式创建的 Flink 集群会独占资源,不管 有没有 Flink 任务在执行,YARN 上面的其他任务都无法使用这些资源。

  • 第2种模式(Per-Job-Cluster):每次提交 Flink 任务都会创建一个新的 Flink 集群, 每个 Flink 任务之间相互独立、互不影响,管理方便。任务执行完成之后创建的 Flink 集群也会消失,不会额外占用资源,按需使用,这使资源利用率达到最大,在工作中推 荐使用这种模式。

    Note: Flink on Yarn 还需要两个先决条件:
    a.配置 Hadoop 的环境变量
    b.下载 Flink 提交到 Hadoop 的连接器(jar 包),并把 jar 拷贝到 Flink 的 lib 目录下
    在这里插入图片描述

Session-Cluster模式(Flink yarn-session )
  • 先启动 Hadoop 集群,然后通过命令启动一个 Flink 的 yarn-session 集群

    bin/yarn-session.sh -n 3 -s 3 -nm flink_test -d
    
    其中 yarn-session.sh 后面支持多个参数:
    -n,--container <arg> 表示分配容器的数量(也就是 TaskManager 的数量)。
    -D <arg> 动态属性。
    -d,--detached 在后台独立运行。
    -jm,--jobManagerMemory <arg>:设置 JobManager 的内存,单位是 MB。
    -nm,--name:在 YARN 上为一个自定义的应用设置一个名字。
    -q,--query:显示 YARN 中可用的资源(内存、cpu 核数)。
    -qu,--queue <arg>:指定 YARN 队列。
    -s,--slots <arg>:每个 TaskManager 使用的 Slot 数量。
    -tm,--taskManagerMemory <arg>:每个 TaskManager 的内存,单位是 MB。
    -z,--zookeeperNamespace <arg>:针对 HA 模式在 ZooKeeper 上创建 NameSpace。
    -id,--applicationId <yarnAppId>:指定 YARN 集群上的任务 ID,附着到一个后台独
    立运行的 yarn session 中。
    
    

    查看在yarn上申请的AppMaster
    在这里插入图片描述

  • 查看WebUI, 查看Flink 的 yarn-session 集群
    在这里插入图片描述
    本地文件系统中会产生一个临时文件 /tmp/.yarn-properties-root
    在这里插入图片描述

  • 提交Job 会提交到Yarn上执行

    bin/flink run -d -c com.belle._1StreamWordCount /root/flink_study-1.0-SNAPSHOT.jar
    

    在这里插入图片描述

  • 停止yarn-session 集群

     yarn application -kill application_1591951576383_3044
    
Pre-Job-Cluster 模式(yarn-cluster)
  • 提交job

    bin/flink run -m yarn-cluster  -ys 3 -ynm flink_test2 -c com.belle._1StreamWordCount /root/flink_study-1.0-SNAPSHOT.jar
    
    相对于 Yarn-Session 参数而言,只是前面加了 y
    -d,--detached:设置在后台运行。
    -yjm,--jobManagerMemory<arg>:设置 JobManager 的内存,单位是 MB。
    -ytm,--taskManagerMemory<arg>:设置每个 TaskManager 的内存,单位是 MB。
    -ynm,--name:给当前 Flink application 在 Yarn 上指定名称。
    -yq,--query:显示 yarn 中可用的资源(内存、cpu 核数)
    -yqu,--queue<arg> :指定 yarn 资源队列
    -ys,--slots<arg> :每个 TaskManager 使用的 Slot 数量。
    -yz,--zookeeperNamespace<arg>:针对 HA 模式在 Zookeeper 上创建 NameSpace
    -yid,--applicationID<yarnAppId> : 指定 Yarn 集群上的任务 ID,附着到一个后台独
    立运行的 Yarn Session 中。
    

    在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值