Recent Performance Improvements in Apache Spark: SQL, Python, DataFrame, and More

原文链接

在过去的一年(2014),spark的性能进行了大幅度的改进。spark创造了100TB排序的一个新的世界纪录,以三倍的速度打败了之前Hadoop MapReduce创造的记录,而且只用了十分之一的资源。然后还有spark拥有了一个新的SQL query engine,另外,很多build-in的算法都提速了五倍之多。

回到2010年,我们设计spark的初衷是为了解决MapReduce等批处理框架不擅长的交互式请求(interactive queries)和迭代算法(iterative algorithms)。现在,越来越多的用户因为spark的在这些方面的性能提升而开始使用spark。然而performance optimization is a never-ending processa。随着spark用户的增长,我们还会找更多可以提升性能的地方。以下就要讲一些已有的性能提升的点了。

Mehr lesen

Matplotlib整理

就是要画图然后学长给推荐了Matplotlib,于是速成了一下。有些用过的功能记在这里作为备忘。

话说速成python什么的感觉还是很爽的。这语言好好用。

以下的代码请删除中文之后再运行,不然貌似会有编码方面的问题。

然后这一段字是凑字数的,不然不好看。

Mehr lesen

日文歌系列-团子大家族

嘛~不如来学日文歌吧~

今天要学的是《Clannad》的主题曲《だんご大家族》,是一首特别萌的歌曲。因为歌词简单,曲子速度也比较慢,所以比较好学(其实主要是都是吃的)。下一部番补《Clannad》吧。(补《食梦者》中。。。)说起来第一次看《Clannad》应该是高中的时候了,跟小伙伴一起看了一点然后就没再碰过,也是时候补番了。少年少女,补起来吧~

Mehr lesen

扒谱子什么的 X 聪明的寂寞

事情是这样的,感谢网易云音乐给我随机到了这首聪明的寂寞。好好听呀,然后又是吉他伴奏的,就很想要学。网上搜了搜,却连个文本谱都么的。于是决定自己扒谱。前奏很不错,但是大约需要两把吉他?然后就从唱的地方开始啦。右手指法是53253253,根音自己跟和弦换换就好。

戳这里↓

Mehr lesen

Spark Storage

我们终于从Schedule到Execute又写到BlockManager了。这是carolz最早开始好奇的地方,但是不看完前两个部分真是完全没办法看这个部分呢。所以其实Spark的几个大块内容(schedule, execute, blockmanager, network)我们只剩下这个没有好好看过了,不禁有点小激动呢,感觉距离源码看完的一天又近了一步。话说最近读了Intel关于Spark GC优化的文章,感觉改源码这件事情还是蛮炫酷的。虽然之前我们也动手改过,然而并不能算一次比较成功的修改。前路漫漫~

好了闲话少叙,在SparkExecute中我们略过了ShuffledRDD之前的RDD是怎么往bucket里写数据的,也略过了Shuffled是怎么读这个数据的。在这篇文章里我们正要好好看看这件事情。

Mehr lesen

LeetCode226: Invert Binary Tree

本来是一题一题刷的,但是事出突然是吧,今天就做了LeetCode226。

事出有因,Max Howell被google拒了,然后在tweet发了一条状态:

Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.

然后全世界的码农们都炸开锅了。于是LeetCode上也出了Invert Binary Tree。然后大家都非常愉快地开始刷这道把Max Howell拒了的题╮(╯▽╰)╭

Mehr lesen

Start from HadoopRDD

我们在之前的文章中介绍过一些RDD的创建,然而并没有解释过各个RDD背后的细节,各个RDD是怎么被拆分到不同的Partition的?拆成几份?每份存在哪?这都是我们还没有解决的问题。本文将从HadoopRDD着手,追溯HadoopRDD的生成过程与实现细节,来看一看Spark中的数据分区是怎么回事。

HadoopRDD在应用程序中调用SparkContext的textFile,从而调用hadoopFile被创建。

Mehr lesen

Spark Execute

今天是6月1号星期一,农历xxxx(艾玛我不知道)。传说中的小孩子过的一个节日。俗话说得好,每逢佳节倍思亲,等下去给娘亲打个电话就酱。

今天也是每周开组会的日子,机智的我就在刚才已经想好这周组会讲什么了,于是可以淡定地继续写日志了。因为不能絮絮叨叨好好写一篇纯有感而发的日志,所以只能在每篇日志开头絮絮叨叨。

顺便做个小结,一般小结都在最后做,但是因为太!重!要!所以开头说。这个任务执行的过程基本就是如下调用链,我们也会按照这个调用链往下讲:

TaskRunner.run->Task.run->Task.runTask->RDD.iterator->RDD.computeOrReadCheckpoint->RDD.compute

好了,还是接着上次的Spark任务调度,现在要在每个Worker上执行task了。上回我们说到要在启动的Executor上执行任务了,就像这样:

Mehr lesen

MapReduce Review

本文是carolz童鞋整理的MapReduce课复习资料,由2015年复习提纲Slide整理而来。

###Ch1 并行计算技术简介###

####1 为什么需要并行计算####

#####提高计算机性能的基本手段#####
提高字长 流水线微体系结构技术 提高集成度 提升主频

#####迫切需要发展并行计算技术的主要原因#####
单处理器性能提升达到极限
应用规模和数量急剧增大,超大的计算量/计算复杂度

Mehr lesen

LeetCode8: String to Integer (atoi)

这个题是写一个atoi函数,考虑的情况有点多。题目要求里面讲了输入一个字符串,从它的第一个非空格的字符开始如果是一个合法的数字,就把它打印出来,忽略这个数字后面的其它字符。

如果开始的空格之后构不成数字,则打印0。如果超出了int的范围,则打印INT_MAX或者INT_MIN。

这是一个easy的题目,只要考虑清楚所有情况就没有问题了。

Mehr lesen

已经有人次访问carolz的小站啦 ( •̀ ω •́ )y