SpringBoot 快速上手
SpringBoot入门程序开发Springboot 初衷SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。
SpringBoot程序优点
起步依赖(简化依赖配置)
自动配置(简化常用工程相关配置)
辅助功能(内置服务器,……)
创建 SpringBoot 工程的四种方式
基于Idea创建SpringBoot工程
基于官网创建SpringBoot工程
基于阿里云创建SpringBoot工程
手工创建Maven工程修改为SpringBoot工程
基于Idea创建SpringBoot工程①:创建新模块,选择Spring Initializr,并配置模块相关基础信息
②:选择当前模块需要使用的技术集
③:开发控制器类1234567891011121314151617181920package cn.aiyingke.demo.controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework. ...
Kafka 概述
一:定义Kafka 传统定义:Kafka 是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据的实时处理场景。发布/订阅:消息的发布者不会将消息直接发送给消息的订阅者,而是将发送的消息分为不同的类别,订阅者只接受感兴趣的消息。Kafka 愿景定义:Kafka 是一个开源的分布式事件流平台,被多数公司用于高性能数据管道、流分析、数据集成和关键任务应用。
二:消息队列在大数据领域通常采用 Kafka 作为消息队列。
2.1 传统消息队列的应用场景传统的消息队列主要应用于:缓存/消峰、解耦和异步通信。
缓存/消峰:有助于控制和优化数据流系统的速度,解决生产消息和消费消息的处理速度不一致的情况。
解耦:允许独立的扩展或者修改两边的处理过程,只要确保他们遵循同样的数据接口约束。
异步通信:允许用户把消息放入队列中,但不立即处理它,然后在需要的时候再处理它们。
2.2 消息队列的两种模式点对点模式:消费者主动拉去消息,收到消息后清除消息。
发布/订阅模式:
可以有多个topic主题;
消费者消费数据后,不删除数据;
每个消费者相互独 ...
Spark 性能调优——Shuffle调优
一:ShuffleManager发展概述在Spark的源码中,负责shuffle过程的执行、计算和处理的组件主要就是ShuffleManager,也即shuffle管理器。而随着Spark的版本的发展,ShuffleManager也在不断迭代,变得越来越先进。
在Spark 1.2以前,默认的shuffle计算引擎是HashShuffleManager。该ShuffleManager而HashShuffleManager有着一个非常严重的弊端,就是会产生大量的中间磁盘文件,进而由大量的磁盘IO操作影响了性能。
因此在Spark 1.2以后的版本中,默认的ShuffleManager改成了SortShuffleManager。SortShuffleManager相较于HashShuffleManager来说,有了一定的改进。主要就在于,每个Task在进行shuffle操作时,虽然也会产生较多的临时磁盘文件,但是最后会将所有的临时文件合并(merge)成一个磁盘文件,因此每个Task就只有一个磁盘文件。在下一个stage的shuffle read task拉取自己的数据时,只要根据索引读取 ...
Spark 性能调优——数据倾斜调优
数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。
一:数据倾斜发生时的现象
绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个task却要一两个小时。这种情况很常见。
原本能够正常执行的Spark作业,某天突然报出OOM(内存溢出)异常,观察异常栈,是我们写的业务代码造成的。这种情况比较少见。
二:数据倾斜发生的原理数据倾斜的原理很简单:在进行shuffle的时候,必须将各个节点上相同的key拉取到某个节点上的一个task来进行处理,比如按照key进行聚合或join等操作。此时如果某个key对应的数据量特别大的话,就会发生数据倾斜。比如大部分key对应10条数据,但是个别key却对应了100万条数据,那么大部分task可能就只会分配到10条数据,然后1秒钟就运行完了;但是个别task可能分配到了100万数据(巨量数据),要运行一两个小时。因此,整个Spark作业的运行进度是由运行时间最长的那个task决定的。
因此出现数据倾斜的时候,Spark作业看 ...
Spark 性能调优——资源调优
调优概述在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。总之,无论是哪种情况,都会导致Spark作业的运行效率低下,甚至根本无法运行。因此我们必须对Spark作业的资源使用原理有一个清晰的认识,并知道在Spark作业运行过程中,有哪些资源参数是可以设置的,以及如何设置合适的参数值。
Spark作业基本运行原理
详细原理见上图。我们使用spark-submit提交一个Spark作业之后,这个作业就会启动一个对应的Driver进程。根据你使用的部署模式(deploy-mode)不同,Driver进程可能在本地启动,也可能在集群中某个工作节点上启动。Driver进程本身会根据我们设置的参数,占有一定数量的内存和CPU core。而Driver进程要做的第一件事 ...
Spark 性能调优——开发调优
大多数spark作业的性能主要就是消耗了shuffle过程,因为该环节包含了大量的磁盘IO、序列化、网络数据传输等操作。
影响一个Spark作业性能的因素,主要还是代码开发、资源参数以及数据倾斜,shuffle调优只能在整个Spark的性能调优中占到一小部分而已。
开发调优、资源调优、数据倾斜调优、shuffle调优;
Spark基本开发原则,包括:RDD lineage设计、算子的合理使用、特殊操作的优化
原则一:避免创建重复的RDD对于同一份数据,只应该创建一个RDD,不能创建多个RDD来代表同一份数据。****对多次使用的RDD进行持久化
一些Spark初学者在刚开始开发Spark作业时,或者是有经验的工程师在开发RDD lineage极其冗长的Spark作业时,可能会忘了自己之前对于某一份数据已经创建过一个RDD了,从而导致对于同一份数据,创建了多个RDD。这就意味着,我们的Spark作业会进行多次重复计算来创建多个代表相同数据的RDD,进而增加了作业的性能开销。
1234567891011121314151617// 需要对名为“hello.txt”的HDFS文件进行一次ma ...
Spark 常用算子
一:算子概述1.1 什么是算子?
英文:Operator
狭义:一个函数空间到另一个函数空间的映射
广义:一个空间到另个一个空间的映射
白话:一个事物从一个状态到另一个状态的过程
实质:映射,即关系
1.2 算子的重要作用
算子越多,灵活性越高,编程的可选方式就越多
算子越多,表现能力强,可以灵活应对各种复杂场景
1.3 MapReduce 和 Spark 算子比较
MapReduce 只有2个算子,map和reduce,绝大多数场景下,需要复杂的编程来完成业务需求
Spark 有80多个算子,可以灵活组合应对不同的业务场景
二:Spark算子2.1 转换算子(transformation)此种算子不会真正的触发提交作业,只有作业被提交后才会触发转换计算
value型转换算子(处理的数据项是value型)
输入分区:输出分区 = 1 : 1
map算子
flatMap算子
mapPartitions算子
输入分区:输出分区 = n : 1
union算子
cartesian算子
输入分区 :输出分区 = n : n
groupBy ...
Flink 架构设计
一:Flink 架构设计图
1.1 分层设计说明
物理部署层 -deploy层
负责解决Flink的部署模式问题
支持多种部署模式:本地部署、集群部署(standalone/yarn/mesos)、云(GCE/EC2)以及 kubernetes 。
通过该层支持不同平台的部署,用户可以根据自身场景和需求使用对应的部署模式;
Runtime核心层
是Flink分布式计算框架的核心实现层,负责对上层不同接口提供基础服务。
支持分布式steam作业的执行、jobGraph到ExecutionGraph的映射转换以及任务调度等。
将DataStream和DataSet转成统一的可执行的Task Operator,达到在流式计算引擎下同时处理批量计算和流式计算的目的。
API & Libraries 层
负责更好的开发用户体验,包括易用性、开发效率、执行效率、状态管理等方面。
Flink同时提供了支撑流计算和批处理的接口,同时在这基础上抽象出不同的应用类型的组件库,如:
基于流处理的CEP(复杂事件处理库)
Table & Sql库
基于批处 ...
Flink 概述
一:产生背景1.1 历史背景
随着互联网应用的快速发展,实时流数据产生日益增多和普遍化。如日常生活、金融、驾驶、LBS、电商等众多领域。
实时数据的处理和挖掘能够带来离线数据处理和挖掘更多的社会发展和商业价值。
如何快速响应和处理这些大规模的实时数据流,成为众多互联网大厂的当务之急。
在flink之前也出现了很多流数据处理引擎,包括storm、sparkstreaming等知名流行框架,但各自均有较明显的不足,导致没有达到理想的流处理引擎的标准要求。
1.2 优秀的流处理引擎
优秀流处理引擎标准要求
低延迟、高吞吐量、容错性、窗口时间语义化、编程效率高与运行效果好的用户体验;
storm
优点:低延迟
缺点:其它要求都较差一些
sparkstreaming
优点:高吞吐量、容错性高
缺点:其它要求都较差一些
二:基本介绍2.1 概念说明
由Apache软件基金会开发的开源流处理框架
其核心是用Java和Scala编写的框架和分布式处理引擎
用于对无界和有界数据流进行有状态计算。
无界数据流: 即为实时流数据;
有界数据流:即为离线数据,也称为批处理数据;
2.2 ...
Spark 交互操作
一:Spark 运行模式即作业以什么样的模式去执行,主要是单机、分布式两种方式的细节选择。
序号
模式名称
特点
应用场景
1
本地运行模式(local)
单台机器多线程来模拟spark分布式计算
机器资源不够测试验证程序逻辑的正确性
2
伪分布式模式
单台机器多进程来模拟spark分布式计算
机器资源不够测试验证程序逻辑的正确性
3
standalone(client)
独立布署spark计算集群自带clustermanagerdriver运行在spark submit client端
机器资源充分纯用spark计算框架任务提交后在spark submit client端实时查看反馈信息数据共享性弱测试使用还可以,生产环境极少使用该种模式
4
standalone(cluster)
独立布署spark计算集群自带clustermanagerdriver运行在spark worker node端
机器资源充分纯用spark计算框架任务提交后将退出spark submit client端数据共享性弱测试和生产环境均可以自由使用,但更多用于生产环境
5
...





