其他分享
首页 > 其他分享> > Flink初识与搭建(一)

Flink初识与搭建(一)

作者:互联网

Spark生态圈

spark core 批计算  取代了MR
spark streaming 流计算  取代了storm(没有自己的生态圈,所以不火)
spark sql
spark mlib 机器学习

 

问:spark core为什么会取代MR?spark计算速度为什么比MR快?

1. spark申请资源是粗粒度的资源申请(所有task执行完毕executor才会关闭,有利有弊,有些浪费机器资源),MR是细粒度调用,每一个task都会启动一个jvm,完事就关掉
2. Spark基于内存计算 cache persist (内存计算,pipeline操作 (怕波兰))

 
申请资源细粒度和粗粒度资源调用的区别以及利弊?
1.粗粒度 缺点:后台一直占用资源,端口4040 优点:只申请资源一次,跑task任务的时候不需要重新拉取,用空间换时间
2.细粒度 缺点:每次都需要申请资源,比较耗时 优点:由JVM管理,每次跑完任务,释放资源

 

 

 

请问map和filter如何打印

val rdd = sc.textFile("path")
val rddMap = rdd.map( x=> {
    println("map" + x)
    x
})
val filterRDD = rddMap.filter(x =>{
    println("filter" + x)
    true
})
filterRDD.count();

答:map和filter交替打印
原理: filter(map(textFile)) RDD不存数据,只存计算逻辑,里面的task每次取一条数据,管道操作,所以从文件拿一条数据打印map 在打印filter,循环交替

 

 

sparkStriming流式计算缺点

批计算 无限的缩小 微批,时间足够短就成了流计算

实时性很差
流计算默认情况下无状态
batch

有状态的计算(需要我们找地方存储)
updateStateByKey

 

 

什么是flink?

分布式有状态的计算引擎,他主要能够计算无界数据流和有界的数据流,简单来说也能批计算也能流计算

  1.UnBounded streams 无界计算 有开始时间,无结束时间,比如用户日志

  2.Bounded streams 有界,有开始时间,有结束时间(可以自己定时间)

  3.stateful compulation state可以放内存、磁盘、state状态可以关联上下文

SparkStreaming主要是批计算,认为流计算是批计算中特殊情况,无限压榨缩小时间范围

Fink主要是流计算,默认批计算是流计算中特殊情况,要卡住结束时间就可以有界批量计算

 

 

Flink特点和优势

1. 支持高吞吐、低延迟、高性能
2. 支持事件,结合watermark处理乱序数据
3. 支持有状态计算,并且支持多种状态  可以存放到内存、文件、RocksDB
4. 支持高度灵活的窗口(window)操作 time、count、session 
5. 基于轻量级分布式快照(checkpoint)实现的容错 保证exactly-once语义
6. 基于JVM实现独立的内存管理
7. Save Points(保存点) 方便代码升级

 

spark集群(master-slave架构)和 Fink集群 (master-slave架构)

Master:(master)
        管理集群中的所有worker,进而管理了集群资源
worker:(slave)
        worker管理各个节点上的资源(mem  core)
        worker_memory 1G
        worker_cores 2
Driver:任务调度
        --executor-cores 2





JobManager(master)相当于saprk的master+driver,既负责资源调度,又负责任务调度
TaskManager(slave) 

1.JobManager分发task(JobManager有多个TaskManager)
2.TaskManager向JobManager注册,通过心跳保持连接,当其中一个TaskManager挂掉,就会重试,如果连接不上,就是用下一个TaskManager
3.TaskManager有多个slot
4.JobManager会触发checkpoint (checkpoint就是那个taskManager挂掉了,就T出去,让下一个上) 5.task slot 只对内存资源进行划分隔离,对CPU没有隔离,多个task slot共享CPU,内存是平分的 假如: TaskManager 3G 3core 则 task slot 1G 没有核

 

 

 

安装standalone集群

ke01 ke02 ke03 ke04
JobManager TaskManager TaskManager TaskManager

 

1.下载链接:
https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.9.2/flink-1.9.2-bin-scala_2.11.tgz
2.解压:tar -zxf flink-1.9.2-bin-scala_2.11.tgz
3.修改flink-conf.yaml配置文件:     
    3.1 jobmanager.rpc.address: node01     JobManager地址
    3.2 jobmanager.rpc.port: 6123          JobManagerRPC通信端口
    3.3 jobmanager.heap.size: 1024m       JobManager所能使用的堆内存大小
    3.4 taskmanager.heap.size: 1024m      TaskManager所能使用的堆内存大小
    3.5 taskmanager.numberOfTaskSlots: 2 TaskManager管理的TaskSlot个数,依据当前物理机的核心数来配置,一般预留出一部分核心(25%)给系统及其他进程使用,一个slot对应一个core。如果core支持超线程,那么slot个数*2
    3.6 rest.port: 8081        指定WebUI的访问端口

4.修改slaves配置文件
    ke02 
    ke03 
    ke04
5.同步到其他节点
    scp -r flink-1.9.2 ke02:`pwd`
    scp -r flink-1.9.2 ke03:`pwd`
    scp -r flink-1.9.2 ke04:`pwd`
6.配置环境
    export FLINK_HOME=/opt/software/flink/flink-1.9.2
    export PATH=$PATH:$FLINK_HOME/bin
    source /etc/profile
7.启动集群
    node01上启动:start-cluster.sh

 

 

查看Flink WebUI

常用提交Application到Flink集群运行方式

 

(1)通过命令方式提交Application
flink run -c com.msb.stream.WordCount StudyFlink-1.0-SNAPSHOT.jar
-c 指定主类
-d 独立运行、后台运行 
-p 指定并行度

(2)通过WebUI方式提交Application
在Web中指定Jar包的位置、主类路径、并行书等
web.submit.enable: true一定是true,否则不支持Web提交Application

 

标签:task,Flink,flink,JobManager,TaskManager,初识,计算,spark,搭建
来源: https://www.cnblogs.com/bigdata-familyMeals/p/14860807.html