自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(131)
  • 收藏
  • 关注

原创 spark源码系列(9)BlockManager的原理

上一篇说到CacheManager和checkpoint来管理缓存和数据相关的东西。但实际上,他们底层都是通过BlockManger来管理数据的。找到RDD#getOrCompute中的SparkEnv.get.blockManager.getOrElseUpdate(blockId, storageLevel, elementClassTag,我们就可以看到最终是通过BlockMana...

2019-12-09 13:43:26 446

原创 flink源码解析3 ExecutionGraph的形成与物理执行

flink在client端形成jobGraph之后会提交给JobMaster ,在这里会形成ExecutionGraphJobMaster的构造函数中有这么一句话:this.executionGraph = this.createAndRestoreExecutionGraph(this.jobManagerJobMetricGroup);一直追踪导EecutionGraphBul...

2019-11-04 20:10:29 566

原创 flink源码解读2 jobGraph的形成

接着上一篇:LocalStrteamEnviroment#execute()JobGraph jobGraph = streamGraph.getJobGraph(); 追踪导StreamingJobGraphGenerator#createJobGraphprivate JobGraph createJobGraph() { // make sure that all...

2019-11-04 15:24:56 168

原创 解读flink源码1 。StreamGraph生成

之前我写过一篇spark的源码,只写了spark的批处理部分,这边写flink主要是以flink的流处理为主---------- public static void main(String[] args) throws Exception { //创建流运行环境 StreamExecutionEnvironment env = StreamExecu...

2019-10-31 20:13:47 189

原创 工作流调度框架 oozie 和azkaban

先说oozieoozie一个基于工作流引擎的开源框架,由Cloudera公司贡献给Apache,提供对Hadoop MapReduce、Pig Jobs的任务调度与协调。Oozie需要部署到JavaServlet容器中运行。主要用于定时调度任务,多任务可以按照执行的逻辑顺序调度。oozie分成三个模块1) Workflow顺序执行流程节点,支持fork(分支多个节点),join(...

2019-09-22 20:33:42 604

原创 spark源码系列(8) CacheMananger 和checkpoint

老规矩,一张图先说明全流程进入源码:RDD#iteratorfinal def iterator(split: Partition, context: TaskContext): Iterator[T] = { if (storageLevel != StorageLevel.NONE) { SparkEnv.get.cacheManager.getOrCompu...

2019-09-20 20:30:13 122

原创 spark源码系列(7) 图解部分重要算子

map、flatMap、filter这种最基础的算子就不说了。1.unionunion算子原理的结论1、新的rdd,会将旧的两个rdd的partition,原封不动地给挪过来2、新的rdd的partition的数量,就是旧的两个rdd的partition的数量的综合2.groupbyKey一般来说,在执行shuffle类的算子的时候,比如groupByKey...

2019-09-20 13:36:17 279

原创 spark源码系列(6) shuffle执行原理

看ShuffleMapTask#runTaskoverride def runTask(context: TaskContext): MapStatus = { 。。。。 val manager = SparkEnv.get.shuffleManager writer = manager.getWriter[Any, Any](dep.shuffleHandle, pa...

2019-09-19 19:51:10 162

原创 spark源码系列(5) TaskSchedule原理

接着上一讲进入TaskSchedule#submitTasksval manager = createTaskSetManager(taskSet, maxTaskFailures) 首先创建一个TaskSetManangerTaskMananger对一个单独的TaskSet进行任务调度,这个对象负责追踪每一个task,如果task失败的话会负责重试task,直到超过次数,并且会通过...

2019-09-19 12:43:09 150

原创 spark源码系列(4) spark stage划分

我们进入RDD.scala,随便找一个action,就拿count开刀吧def count(): Long = sc.runJob(this, Utils.getIteratorSize _).sum 这里会调用sparkContext#runJob方法。一直追踪这个方法最终会发现调用的是dagScheduler.runJob(rdd, cleanedFunc, partitio...

2019-09-18 20:11:56 200

原创 spark源码系列(3) worker工作原理

这一篇分析worker的工作原理上一篇我们说到Master会给worker发出LaunchDriver和LaunchExecutor的消息先来一张总体的流程图这边我们先说launchDriverworker.scalacase LaunchDriver(driverId, driverDesc) => { logInfo(s"Asked to launch dr...

2019-09-18 19:28:39 123

原创 spark源码系列(2) Master

本节主要分两个模块来介绍1.Master的主备切换、注册与状态变更2.资源调度-------------------------------先看Master的主备切换。先来一张流程图找到Master.scalaonstart方法:val serializer = new JavaSerializer(conf)val (persistenceEngine_, l...

2019-09-17 19:07:22 123

原创 spark源码系列(1) SparkContext的初始化

我们先整体画一张spark程序执行的全流程1-2.我们通过spark-submit提交application时候,程序会通过反射的方式创建出一个DriverActor进程出来,Driver进程会创建一个SparkContext,SparkContext会初始化最重要的两个组件,DAGScheduler和TaskScheduler。3-7.TaskScheduler会通知Master,M...

2019-09-17 11:15:32 604

原创 spark性能调优9------------数据倾斜问题一站式解决方案

1.数据倾斜产生的原因在进行shuffle的时候,必须将各个节点上相同的key拉取到某个节点上的一个task来进行处理,比如按照key进行聚合或join等操作。此时如果某个key对应的数据量特别大的话,就会发生数据倾斜。数据倾斜只会发生在shuffle过程中。常用的并且可能会触发shuffle操作的算子:distinct、groupByKey、reduceByKey、aggregateB...

2019-09-10 21:35:41 180

原创 spark性能调优7 算子调优

1。mappartions替换map提高性能map算子的操作,在一个分区中,数据会一条一条进入函数内部而mappartions则会把分区中所有数据都导入到函数执行1、MapPartitions操作的优点:如果是普通的map,比如一个partition中有1万条数据;ok,那么你的function要执行和计算1万次。但是,使用MapPartitions操作之后,一个task...

2019-09-09 20:39:08 229

原创 spark性能调优6 shuffle调优

1.Spark.Shuffle.consolidateFilesspark.shuffle.manager是hash的情况下,该参数有效。默认是false默认情况下:一个task会生成1-n个输出文件,然后由下游stage去拉取,如果是false就会产生(task个数*每个task产生文件)个文件如下图如果调整参数为true之后,一个节点产生的文件数只有首批task产生...

2019-09-09 19:40:28 211

原创 Spark调优 5 spark jvm调优

关于jvm 堆内存的基础知识,这里就不再说了,大家可以自行百度JVM调优的第一个点:降低cache操作的内存占比spark中,堆内存又被划分成了两块儿,一块儿是专门用来给RDD的cache、persist操作进行RDD数据缓存用的;另外一块儿,就是我们刚才所说的,用来给spark算子函数的运行使用的,存放函数中自己创建的对象。默认情况下,给RDD cache操作的内存占比,是0....

2019-09-06 20:08:13 162

原创 Spark性能调优4 本地化等待时间

Spark在Driver上,对Application的每一个stage的task,进行分配之前,都会计算出每个task要计算的是哪个分片数据,RDD的某个partition;Spark的task分配算法,优先,会希望每个task正好分配到它要计算的数据所在的节点,这样的话,就不用在网络间传输数据;但是呢,通常来说,有时,事与愿违,可能task没有机会分配到它的数据所在的节点,为什么呢,可能那个...

2019-09-06 16:48:08 248

原创 Spark性能调优3 使用Kyro序列化 、使用fastUtil

默认情况下,Spark内部是使用Java的序列化机制,ObjectOutputStream / ObjectInputStream,对象输入输出流机制,来进行序列化这种默认序列化机制的好处在于,处理起来比较方便;也不需要我们手动去做什么事情,只是,你在算子里面使用的变量,必须是实现Serializable接口的,可序列化即可。但是缺点在于,默认的序列化机制的效率不高,序列化的速度比较慢;序...

2019-09-06 15:02:44 192

原创 Spark调优 2 RDD重构与缓存与广播变量

当第一次对RDD2执行算子,获取RDD3的时候,就会从RDD1开始计算,就是读取HDFS文件,然后对RDD1执行算子,获取到RDD2,然后再计算,得到RDD3默认情况下,多次对一个RDD执行算子,去获取不同的RDD;都会对这个RDD以及之前的父RDD,全部重新计算一次;读取HDFS->RDD1->RDD2-RDD4这种情况,是绝对绝对,一定要避免的,一旦出现一个RDD重...

2019-09-06 12:39:10 142

原创 Spark调优 1 资源分配与并行度

通常情况下 spark的性能调优分成下面四种1、常规性能调优:分配资源、并行度。。。等2、JVM调优(Java虚拟机):JVM相关的参数,通常情况下,如果你的硬件配置、基础的JVM的配置,都ok的话,JVM通常不会造成太严重的性能问题;反而更多的是,在troubleshooting中,JVM占了很重要的地位;JVM造成线上的spark作业的运行报错,甚至失败(比如OOM)。3、shuf...

2019-09-05 21:43:02 208

原创 kylin简介

Kylin最大卖点是快,传统大数据工具并行计算列式存储索引kylin采用了预计算source指的是数据仓库,Cube 指的是预先计算的值,target一般是Hbase,rowkey是各种聚合的参数,比如group by a。。用官方网站上下载的一张图来说明下Kylin系统架构 kylin由以下几部分组成:  · REST Server:提供一...

2019-09-02 15:14:46 322

原创 Hbase 1

首先确保本地已经启动好hdfs集群,因为hbase是建立在hdfs之上的版本号是一个非常大的坑,可以预先下载好一个hbase,然后再lib中找到相应的hadoop版本,然后就去下载相应的hadoop版本我使用的是hbase2.1.0,hadoop版本用的是2.7.4接下去就是配置了,首先配置hbase-env.shjdk路径export JAVA_HOME=/Library/...

2019-08-26 20:46:11 151

原创 flink -----14 Connector

Kafka-connectorKafka中的partition机制和Flink的并行度机制深度结合lKafka可以作为Flink的source和sinkl任务失败,通过设置kafka的offset来恢复应用Kafka Consumer消费策略设置setStartFromGroupOffsets()【默认消费策略】•默认读取上次保存的offset信息•如果是应用第一次...

2019-06-20 17:36:31 126

原创 flink -----13 并行度和生产上的配置

TaskManager与SlotFlink的每个TaskManager为集群提供solt。 solt的数量通常与每个TaskManager节点的可用CPU内核数成比例。一般情况下你的slot数是你每个节点的cpu的核数。l一个Flink程序由多个任务组成(source、transformation和 sink)。 一个任务由多个并行的实例(线程)来执行, 一个任务的并行实例(线程)数...

2019-06-20 17:25:55 724

原创 flink----12 wartermark 案例,接上一节

上一节的案例我们得到了触发window的条件watermark+window 处理乱序数据我们上面的测试,数据都是按照时间顺序递增的,现在,我们输入一些乱序的(late)数据,看看 watermark 结合 window 机制,是如何处理乱序的。nc -l 90000001,15383598820000001,15383598860000001,153835989200...

2019-06-20 17:21:29 621 1

原创 flink----11 Time 和wartermark

针对stream数据中的时间,可以分为以下三种•Event Time:事件产生的时间,它通常由事件中的时间戳描述。•Ingestion time:事件进入Flink的时间Processing Time:事件被处理时当前系统的时间l原始日志如下•2018-10-10 10:00:01,134 INFO executor.Executor: Finished task i...

2019-06-20 17:02:09 977 1

原创 flink----10 window

Window:l聚合事件(比如计数、求和)在流上的工作方式与批处理不同。•比如,对流中的所有元素进行计数是不可能的,因为通常流是无限的(无界的)。所以,流上的聚合需要由 window 来划定范围,比如 “计算过去的5分钟” ,或者 “最后100个元素的和” 。•window是一种可以把无限数据切割为有限数据块的手段l窗口可以是 时间驱动的 【Time Window】(比如:每30秒...

2019-06-20 16:36:13 223

原创 flink--9 fink 容错机制

flink的容错机制主要是通过checkpoint和state来实现的checkpiont机制和容错性Flink使用流重放和检查点的组合来实现容错。检查点与每个输入流中的特定点以及每个操作员的相应状态相关。流数据流可以从检查点恢复,同时通过恢复操作员的状态和从检查点重放事件来保持一致性(正好一次处理语义)。检查点间隔是在执行期间利用恢复时间(需要重播的事件数)来权衡容错开销的一种方法。...

2019-06-20 16:12:58 365

原创 flink--8 fink的一些高级特性 Boradcast Accumulators Distributed Cache

l把元素广播给所有的分区,数据会被重复处理•类似于storm中的allGrouping•dataStream.broadcast()l广播变量允许编程人员在每台机器上保持1个只读的缓存变量,而不是传送变量的副本给tasksl广播变量创建后,它可以运行在集群中的任何function上,而不需要多次传递给集群节点。另外需要记住,不应该修改广播变量,这样才能确保每个节点获取到的值都是一致...

2019-06-20 15:30:03 200

原创 flink---7 flink的DataType和序列化

Flink支持的DataTypelJava Tuple 和 Scala case classlJava POJOs:java实体类lPrimitive Types•默认支持java和scala基本数据类型lGeneral Class Types•默认支持大多数java和scala classlHadoop Writables•支持hadoop中实现了org.apac...

2019-06-12 20:12:08 509

原创 flink---6 dataSet api (2)transformation和parallel和sink

transfromransformation Description Map data.map(new MapFunction<String, Integer>() { public Integer map(String value) { return Integer.parseInt(value); }...

2019-06-12 20:09:21 128

原创 flink---5 dataStream api (2)transformation和parallel和sink

常见transformationTransformation Description Map DataStream → DataStream 输入一个元素,然后返回一个元素,中间可以做一些清洗转换等操作 DataStream<Integer> dataStream = //...dataStream.map(new MapFunction&...

2019-06-12 09:56:53 123

原创 flink---4 dataStream api (1)source

lsource是程序的数据源输入,你可以通过StreamExecutionEnvironment.addSource(sourceFunction)来为你的程序添加一个source。lflink提供了大量的已经实现好的source方法,你也可以自定义source•通过实现sourceFunction接口来自定义无并行度的source,•或者你也可以通过实现ParallelSourceF...

2019-06-11 20:23:24 186

原创 flink----3 HA

jobManager协调每个flink任务部署。它负责任务调度和资源管理。l默认情况下,每个flink集群只有一个JobManager,这将导致一个单点故障(SPOF):如果JobManager挂了,则不能提交新的任务,并且运行中的程序也会失败。l使用JobManager HA,集群可以从JobManager故障中恢复,从而避免SPOF(单点故障) 。 用户可以在standalone或 Y...

2019-06-11 19:10:48 217

原创 flink----2 安装模式

flink有四种部署模式,jvm和local模式比较简单,这里就不说了,主要说standalone模式和yarn模式1.standaolne模式上图是官网上摘录得一张图片,其中master就是jobmananger,worker就是taskmanager,修改flink-conf.yaml中的jobmananger.rpc.address 指定ip作为jobmananger, sl...

2019-06-11 12:51:38 164

原创 flink -------1 flink特点与其他流处理框架对比

Apache Flink 是一个开源的分布式,高性能,高可用,准确的流处理框架。 主要由 Java 代码实现。 支持实时流(stream)处理和批(batch)处理,批数据只是流数据的一个极限特例。 Flink原生支持了迭代计算、内存管理和程序优化。引用官方网站的一张图flink的架构图如下在大数据处理领域,批处理任务与流处理任务一般被认为是两种不同的任务,一个大数据框架...

2019-06-02 22:26:10 1255

原创 基于springboot的Mybatis源码分析 -----------------2 sql执行顺序

可以看到Mapper是一个MapperProxy的代理类执行mapper的方法最终会进入MapperProxy的invoke方法进入MapperMethods#execute。以select为例result = sqlSession.selectOne(command.getName(), param);这个sqlSession是一个SqlSessionTemplateS...

2019-12-19 19:39:18 513

原创 基于springboot的Mybatis源码分析 -----------------1 Mybatis初始化

直接找到MybatisAutoConfiguration这个类,至于为什么要找这个类,可以看下我springboot源码相关的文章。这个类上有一个注解@AutoConfigureAfter(DataSourceAutoConfiguration.class)说明在这之前会优先去解析DataSourceAutoConfiguration这个类,从名字也能看出这个和数据源有关系...

2019-12-19 17:19:10 275

原创 redis的缓存设计

我们的系统引入redis之后虽然会带来很多收益,但是同时也会增加很多负担,所以这就需要我们对缓存根据需求进行一定的设计。缓存引入带来的收益:1.加速读写2.降低后端负载成本1.一个窗口期内的数据不一致2.代码有维护成本3运维成本下面就几个方面来说明缓存的设计-----------------------------------------------------...

2019-12-08 16:57:15 205

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除