Spark
andyshar
这个作者很懒,什么都没留下…
展开
-
40:Spark Streaming中KafkaReceiver内幕实现彻底解密
本期内容:1. KafkaInputDStream源码解密2. KafkaReceiver源码解密Direct方式,是No Receiver方式,和普通Receiver方式,最大的区别,是元数据的管理方式。Direct方式是没有通过zookeeper,由应用自身来管理。KafkaUtils.createDirectStream: /**原创 2016-08-07 17:52:18 · 1724 阅读 · 4 评论 -
39:Spark Streaming中Direct Kafka内幕实现彻底解密
本期内容:1 Spark Streaming下Direct Kafka的实例2 Spark Streaming中Direct Kafka内幕Streaming5minWindow.java:KafkaUtils.createDirectStream:有多个。TopicAndPartitionKafkaCluster:connect、send、sendRequ原创 2016-07-11 10:51:18 · 543 阅读 · 0 评论 -
38:Kafka源码解读Producer工作机制内幕
本期内容:1 Producer代码示例2 Producer源码解密Partition分leader、followers。MokeAdClickedStats.java:ProducerConfig: topicMetadatsRefreshIntervalMsProducer: run、onCompletionKafkaProducer;pars原创 2016-07-11 10:50:45 · 464 阅读 · 0 评论 -
37:Kafka源码解读Consumer内幕解密
本期内容:1 Consumr代码示例2 Consumer源码解密文档中有Old High Level Consumer API。KafkaPropertiesConsumerConsumerConfigKafkaConsumerKafkaUtilsConsumerConnectorZookeeperConsumerConnector:createMe原创 2016-07-11 10:50:08 · 434 阅读 · 0 评论 -
36:Kafka源码解读SocketServer下的Acceptor、Processor、Handler
本期内容:1 SocketServer下的NIO2 Acceptor、Processor、Handler解析SocketServer:startup、n 本期内容:1 SocketServer下的NIO2 Acceptor、Processor、Handler解析SocketServer:startup、newProcessor、shutdow原创 2016-07-11 10:49:35 · 680 阅读 · 0 评论 -
35:Kafka源码解读中分区数、Consumer并行度等
本期内容:1 Kafka中分区深度解析2 Consumer并行度深度解析Partition.scala:Kafka完成稿吞吐性,是由于:1. 对顺序读写采用OS的page级别的缓存,而不是使用内存。2. Topic partition进行分布式KafkaServer:是一个NIO socket server。KafkaControllerpartitio原创 2016-07-11 10:48:47 · 660 阅读 · 0 评论 -
Spark定制班第34课:Kafka源码解读概述和入口类经典解读
本期内容:1 Kafka源吗概述2 Kafka入口类经典解读下载Kafka源码Kafka-0.10.0.0-src。ClientUtils...fetchTopicMetadata...cluster下的类:Cluster、Broker、...Comsumer下的类:SimpleConsumer、...producer下的类:Producer、...co原创 2016-07-11 10:48:10 · 548 阅读 · 0 评论 -
Spark定制班第33课:Kafka内核再解密
本期内容:1. Kafka:最快的消息系统2. Kafka内核内幕Kafka第一设计原则是消息的传送速度。3台普通的server可以达到百万条消息/秒。Kafka的消息存储能力是无限的。使用了的数据是保存在consumer上。分布式的实时消息来源。由于是在前面取出数据,在后面追加数据,无需加锁,磁盘顺序查询,寻道时间很快,比随机查询快很多,据说快一万倍。 可以有任意规模的pro原创 2016-06-28 18:38:51 · 474 阅读 · 0 评论 -
Spark定制班第25课:Spark Streaming的StreamingContext启动及JobScheduler启动源码图解
本期内容:1. StreamingContext启动源码图解2. JobScheduler启动源码图解StreamingContext的start方法对INITIALIZED、ACTIVE、STOPPED等状态分别做不同处理。StreamingContext在INITIALIZED状态时,用validate方法对DStreamGraph、checkpoint等做有效检查,然原创 2016-06-12 12:38:43 · 567 阅读 · 0 评论 -
Spark定制班第24课:Spark Streaming的Transformation、Action、Input和Output源码图解
本期内容:1. Spark Streaming的Transformation、Action源码图解2. Spark Streaming的Input、Output源码图解StreamingContext成员:socketStream /** * Create a input stream from TCP source hostname:port原创 2016-06-12 12:37:25 · 837 阅读 · 0 评论 -
Spark定制班第22课:Spark Streaming架构源码图解
本期内容:1. Spark Streaming再思考2. Spark Streaming架构源码图解Spark Streaming的基本架构可以类比食物的消化,来理解流数据的处理。Spark Streaming有多种数据源,流进Spark集群。Spark集群的Receiver收到通讯后,通过RPC通讯机制给Driver,Driver的DStream按照时间进原创 2016-06-12 12:34:24 · 554 阅读 · 0 评论 -
Spark定制班第20课:Spark Streaming中动态Batch Size实现初探
本期内容:1. Batch Duration与Process Time2. 动态Batch Size 不要低估Batch Duration与Process Time匹配的问题。两者关系不是线性规律。不是数据量大,就简单加大Batch Duration来解决问题。前面推荐的论文很重要。参加定制班,不是简单学编程,要懂得设计思想。 我们看论文是怎么实现动态Batch原创 2016-06-05 23:35:22 · 683 阅读 · 0 评论 -
Spark定制班第19课:Spark Streaming架构设计和运行机制大总结
本期内容:1. Spark Streaming中的架构设计和运行机制2. Spark Streaming的深度思考1. Spark Streaming中的架构设计和运行机制前面讨论过,Spark Streaming就是RDD加上了时间维度。RDD模板是DStream,DAG的模板是DStreamGraph。但实际上DStream上的操作和RDD上的操作并不是原创 2016-06-05 23:34:08 · 527 阅读 · 0 评论 -
41:Spark Streaming中WAL内幕实现彻底解密
本期内容:1. WAL框架和实现2. Spark Streaming中WAL的使用从本质点说,WAL框架是一个存储系统,可以简单的认为是一个文件系统,其作用类似于BlockManager。我们首先看一下官方的说明:这里有三个要点:总体上,SparkStreaming是用WAL去保存接收到的数据,并且在写入数据后,要把元数据汇报给Drive原创 2016-08-07 18:03:21 · 1628 阅读 · 4 评论 -
43:Spark Streaming中UI内幕实现彻底解密
本期内容:1. Spark Streaming中UI的监听模式2. Spark Streaming中UI具体源码解析解析UI监听模式今天分享下SparkStreaming中的UI部分,和所有的UI系统一样,SparkStreaming中的UI系统使用的是监听器模式。监听器模式是指,首先注册事件源,当事件或者数据发生改变时,监听器就会接收到这个改变,并对这种改变做出响应,监听器模原创 2016-08-07 18:37:54 · 1290 阅读 · 6 评论 -
56:Spark中的Tungsten内存和CPU的优化使用
本期内容:1. Tungsten内存分配优化使用2. Tungsten的CPU的优化使用今天聚焦于内存和CPU的优化使用,这是Spark2.0提供的关于执行时的非常大的优化部分。对过去的代码研究,我们会发现,抽象的提高,转过来会变成对CPU和内存的使用。也就是说,抽象提升,会对内存对CPU会有很多不必要的使用,执行很多无谓的没有实际作用的操作。比如面向接口调用,就是使用原创 2016-08-07 18:45:10 · 936 阅读 · 0 评论 -
55:Spark中的Tungsten内存分配和管理内幕
本期内容1. Tungsten内存分配内幕2. Tungsten内存管理内幕内存分配和管理内幕恭喜Spark2.0发布,今天会看一下2.0的源码。今天会讲下Tungsten内存分配和管理的内幕。Tungsten想要工作,要有数据源和数据结构,这时候会涉及到内存管理,而内存管理也是后续做很多分析和逻辑控制的基础。内存分配我们从内存分配的入口Memory原创 2016-08-07 18:44:39 · 1202 阅读 · 0 评论 -
54:Spark中的Tungsten-sort Based Shuffle内幕
本期内容:1. Tungsten-sort Based Shuffle原理2. Tungsten-sort Based Shuffle源码ShortShuffleManagerMemoryManagerShuffleExternalSorterTungsten-sort Based Shuffle今天在对钨丝计划思考的基础上,讲解下基于Tungste原创 2016-08-07 18:44:15 · 927 阅读 · 0 评论 -
53:Spark中Tungsten深度思考
本期内容:1. 关于OS、JVM与大数据2. JVM下的性能优化jvm对分布式天生支持整个Spark分布式系统是建立在分布式jvm基础上的,jvm非常伟大的一点在于把不同机器的计算能力联合起来了,jvm也把不同机器的存储能力连接起来了。jvm是怎么做到这一点的,jvm本身就是一个软件,有自己的通讯方式以及自己的一套协议,在进行java或者scala开发的时候,就原创 2016-08-07 18:43:30 · 684 阅读 · 0 评论 -
52:Spark中的新解析引擎Catalyst源码中的外部数据源、缓存及其它
本期内容:1. Catalyst中的外部数据源2. Catalyst中的缓存3. 其它外部数据源处理什么叫外部数据源,是SparkSql自己支持的一些文件格式,以及一些自己自定义格式的文件开发。让我们从文件的读取api开始,可以看到最终会创建一个DataFrame,当中比较关键的是relation方法。首先,会以反射方式获取provider。原创 2016-08-07 18:42:59 · 754 阅读 · 0 评论 -
51:Spark中的新解析引擎Catalyst源码SQL最终转化为RDD具体实现
本期内容:1. 框架与RDD2. Physical Plan与RDD从技术角度,越底层和硬件偶尔越高,可动弹的空间越小,而越高层,可动用的智慧是更多。Catalyst就是个高层的智慧。Catalyst已经逐渐变成了所有Spark框架的解析优化引擎,RDD是通用抽象的数据结果,RDD+Catalyst就构成了Spark的新底层。Catalyst是在RDD原创 2016-08-07 18:42:15 · 585 阅读 · 0 评论 -
50:Spark中的新解析引擎Catalyst源码Physical Plan彻底详解
本期内容:1. SparkPlanner的基本工作机制2. Physical Plan源码彻底详解物理计划是Spark和Sparksql相对比而言的,因为SparkSql是在Spark core上的一个抽象,物理化就是变成RDD,是SparkSql和Spark core之间的衔接点。Physical Plan也是Catalyst变成Spark作业的最原创 2016-08-07 18:41:50 · 974 阅读 · 0 评论 -
49:Spark中的新解析引擎Catalyst源码Optimizer彻底详解
本期内容:1. Optimizer的基本工作机制2. Optimizer源码彻底详解Optimizer是目前为止中catalyst中最重要的部分。主要作用是把analyzed logicalPlan变成optimized LogicalPlan。optimizer和analyzer都继承自RuleExecutor。所以表现形式上都差不多。在analyzer基原创 2016-08-07 18:41:21 · 903 阅读 · 0 评论 -
47:Spark中的新解析引擎Catalyst源码SqlParser彻底详解
本期内容:1. SqlParser的基本工作机制2. SqlParser源码彻底详解把DataFrame、DataSet变成树。Spark中哟很多结构是树结构。树形结构从前面的介绍,我们可以看到sqlParser会返回一个logicalPlan,它是TreeNode的子类。TreeNode,作为一个树形抽象类,SQL语法的解析的时候,所有的元素都是T原创 2016-08-07 18:39:57 · 2562 阅读 · 0 评论 -
46:Spark中的新解析引擎Catalyst源码初探
本期内容:1. SQLContext2. Catalyst核心组件源码SQLContext基于SparkContext。Spark应用程序中可以有多个SparkContext。allowMultipleContextsCatalog类SqlParserAnalyzer:最原始的语法的解析Optimizer:优化器原创 2016-08-07 18:39:29 · 846 阅读 · 0 评论 -
45:神速理解Spark中的新解析引擎Catalyst
本期内容:1. Catelyst本地解析2. Catalyst流程精彩解析Catalyst是Spark SQL中的一套函数式关系查询优化框架。在Catalyst的帮助下,Spark SQL的开发者们只需编写极为精简直观的申明式代码,即可实现各种复杂的查询优化策略,从而大大降低了Spark SQL查询优化器的开发复杂度,也加快了项目整体的迭代速度。 Spark 2.X是以原创 2016-08-07 18:39:03 · 1104 阅读 · 0 评论 -
44:Spark Streaming之Spark内核回顾思考
本期内容:1. Spark Streaming与Spark Core2. Spark Core思考Spark上的子框架,都是后来加上去的。都是在Spark core上完成的,所有框架一切的实现最终还是由Spark core来做的。抛开任何具体的东西,现在考虑下Spark core是个什么东西。解析rdd程序就是数据+代码。所以首先,我们需要考虑s原创 2016-08-07 18:38:44 · 814 阅读 · 0 评论 -
Spark定制班第18课:Spark Streaming中空RDD处理及流处理程序优雅的停止
本期内容:1 Spark Streaming中的空RDD处理2 Spark Streaming程序的停止1 Spark Streaming中的空RDD处理 在Spark Streaming应用程序中,无论使用什么 DStream,底层实际上就是操作RDD。从一个应用程序片段开始,进行剖析:... val lines = ss原创 2016-06-05 23:33:25 · 1847 阅读 · 0 评论 -
Spark定制班第10课:Spark Streaming源码解读之流数据不断接收全生命周期彻底研究和思考
本期内容:1. 数据接收架构设计模式2. 数据接收源码彻底研究 Spark Streaming应用程序有以下特点:1. 不断持续接收数据2. Receiver和Driver不在同一节点中 Spark Streaming应用程序接收数据、存储数据、汇报数据的metedata给Driver。数据接收的模式类似于MVC,其中Driver是Model,Receiv原创 2016-05-23 17:14:47 · 706 阅读 · 0 评论 -
Spark定制班第1课:通过案例对Spark Streaming透彻理解三板斧之一:解密Spark Streaming另类实验及Spark Streaming本质解析
从今天起,我们踏上了新的Spark学习旅途。我们的目标是要像Spark官方机构那样有能力去定制Spark版本。 我们最开始将从Spark Streaming入手。 为何从Spark Streaming切入Spark版本定制?Spark的子框架已有若干,为何选择Spark Streaming?让我们细细道来。 Spark最开始只有Spark Core,没有目前的这些子框原创 2016-05-02 07:41:57 · 10952 阅读 · 1 评论 -
Spark定制班第6课:Spark Streaming源码解读之Job动态生成和深度思考
本期内容:1 Spark Streaming Job生成深度思考2 Spark Streaming Job生成源码解析1 Spark Streaming Job生成深度思考 前面的课程中已经讲了,Spark Streaming的Job是通过JobGenerator生成。这里说的Job和Spark Core中的Job不是一回事。Spark Streaming中的原创 2016-05-17 20:02:08 · 1599 阅读 · 0 评论 -
Spark定制班第2课:通过案例对Spark Streaming透彻理解三板斧之二:解密Spark Streaming运行机制和架构
本期内容:1 解密Spark Streaming运行机制2 解密Spark Streaming架构1 解密Spark Streaming运行机制 我们看看上节课仍没有停下来的Spark Streaming程序运行留下的信息。 这个程序仍然在不断地循环运行。即使没有接收到新数据,日志中也不断循环显示着JobScheduler、B原创 2016-05-05 18:06:51 · 4246 阅读 · 1 评论 -
Spark定制班第17课:Spark Streaming资源动态申请和动态控制消费速率原理剖析
Spark是粗粒度的,即在默认情况下会预先分配好资源,在进行计算。好处是资源提前分配好,有计算任务时就直接使用使用计算资源,不用再考虑资源分配。不好的地方是,有高峰值和低峰值时的资源不一样的。资源如果是针对高峰值情况下考虑的,那势必在低峰值情况下会有大量的资源浪费。Twitter最近推出了会秒杀Storm的Heron,非常值得关注。因为Heron能有更好的资源分配、 更低的延迟。Her原创 2016-05-29 07:20:09 · 2472 阅读 · 0 评论 -
Spark定制班第16课:Spark Streaming源码解读之数据清理内幕彻底解密
这一课讲数据清理的内容。Spark Streaming应用是持续不断地运行着的。如果不对内存资源进行有效管理,内存就有可能很快就耗尽。Spark Streaming应用一定有自己的对象、数据、元数据的清理机制。如果把Spark Streaming研究透彻了,那也就能驾驭Spark的各种应用程序。本课主要内容:1 Spark Streaming数据清理原因和现象原创 2016-05-28 18:54:27 · 851 阅读 · 0 评论 -
0084:StreamingContext、DStream、Receiver深度剖析
StreamingContext、DStream、Receiver深度剖析本课分成四部分讲解,第一部分对StreamingContext功能及源码剖析;第二部分对DStream功能及源码剖析;第三部分对Receiver功能及源码剖析;最后一部分将StreamingContext、DStream、Receiver结合起来分析其流程。一、StreamingContext功能及源码剖析:转载 2016-04-20 16:33:31 · 785 阅读 · 0 评论 -
Spark定制班第15课:Spark Streaming源码解读之No Receivers彻底思考
前面的课程中主要是针对ReceiverInputDStream开展的剖析。 企业级Spark Streaming应用程序开发中在越来越多的采用No Receivers的方式。No Receiver方式有自己的优势,比如更大的控制的自由度、语义一致性等等。所以对No Receivers方式和Receiver方式都需要进一步研究、思考。 其实No Receivers方式更符合操作、处理数据原创 2016-05-27 17:41:40 · 2810 阅读 · 0 评论 -
Spark定制班第14课:Spark Streaming源码解读之State管理之updateStateByKey和mapWithState解密
从这节课开始,简介Spark Streaming的状态管理。 Spark Streaming 是按Batch Duration来划分Job的,但我们有时需要根据业务要求按照另外的时间周期(比如说,对过去24小时、或者过去一周的数据,等等这些大于Batch Duration的周期),对数据进行处理(比如计算最近24小时的销售额排名、今年的最新销售量等)。这需要根据之前的计算结果和新时间周期的数原创 2016-05-26 23:26:47 · 2305 阅读 · 0 评论 -
Spark定制班第9课:Spark Streaming源码解读之Receiver在Driver的精妙实现全生命周期彻底研究和思考
本期内容:1. Receiver启动的方式设想2. Receiver启动源码彻底分析1. Receiver启动的方式设想 Spark Streaming是个运行在Spark Core上的应用程序。这个应用程序既要接收数据,还要处理数据,这些都是在分布式的集群中进行的,应该启动多个Job,让它们分工并能协调。Receiver的工作是接收数据,应该是用Spark Co原创 2016-05-22 17:55:35 · 1060 阅读 · 0 评论 -
Spark学习体会
最近半年多时间里,经常看书学习,特别是看Spark亚太研究院王家林老师的Spark技术视频,觉得受益很多。原创 2015-11-12 07:26:42 · 2669 阅读 · 0 评论 -
学习 Spark Streaming 的重要性
Hadoop主导的大数据计算时代,主要是离线计算。离线处理是技术发展阶段的无赖,理想的处理应该是实时的。大数据计算技术在不断深化。没有经过实时处理的信息,将会是没有价值的信息。Spark来了,Spark Streaming主导的流计算时代已经初露端倪。Flink还没成熟就遇到了Spark Streaming,真是生不逢时。Storm能完全实时,能毫秒级的相应。但你能有多原创 2016-04-17 21:40:30 · 775 阅读 · 0 评论