08 2016 档案

Spark Tungsten揭秘 Day3 内存分配和管理内幕
摘要:Spark Tungsten揭秘 Day3 内存分配和管理内幕 恭喜Spark2.0发布,今天会看一下2.0的源码。 今天会讲下Tungsten内存分配和管理的内幕。Tungsten想要工作,要有数据源和数据结构,这时候会涉及到内存管理,而内存管理也是后续做很多分析和逻辑控制的基础。 内存分配 我们 阅读全文

posted @ 2016-08-08 21:54 l_time 阅读(201) 评论(0) 推荐(0)

Spark Tungsten揭秘 Day4 内存和CPU优化使用
摘要:Spark Tungsten揭秘 Day4 内存和CPU优化使用 今天聚焦于内存和CPU的优化使用,这是Spark2.0提供的关于执行时的非常大的优化部分。 对过去的代码研究,我们会发现,抽象的提高,转过来会变成对CPU和内存的使用。也就是说,抽象提升,会对内存对Cpu会有很多不必要的使用,执行很多 阅读全文

posted @ 2016-08-08 21:54 l_time 阅读(403) 评论(0) 推荐(0)

Spark Tungsten揭秘 Day2 Tungsten-sort Based Shuffle
摘要:Spark Tungsten揭秘 Day2 Tungsten-sort Based Shuffle 今天在对钨丝计划思考的基础上,讲解下基于Tungsten的shuffle。 首先解释下概念,Tungsten-sort是对普通sort的一种优化,排序的不是内容本身,而是内容序列化后字节数组的指针(元 阅读全文

posted @ 2016-08-08 21:53 l_time 阅读(299) 评论(0) 推荐(0)

Spark Tungsten揭秘 Day1
摘要:jvm下的性能优化 今天开始谈下Tungsten,首先我们需要了解下其背后是符合了什么样的规律。 jvm对分布式天生支持 整个Spark分布式系统是建立在分布式jvm基础上的,jvm非常伟大的一点在于把不同机器的计算能力联合起来了,jvm也把不同机器的存储能力连接起来了。 jvm是怎么做到这一点的, 阅读全文

posted @ 2016-08-08 21:52 l_time 阅读(402) 评论(0) 推荐(0)

Spark机器学习 Day2 快速理解机器学习
摘要:Spark机器学习 Day2 快速理解机器学习 有两个问题: 机器学习到底是什么 人正常思维的过程是根据历史经验得出一定的规律,然后在当前情况下根据这种规律来预测当前的情况下该怎么做,这种过程就是一个机器学习的过程。 我们可以发现,这个过程里有规律和当前的情况。规律就是模型,当前情况就是当前的数据, 阅读全文

posted @ 2016-08-08 21:51 l_time 阅读(147) 评论(0) 推荐(0)

Catalyst揭秘 Day8 Final
摘要:外部数据源和缓存系统 今天是Catalyst部分的收官,主要讲一些杂项内容。 外部数据源处理 什么叫外部数据源,是SparkSql自己支持的一些文件格式,以及一些自己自定义格式的文件开发。 让我们从文件的读取api开始,可以看到最终会创建一个DataFrame,当中比较关键的是relation方法。 阅读全文

posted @ 2016-08-08 21:50 l_time 阅读(172) 评论(0) 推荐(0)

Catalyst揭秘 Day7 SQL转为RDD的具体实现
摘要:Catalyst揭秘 Day7 SQL转为RDD的具体实现 从技术角度,越底层和硬件偶尔越高,可动弹的空间越小,而越高层,可动用的智慧是更多。Catalyst就是个高层的智慧。 Catalyst已经逐渐变成了所有Spark框架的解析优化引擎,RDD是通用抽象的数据结果,RDD+Catalyst就构成 阅读全文

posted @ 2016-08-08 21:49 l_time 阅读(237) 评论(0) 推荐(0)

Catalyst揭秘 Day6 Physical plan解析
摘要:Catalyst揭秘 Day6 Physical plan解析 物理计划是Spark和Sparksql相对比而言的,因为SparkSql是在Spark core上的一个抽象,物理化就是变成RDD,是SparkSql和Spark core之间的衔接点。 Physical Plan也是Catalyst变 阅读全文

posted @ 2016-08-08 21:48 l_time 阅读(163) 评论(0) 推荐(0)

Spark机器学习 Day1 机器学习概述
摘要:机器学习概述 今天主要讨论个问题:Spark机器学习的本质是什么,其内部构成到底是什么。简单来说,机器学习是数据+算法。 数据 在Spark中做机器学习,肯定有数据来源,在Spark的最底层肯定是RDD封装,这个和Spark具体是什么版本没有任何关系,版本发展只不过是提供了更多高层的API而已,例如 阅读全文

posted @ 2016-08-08 21:48 l_time 阅读(178) 评论(0) 推荐(0)

Catalyst揭秘 Day5 optimizer解析
摘要:Catalyst揭秘 Day5 optimizer解析 Optimizer是目前为止中catalyst中最重要的部分。主要作用是把analyzed logicalPlan变成optimized LogicalPlan。optimizer和analyzer都继承自RuleExecutor。所以表现形式 阅读全文

posted @ 2016-08-08 21:46 l_time 阅读(204) 评论(0) 推荐(0)

Catalyst揭秘 Day4 analyzer解析
摘要:Catalyst揭秘 Day4 analyzer解析 今天继续解析catalyst,主要讲一下analyzer,在sql语句的处理流程中,analyzer是在sqlparse的基础上,把unresolved logical plan生成logcal plan。 Analyzer定义 在analyze 阅读全文

posted @ 2016-08-08 21:45 l_time 阅读(200) 评论(0) 推荐(0)

Catalyst揭秘 Day2 Catalyst源码初探
摘要:Catalyst揭秘 Day2 Catalyst源码初探 这节课从源码角度来讲catalyst。 首先有一个观点要澄清,就是技术不是越底层就越是性能和效率更高。因为除了指令执行性能以外,更重要的是架构层次,里面的核心是数据和代码的本地性问题。如果是能在内存中或者多线程运行,很多时候Java会比C语言 阅读全文

posted @ 2016-08-08 21:44 l_time 阅读(172) 评论(1) 推荐(0)

Catalyst揭秘 Day3 sqlParser解析
摘要:Catalyst揭秘 Day3 sqlParser解析 今天我们会进入catalyst引擎的第一个模块sqlparser,它是catalyst的前置模块。 树形结构 从昨天的介绍我们可以看到sqlParser会返回一个logicalPlan,它是TreeNode的子类。 TreeNode,作为一个树 阅读全文

posted @ 2016-08-08 21:44 l_time 阅读(211) 评论(0) 推荐(0)

Catalyst揭秘 Day1 Catalyst本地解析
摘要:Catalyst揭秘 Day1 Catalyst本地解析 今天开始讲下Catalyst,这是我们必须精通的内容之一: 基本概念 catalyst是一种解析器引擎,而不仅是sql解析引擎。如果研究下catalyst,可以在当中非常方便的添加你想做的任意新的优化技术,在优化技巧方面可以随意的扩展。也很少 阅读全文

posted @ 2016-08-08 21:42 l_time 阅读(261) 评论(0) 推荐(0)

Spark Streaming揭秘 Day35 Spark core思考
摘要:Spark Streaming揭秘 Day35 Spark core思考 Spark上的子框架,都是后来加上去的。都是在Spark core上完成的,所有框架一切的实现最终还是由Spark core来做的。抛开任何具体的东西,现在考虑下Spark core是个什么东西。 解析rdd 程序就是数据+代 阅读全文

posted @ 2016-08-08 21:41 l_time 阅读(170) 评论(0) 推荐(0)

Spark Streaming揭秘 Day34 解析UI监听模式
摘要:Spark Streaming揭秘 Day34 解析UI监听模式 今天分享下SparkStreaming中的UI部分,和所有的UI系统一样,SparkStreaming中的UI系统使用的是监听器模式。监听器模式是指,首先注册事件源,当事件或者数据发生改变时,监听器就会接收到这个改变,并对这种改变做出 阅读全文

posted @ 2016-08-08 21:40 l_time 阅读(222) 评论(0) 推荐(0)

Spark Streaming揭秘 Day32 WAL框架及实现
摘要:Spark Streaming揭秘 Day32 WAL框架及实现 今天会聚焦于SparkStreaming中非常重要的数据安全机制WAL(预写日志)。 设计要点 从本质点说,WAL框架是一个存储系统,可以简单的认为是一个文件系统,其作用类似于BlockManager,我们首先看一下官方的说明: 这里 阅读全文

posted @ 2016-08-08 21:39 l_time 阅读(266) 评论(0) 推荐(0)

Spark Streaming揭秘 Day33 checkpoint的使用
摘要:Spark Streaming揭秘 Day33 checkpoint的使用 今天谈下sparkstreaming中,另外一个至关重要的内容Checkpoint。首先,我们会看下checkpoint的使用。另外,会看下在应用程序重新启动时,是如何处理checkpoint的。 Checkpoint保存什 阅读全文

posted @ 2016-08-08 21:39 l_time 阅读(302) 评论(0) 推荐(0)

Kakfa揭秘 Day9 KafkaReceiver源码解析
摘要:Kakfa揭秘 Day9 KafkaReceiver源码解析 上一节课中,谈了Direct的方式来访问kafka的Broker,今天主要来谈一下,另一种方式,也就是KafkaReceiver。 初始化 Direct和普通Receiver方式,最大的区别,是元数据的管理方式。Direct方式是没有通过 阅读全文

posted @ 2016-08-08 21:37 l_time 阅读(250) 评论(0) 推荐(0)

Kakfa揭秘 Day8 DirectKafkaStream代码解析
摘要:Kakfa揭秘 Day8 DirectKafkaStream代码解析 今天让我们进入SparkStreaming,看一下其中重要的Kafka模块DirectStream的具体实现。 构造Stream 首先,从工厂方法开始,在工厂方法createDirectStream中,有两类关键内容: Decod 阅读全文

posted @ 2016-08-08 21:36 l_time 阅读(302) 评论(0) 推荐(0)

Kakfa揭秘 Day7 Producer源码解密
摘要:Kakfa揭秘 Day7 Producer源码解密 今天我们来研究下Producer。Producer的主要作用就是向Kafka的brokers发送数据。从思考角度,为了简化思考过程,可以简化为一个单机版本的消息队列,只是这个消息队列在远程。 Producer.java 让我们从官方的Exampl 阅读全文

posted @ 2016-08-08 21:35 l_time 阅读(156) 评论(0) 推荐(0)

Kakfa揭秘 Day5 SocketServer下的NIO
摘要:Kakfa揭秘 Day5 SocketServer下的NIO 整个Kafka底层都是基于NIO来进行开发的,这种消息机制可以达到弱耦合的效果,同时在磁盘有很多数据时,会非常的高效,在gc方面有非常大的优势,而socketServer就是其中的代表。 今天会分析下socketServer,分析下其中三 阅读全文

posted @ 2016-08-08 21:34 l_time 阅读(140) 评论(0) 推荐(0)

Kakfa揭秘 Day6 Consumer源码解密
摘要:Kakfa揭秘 Day6 Consumer源码解密 今天主要分析下Consumer是怎么来工作的,今天主要是例子出发,对整个过程进行刨析。 简单例子 Example中Consumer.java是一个简单的例子: 首先,是有一些重要的参数: MAX_POLL_RECORDS_CONFIG 表示一次获取 阅读全文

posted @ 2016-08-08 21:34 l_time 阅读(155) 评论(0) 推荐(0)

Kakfa揭秘 Day4 Kafka中分区深度解析
摘要:Kakfa揭秘 Day4 Kafka中分区深度解析 今天主要谈Kafka中的分区数和consumer中的并行度。从使用Kafka的角度说,这些都是至关重要的。 分区原则 Partition代表一个topic的分区,可以看到在构造时注册了zookeeper,也就是说kafka在分区时,是被zk管理的。 阅读全文

posted @ 2016-08-08 21:33 l_time 阅读(279) 评论(0) 推荐(1)

Kakfa揭秘 Day3
摘要:Kafka源码概述 今天开始进入Kafka的源码,本次学习基于最新的0.10.0版本进行。由于之前在学习Spark过程中积累了很多的经验和思想,这些在kafka上是通用的。 总体 首先从总体方式进行一下分析,进入最关键的core。 从源码角度看,最关键的是标红的几个模块。 admin是管理模块,主要 阅读全文

posted @ 2016-08-08 21:32 l_time 阅读(132) 评论(0) 推荐(0)

Kakfa揭秘 Day2 Kafka内核再揭秘
摘要:Spark Streaming揭秘 Day33 Kafka内核再揭秘 优秀的框架会把引擎做到极致,Kafka就是这样,让我们再深入一下研究。 设计目标 kafka系统有着比较独特的的设计,包括5点: kafka第一设计原则是速度,不是个考虑功能的消息组件,主要考虑的是消息的传递速度,为了速度可以舍弃 阅读全文

posted @ 2016-08-08 21:31 l_time 阅读(145) 评论(0) 推荐(0)

Kakfa揭秘 Day1 Kafka原理内幕
摘要:Spark Streaming揭秘 Day32 Kafka原理内幕 今天开始,会有几天的时间,和大家研究下Kafka。在大数据处理体系中,kafka的重要性不亚于SparkStreaming。可以认为sparkstreaming掌控处理,而kafka掌控流程控制。 让我们来了解下sparkstrea 阅读全文

posted @ 2016-08-08 21:30 l_time 阅读(189) 评论(0) 推荐(0)

Spark Streaming揭秘 Day31
摘要:集群模式下SparkStreaming日志分析(续) 今天延续昨天的内容,主要对为什么一个处理会分解成多个Job执行进行解析。 让我们跟踪下Job调用过程。 从框架代码开始 我们从生成Job开始,generateJobs方法产生了Job,之后,提交了一个JobSet来进行处理。 JobSet会根据输 阅读全文

posted @ 2016-08-08 21:29 l_time 阅读(124) 评论(0) 推荐(0)

Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析
摘要:Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析 今天通过集群运行模式观察、研究和透彻的刨析SparkStreaming的日志和web监控台。 Day28已经分析过local模式下的日志,集群模式会比较类似,这次主要是对集群模式在的web监控台,进行统一 阅读全文

posted @ 2016-08-08 21:28 l_time 阅读(192) 评论(0) 推荐(0)

Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
摘要:Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming 在Spark2.x中,Spark Streaming获得了比较全面的升级,称为Structured Streaming,和之前的很不同,功能更强大,效率更高,跟其他的组件整合性也更好 阅读全文

posted @ 2016-08-08 21:27 l_time 阅读(303) 评论(0) 推荐(0)

Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕
摘要:Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕 今天会逐行解析一下SparkStreaming运行的日志,运行的是WordCountOnline这个Demo。 启动过程 SparkStreaming启动是从如下日志开始: 16/06/ 阅读全文

posted @ 2016-08-08 21:26 l_time 阅读(341) 评论(0) 推荐(0)

Spark Streaming揭秘 Day27
摘要:Spark Streaming揭秘 Day27 Job产生机制 今天主要讨论一个问题,就是除了DStream action以外,还有什么地方可以产生Job,这会有助于了解Spark Streaming的本质。 我们从一个print方法触发,来看一下常用的action操作方式: 传统流程 一般来说,产 阅读全文

posted @ 2016-08-08 21:25 l_time 阅读(181) 评论(0) 推荐(0)

Spark Streaming揭秘 Day26 JobGenerator源码图解
摘要:Spark Streaming揭秘 Day26 JobGenerator源码图解 今天主要解析一下JobGenerator,它相当于一个转换器,和机器学习的pipeline比较类似,因为最终运行在SparkCore上,作为应用程序,需要开发者提供一些信息才能够运行。 简述 JobGenerator这 阅读全文

posted @ 2016-08-08 21:24 l_time 阅读(183) 评论(0) 推荐(0)

Spark Streaming揭秘 Day25 StreamingContext和JobScheduler启动源码详解
摘要:Spark Streaming揭秘 Day25 StreamingContext和JobScheduler启动源码详解 今天主要理一下StreamingContext的启动过程,其中最为重要的就是JobScheduler的启动。 StreamingContext启动 我们首先看下start方法的上半 阅读全文

posted @ 2016-08-08 21:23 l_time 阅读(216) 评论(0) 推荐(0)

Spark Streaming揭秘 Day23 启动关闭源码图解
摘要:Spark Streaming揭秘 Day23 启动关闭源码图解 今天主要分析一下SparkStreaming的启动和关闭过程。 从Demo程序出发,主要聚焦在两段代码: 启动代码: 关闭代码: 启动过程 StreamingContext是对SparkContext的封装,是个装饰器模式,相当于给S 阅读全文

posted @ 2016-08-08 21:22 l_time 阅读(200) 评论(0) 推荐(0)

Spark Streaming揭秘 Day24 Transformation和action图解
摘要:Spark Streaming揭秘 Day24 Transformation和action图解 今天我们进入SparkStreaming的数据处理,谈一下两个重要的操作Transfromation和action背后的故事。 InputReceiver 根据前面的课程,我们知道Transformati 阅读全文

posted @ 2016-08-08 21:22 l_time 阅读(140) 评论(0) 推荐(0)

Spark Streaming揭秘 Day22
摘要:架构源码图解 今天主要是通过图解的方式,对SparkStreaming的架构进行一下回顾。 下面这个是其官方标准的流程描述。 SparkStreaming会源源不断的接收数据源,然后根据时间切割成不同的Batch,每个Batch都会产生RDD,RDD运行在Spark的引擎之上,处理会产生运行的结果。 阅读全文

posted @ 2016-08-08 21:21 l_time 阅读(116) 评论(0) 推荐(0)

Spark Streaming揭秘 Day21 动态Batch size实现初探(下)
摘要:Spark Streaming揭秘 Day21 动态Batch size实现初探(下) 接昨天的描述,今天继续解析动态Batch size调整的实现。 算法 动态调整采用了Fix-point迭代算法,其本质是一种回归计算,算法如下: 有点类似机器学习,学习当前SparkStreaming的状况,根据 阅读全文

posted @ 2016-08-08 21:20 l_time 阅读(312) 评论(0) 推荐(0)

Spark Streaming揭秘 Day20
摘要:动态Batch size实现初探(上) 今天开始,主要是通过对动态Batch size调整的论文的解析,来进一步了解SparkStreaming的处理机制,因为比较偏理论,么有代码演示。 缘起 从目前的业务发展来看,线上处理目前来看已经越来越重要,而一个突出的矛盾就是,传统框架Oracle+j2ee 阅读全文

posted @ 2016-08-08 21:19 l_time 阅读(148) 评论(0) 推荐(0)

Spark Streaming揭秘 Day19
摘要:架构设计和运行机制 今天主要讨论一些SparkStreaming设计的关键点,也算做个小结。 DStream设计 首先我们可以进行一个简单的理解:DStream就是加上时间维度的RDD。RDD的模板是DStream,DAG的模板是DStreamGraph,RDD的依赖关系就是DStream的依赖关系 阅读全文

posted @ 2016-08-08 21:16 l_time 阅读(114) 评论(0) 推荐(0)

导航