Spark之SQL解析(源码阅读十)
摘要:如何能更好的运用与监控sparkSQL?或许我们改更深层次的了解它深层次的原理是什么。之前总结的已经写了传统数据库与Spark的sql解析之间的差别。那么我们下来直切主题~ 如今的Spark已经支持多种多样的数据源的查询与加载,兼容了Hive,可用JDBC的方式或者ODBC来连接Spark SQL。
阅读全文
posted @
2016-11-27 14:55
松伯
阅读(5336)
推荐(0) 编辑
Spark BlockManager的通信及内存占用分析(源码阅读九)
摘要:之前阅读也有总结过Block的RPC服务是通过NettyBlockRpcServer提供打开,即下载Block文件的功能。然后在启动jbo的时候由Driver上的BlockManagerMaster对存在于Executor上的BlockManager统一管理,注册Executor的BlockMana
阅读全文
posted @
2016-11-27 10:33
松伯
阅读(1678)
推荐(0) 编辑
Spark Job的提交与task本地化分析(源码阅读八)
摘要:我们又都知道,Spark中任务的处理也要考虑数据的本地性(locality),Spark目前支持PROCESS_LOCAL(本地进程)、NODE_LOCAL(本地节点)、NODE_PREF、RACK_LOCAL(本地机架)、ANY(任何)几种。其他都很好理解,NODE_LOCAL会在spark日志中
阅读全文
posted @
2016-11-26 04:32
松伯
阅读(759)
推荐(0) 编辑
Spark Shuffle数据处理过程与部分调优(源码阅读七)
摘要:shuffle。。。相当重要,为什么咩,因为shuffle的性能优劣直接决定了整个计算引擎的性能和吞吐量。相比于Hadoop的MapReduce,可以看到Spark提供多种计算结果处理方式,对shuffle过程进行了优化。 那么我们从RDD的iterator方法开始: 我们可以看到,它调用了cach
阅读全文
posted @
2016-11-25 00:43
松伯
阅读(1773)
推荐(0) 编辑
Spark常用函数(源码阅读六)
摘要:源码层面整理下我们常用的操作RDD数据处理与分析的函数,从而能更好的应用于工作中。 连接Hbase,读取hbase的过程,首先代码如下: 我们来一点一点解析整个过程。 1、val configuration = HBaseConfiguration.create() 这个用过hbase的伙伴们都知道
阅读全文
posted @
2016-11-24 10:22
松伯
阅读(1657)
推荐(0) 编辑
Spark数据传输及ShuffleClient(源码阅读五)
摘要:我们都知道Spark的每个task运行在不同的服务器节点上,map输出的结果直接存储到map任务所在服务器的存储体系中,reduce任务有可能不在同一台机器上运行,所以需要远程将多个map任务的中间结果fetch过来。那么我们就来学习下shuffleClient。shuffleClient存在于每个
阅读全文
posted @
2016-11-23 22:18
松伯
阅读(1992)
推荐(0) 编辑
SparkConf加载与SparkContext创建(源码阅读四)
摘要:sparkContext创建还没完呢,紧接着前两天,我们继续探索。。作死。。。 紧接着前几天我们继续SparkContext的创建: 接下来从这里我们可以看到,spark开始加载hadoop的配置信息,第二张图中 new出来的Configuration正是hadoop的Configuration。同
阅读全文
posted @
2016-11-22 21:58
松伯
阅读(695)
推荐(0) 编辑
SparkSQL(源码阅读三)
摘要:额,没忍住,想完全了解sparksql,毕竟一直在用嘛,想一次性搞清楚它,所以今天再多看点好了~ 曾几何时,有一个叫做shark的东西,它改了hive的源码。。。突然有一天,spark Sql突然出现,如下图: = =好了,不逗了,言归正传。。。那么一条sql传统数据库会是怎么解析的呢? 传统数据库
阅读全文
posted @
2016-11-21 23:34
松伯
阅读(919)
推荐(0) 编辑
SparkConf加载与SparkContext创建(源码阅读二)
摘要:紧接着昨天,我们继续开搞了啊。。 1、下面,开始创建BroadcastManager,就是传说中的广播变量管理器。BroadcastManager用于将配置信息和序列化后的RDD、Job以及ShuffleDependency等信息在本地存储。紧接着blockManager的创建后创建。如下: 随之我
阅读全文
posted @
2016-11-21 21:54
松伯
阅读(695)
推荐(0) 编辑
SparkConf加载与SparkContext创建(源码阅读一)
摘要:即日起开始spark源码阅读之旅,这个过程是相当痛苦的,也许有大量的看不懂,但是每天一个方法,一点点看,相信总归会有极大地提高的。那么下面开始: 创建sparkConf对象,那么究竟它干了什么了类,从代码层面,我们可以看到我们需要setMaster啊,setAppName啊,set blabla啊。
阅读全文
posted @
2016-11-20 16:38
松伯
阅读(4284)
推荐(1) 编辑
Hbase数据导入导出
摘要:平时用于从生产环境hbase到导出数据到测试环境。 导入数据: 导出数据:
阅读全文
posted @
2016-11-20 15:04
松伯
阅读(1609)
推荐(0) 编辑
Spark代码调优(一)
摘要:环境极其恶劣情况下: import org.apache.spark.SparkContext import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, Row, SQLContext} import org.ap
阅读全文
posted @
2016-11-18 00:21
松伯
阅读(21873)
推荐(0) 编辑
Spark性能测试报告与调优参数
摘要:1、代码中尽量避免group by函数,如果需要数据聚合,group形式的为rdd.map(x=>(x.chatAt(0),x)).groupbyKey().mapValues((x=>x.toSet.size)).collection() 改为 rdd.map(x=>(x.chatAt(0),x)
阅读全文
posted @
2016-11-14 01:16
松伯
阅读(2400)
推荐(0) 编辑
Spark shuffle详细过程
摘要:有许多场景下,我们需要进行跨服务器的数据整合,比如两个表之间,通过Id进行join操作,你必须确保所有具有相同id的数据整合到相同的块文件中。那么我们先说一下mapreduce的shuffle过程。 Mapreduce的shuffle的计算过程是在executor中划分mapper与reducer。
阅读全文
posted @
2016-11-13 14:05
松伯
阅读(7854)
推荐(0) 编辑
Spark 1.6以后的内存管理机制
摘要:Spark 内部管理机制 Spark的内存管理自从1.6开始改变。老的内存管理实现自自staticMemoryManager类,然而现在它被称之为”legacy”. “Legacy” 默认已经被废弃掉了,它意味着相同的代码在1.5版本与1.6版本的输出结果将会不同。需要注意的是,出于兼容性的考虑,你
阅读全文
posted @
2016-11-13 10:29
松伯
阅读(1691)
推荐(0) 编辑