[Flink]概述day1第4个视频完

news/2024/4/24 5:06:26/文章来源:https://blog.csdn.net/qq_35896718/article/details/129141217

一、概述

  1. 什么是Flink

是一种大数据计算引擎,用于对无界(流数据)和有界(批数据)数据进行有状态计算。

  1. 特点

1)批流一体:统一批处理、流处理

2)分布式:Flink程序可以运行在多台电脑上

3)高性能:处理速度很快

4)高可用:Flink支持高可用性(HA)

5)Flink可以保证数据处理的准确性,及时出现问题,也能进行修正

  1. Flink的核心组成

1)Deploy(部署)层

①本地模式:启动单个JVM让Flink以Local模式运行。

②集群模式运行:standalone(flink自己管理自己的资源)、yarn(yarn管理集群资源)

③运行在云服务器

2)Core层:runtime运行时的核心技术

3)API层

在runtime之上提供了两套核心api:DataStream API(流处理)、DataSet API(批处理)。

4)应用框架层(用于满足特定应用)

datastream:CEP(Event Processing复杂事件处理)、Table(Relational关系型数据库处理)

dataset :Table(关系型数据库)、flinkML(机器学习)、Gelly(图计算)

3.flink可以处理哪些数据

绿色:流处理 蓝色:批处理

输入Connectors(左侧部分)

流处理:kafka等

批处理:HDFS、HBase等

输出Connectors(右侧部分)

流处理:kafka、elasticsearch(全文检索)、HDFS rolling file(滚动文件)

批处理:HBase、HDFS

4.Flink的处理模型:流处理与批处理

1)无限流处理:输入的数据像水一样源源不断

2)有限流处理:一次处理一部分数据

5.有状态的流处理:

1)flink在处理有限流和无线流时,都可以保存处理状态。

2)可以将第一个子任务的处理结果形成一个状态,将状态保存起来(可以保存在内存中,也可以持久化大到外部存储系统中)。当前状态保存了其中一个子任务处理的中间结果。

3)优点:在第一个任务的位置挂掉了,程序重新启动时,不在需要把第一个任务和之前任务进行重新计算,可以直接找到第一个子任务的状态,用它快读恢复输出结果。甚至可以是直接把输出结果保存到状态里,直接读取出来即可。

6.流处理引擎的技术选型

  1. 如果需要保证exactly-once或者at least once不能选择strom.且strom不能处理大量数据.

  1. 如果项目已经使用spark框架,并且实时性要求不高,选择spark streaming

  1. 满足exactly once,数据量大,高吞吐,低延迟需求,要进行状态管理和窗口统计,选择flink。

二、Flink快读应用

1、java wordcount(批处理)

import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.operators.AggregateOperator;
import org.apache.flink.api.java.operators.DataSource;
import org.apache.flink.api.java.operators.FlatMapOperator;
import org.apache.flink.api.java.operators.UnsortedGrouping;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.util.Collector;public class WordCountJavaBatch {public static void main(String[] args) throws Exception {String inputPath="/Users/kelisiduofu/IdeaProjects/zhiwang/flink/src/main/resources/input/hello.txt";//结果会直接输入到这个文件中String outputPath="/Users/kelisiduofu/IdeaProjects/zhiwang/flink/src/main/resources/output";//获取flink处理批数据的运行环境ExecutionEnvironment executionEnvironment = ExecutionEnvironment.getExecutionEnvironment();//从文件读取数据:按行读取(存储的元素就是每行的文本)DataSource<String> text = executionEnvironment.readTextFile(inputPath);FlatMapOperator<String, Tuple2<String, Integer>> wordAndOnes = text.flatMap(new SplitCls());//目前数据为(hello,1)参数为二元组内的哪个元素,0就是第一个参数:word,返回值为group后的结果UnsortedGrouping<Tuple2<String, Integer>> groupWordAndOne = wordAndOnes.groupBy(0);//(hello,1)按照第二个参数进行聚合AggregateOperator<Tuple2<String, Integer>> out = groupWordAndOne.sum(1);//第2个参数:行间的分隔符,第3个参数:字段间分隔符//setParallelism:设置并行度out.writeAsCsv(outputPath,"\n","\t").setParallelism(1);executionEnvironment.execute();//必须人为调用才会运行程序}//参数<a,b>  a为数据源,即每行数据. b为处理完结果的数据类型即(word,count)static class SplitCls implements FlatMapFunction<String, Tuple2<String,Integer>> {@Override  //s为输出的数据的类型, Collector:将处理的结果向下游算子发送的对象public void flatMap(String s, Collector<Tuple2<String, Integer>> collector) throws Exception {String[] words=s.split("\\s+");for(String word : words){collector.collect(new Tuple2<String,Integer>(word,1));//将结果发送到下游}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_72396.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python小基础-更多请自学,或者某某教程-2023-2-21 小扒菜的自学之路【1】

python基础 基础学习 自己跟着菜鸟教程看的一些基础,会java或者js的话,1个半小时就可以over 好久没更新博客了,现在慢慢来发吧,基础内容不太多,自己理解会很快的(下面是一段个人的小经历,大家也可以看看,嘻嘻) 假期看了灵魂摆渡几部电视剧,无聊中收到了一个python爬虫公开课穷,…

单Buffer的缺点与改进方法

单Buffer的缺点与改进方法 文章目录单Buffer的缺点与改进方法一、 单Buffer的缺点二、 使用多Buffer来改进三、 内核驱动程序、APP互相配合使用多buffer致谢参考资料 内核自带的LCD驱动程序 IMX6ULL驱动源码&#xff1a;Linux-4.9.88\drivers\video\fbdev\mxsfb.c 一、 单Buf…

I/O多路复用模型实现——epoll

epoll IO多路复用模型实现机制I/O多路复用epollepoll_create(int size)epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout)epoll eventepoll流程I/O多路复用 I/O 多路复用的本质…

Java使用MD5加盐对密码进行加密处理,附注册和登录加密解密处理

前言 在开发的时候&#xff0c;有一些敏感信息是不能直接通过明白直接保存到数据库的。最经典的就是密码了。如果直接把密码以明文的形式入库&#xff0c;不仅会泄露用户的隐私&#xff0c;对系统也是极其的不厉&#xff0c;这样做是非常危险的。 那么我们就需要对这些铭文进…

MyBatis分页插件

目录 分页插件 Mybatis插件典型适用场景 实现思考 第一个问题 第二个问题 自定义分页插件 分页插件使用 添加pom依赖 插件注册 调用 代理和拦截是怎么实现的 PageHelper 原理 分页插件 MyBatis 通过提供插件机制&#xff0c;让我们可以根据自己的需要去增强MyBati…

去中心化开源社交平台Misskey

本文是应网友 anthony084 的要求写的&#xff1b; 什么是 Misskey &#xff1f; Misskey 是一个开源、去中心化的社交媒体平台&#xff0c;发帖方式类似于微博和推特。 去中心化则意味着一个 Misskey 实例可以与其他 Misskey 实例进行相互连接&#xff0c;在 Fediverse (Activi…

广义学习矢量量化(GLVQ)分类算法介绍和代码实现

广义学习矢量量化&#xff08;Generalized Learning Vector Quantization&#xff0c;GLVQ&#xff09;是一种基于原型的分类算法&#xff0c;用于将输入数据分配到先前定义的类别中。GLVQ是LVQ&#xff08;Learning Vector Quantization&#xff09;的一种扩展形式&#xff0c…

性能分析之vmstat工具

vmstat 工具的使用 命令&#xff1a;vmstat 1 60> /tmp/cpu.txt 说明&#xff1a;每秒采样 1 次&#xff0c;共采集 100 次 格式化显示&#xff1a;cat /tmp/cpu.txt|column -t &#xff08;1&#xff09;procs r&#xff1a; 表示运行和等待 CPU 时间片的进程数&#xff0…

go进阶(1) -深入理解goroutine并发运行机制

并发指的是同时进行多个任务的程序&#xff0c;Web处理请求&#xff0c;读写处理操作&#xff0c;I/O操作都可以充分利用并发增长处理速度&#xff0c;随着网络的普及&#xff0c;并发操作逐渐不可或缺 一、goroutine简述 在Golang中一个goroutines就是一个执行单元&#xff…

多种调度模式下的光储电站经济性最优储能容量配置分析(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Crafting interpreters 中文翻译(全),持续修正

本书在线地址 http://craftinginterpreters.com/ 感谢作者 作者用近 4 年的时间持续创作和改进本书&#xff0c;并把其 Web 版本公开在网上。这本纸质书于今年 7 月出版&#xff0c;立刻在 Hacker News 等网络媒介上引起关注和讨论。 书中作者首先定义了一个动态类型的语言 …

23年PMP真的值得考吗?分析+资料分享

我觉得&#xff0c;如过是真的想学习项目管理&#xff0c;或者工作要求考PMP&#xff0c;招聘要求又的确“PMP证书”优先&#xff0c;那考一个是划算的&#xff0c;毕竟在项目管理这一块&#xff0c;PMP是专业和知名度最高的证书了。 它是由美国项目管理协会(PMI)在全球范围内推…

数组-二分查找-搜索插入位置/在排序数组中查找元素的第一个和最后一个位置/x 的平方根/有效的完全平方数

二分查找 35搜索插入位置 https://leetcode.cn/problems/search-insert-position/submissions/ class Solution:def searchInsert(self, nums: List[int], target: int) -> int:l 0r len(nums)-1# // 整数除法 int /浮点数除法while(l<r):mid l (r - l)//2if nums…

二叉树——找树左下角的值

找树左下角的值 链接 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 递归法 二叉树的 最底层 最左…

一维,二维差分の详解(简单易懂)

一,差分定义差分,就是前缀和的逆运算。二,具体过程1.一维差分例题构造差分数组首先给定一个原数组a&#xff1a;a[1], a[2], a[3],,,,,, a[n];然后我们构造一个数组b &#xff1a; b[1], b[2], b[3],,,,,, b[i];使得 a[i] b[1] b[2] b[3] ,,,,,, b[i]也就是说&#xff0c;…

Redis分布式锁实现及使用

文章目录分布式锁全局ID生成器一人一单实现超卖问题一人一单分布式锁Redis setnx实现分布式锁Redis在业内解决秒杀等业务场景有非常广的应用&#xff0c;如何设计实现一个分布式锁是解决超卖、一人一单问题非常重要… 分布式锁 分布式锁是控制分布式系统之间同步访问共享资源的…

CRM客户管理系统的作用和四大优势

CRM系统是一种以客户管理为核心&#xff0c;帮助营销、销售、服务部门实现业务自动化&#xff0c;为企业进行客户数据的收集、管理和分析&#xff0c;提高客户体验和留存&#xff0c;实现以客户为中心的管理模式的企业管理工具。那么&#xff0c;企业为什么要使用CRM系统&#…

Javaweb之mybits入门

2.1 Mybatis概述 2.1.1 Mybatis概念 MyBatis 是一款优秀的持久层框架&#xff0c;用于简化 JDBC 开发 MyBatis 本是 Apache 的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code&#xff0c;并且改名为MyBatis 。2013年11月迁移到Github …

XSS注入进阶练习篇(三) XSS原型链污染

XSS原型链污染1.原型链的概念1.1 构造函数的缺点1.2 prototype 属性的作用1.3 原型链1.4 constructor属性1.5 prototype和__proto__2. 原型链污染2.1 原型链污染是什么&#xff1f;2.2 原型链污染的条件2.3 原型连污染实例2.3.1 hackit 20182.3.2 challenge-04223.总结1.原型链…

新项目分析

1&#xff1a;数据类型处理 # sep‘\s‘ 这是正则表达式&#xff0c;通过一定规则的表达式来匹配字符串用的 \s 表示空白字符&#xff0c;包括但不限于空格、回车(\r)、换行(\n)、tab或者叫水平制表符(\t)等&#xff0c;这个根据编码格式不同代表的含义也不一样&#xff0c;感…