Spark Scheduling

从源码的角度稍微来追踪一下Spark中的任务调度是什么样的。网上好多分析的版本跟carolz看的spark版本不一样啊,真忧桑。顺便说一句,Spark源码是用Scala写的,对于新手,那些语法糖让我们实在痛苦>。<,稍稍坚持一下~那么,就开始吧。

Spark Version: 1.0.1

让我们从一个例子开始:

val textFile = sc.textFile("readme.md")
textFile.filter(line=>line.contains("spark")).count()  

Mehr lesen

初学日语遇到的好玩的事

  1. 四月是你的谎言: 四月は君の嘘
    这里的月份的月念作がつ,四月就是しがつ,而表示星期一的月曜日念作げつようび,这里的月就是げつ,虽然两种读法不太一样,但是非常相似呢。(一般读法不同写出来相同的字念起来并不太相似?)

    顺便一起复习一下星期的念法,从周一开始:月(げつ)曜(よう)日(び) - 火(か)曜日 - 水(すい)曜日 - 木(もく)曜日 - 金(きん)曜日 - 土(ど)曜日 - 日(にち)曜日

Mehr lesen

LeetCode7: Reverse Integer

皆さん こんばんは。

今天不爽,做了两个题。不过第二个题(也就是这个题)看起来非常简单。题目意思就是把一个int型的数反过来。比如321就要返回123,-321就要返回-123。

刚拿到题目的时候就想这有什么难的?遍历一遍数字不就完了么。后来发现还是有一些边界情况要考虑的。

比如当输入是-2147483648根本就不能先把它变成正整数,不然就溢出了,这时候特判一下直接返回0(尼玛提交了一次错误答案我才知道如果溢出要返回0啊),另外就是如果在计算过程中有溢出也要返回0,好了讲完了,看代码。

Mehr lesen

LeetCode6: ZigZag Conversion

皆さん こんばんは。

好久么得做题了~今天的题是一个找规律的题目。题意是说要把一个字符串写成锯齿形。这是什么意思呢?题目中给了一个例子。比如对于字符串”PAYPALISHIRING”,就应该写成:

1
2
3
P A H N
A P L S I I G
Y I R

然后再拉成一行,变成”PAHNAPLSIIGYIR”。

所以我们可以通过找规律的方式发现,这个字符串是具有周期性的,周期为2*nRows-2,其中nRows表示要转换成nRows行的锯齿形。

Mehr lesen

A Computational Approach to the Automation of Creative Naming

毕设做的这个方向,被推荐了这个文章,感觉会有参考,来看一看~

####Abstract####

这篇文章就是讲一个新词的生成算法的。这个新词会包含一些基于要起名字的service的类型或是属性的谐音双关(homophonic puns)或是隐喻(metaphors)。噢,好拗口,其实就是生成的新词要满足一定的含义要求。我们为这个新词的生成系统设计了很多语义学的方法,这篇文章就是介绍这些方法的。当然当然还有一些测试什么的。

第一次看这个领域的文章感觉好新鲜好神奇~看下去吧~

Mehr lesen

Sparrow: Distributed, Low Latency Scheduling

这是UC Berkeley的一篇设计分布式系统中的调度的文章,作者是个萌妹纸。本来想贴张照片,想想算了不侵犯人家肖像权,大家自行百度就可以了(偷偷说一句微博上有高清大图)。嗷~~~文章发表在SOSP’13。

###Abstract####

总之就是设计了一个非集中式的,随机采样的方法来实现调度,达到了接近最优的性能。嗯。

为什么说接近最优呢?人家在一个110个机器的集群上进行了测试,表示Sparrow(哦对,这个调度叫Sparrow)的性能能够达到理想的调度算法的12%以内。至于是哪些性能指标,读下去再说吧。

###1 Introduction###

现如今的数据分析集群都跑些越来越短的高扇出的工作。然后就有很多框架做出来满足这些需求(比如Dremel, Spark, Impala等等)。总之就是这些框架的速度越来越快了,作者还给了张图证明了随着时代的发展,数据分析框架的时延越来越低了。人们想了各种方法来使得时延变低,非常辛苦。由于这些系统都是分布式系统,所以调度不能拖后腿啊。于是就有了这篇文章的工作。

Mehr lesen

JXIO发包代码追踪

写一个JXIO的发包代码追踪,一边整理一边贴。贴出的代码都不是完整代码,只按逻辑选择重要部分贴出。

/JXIO/examples/org/accelio/jxio/helloworld/HelloClient.java

1
2
3
4
5
6
ClientSession client;
EventQueueHandler eqh;
Msg msg = this.mp.getMsg();
msg.getOut().put("Hello Server".getBytes("UTF-8"));
client.sendRequest(msg); //发送请求
eqh.run();

Mehr lesen

LeetCode5: Longest Palindromic Substring

题目:对于给定字符串S,求出S的最长回文子串。S的长度不超过1000,而且保证存在唯一的最长回文子串。

题解:今天的题解有两篇文章里讲得非常好了已经,就不多说了。按顺序,看这里,看这里

Mehr lesen

RDDs in Spark

Berkeley曾经发过一篇文章专门解释过RDD是什么。在Spark的源码中也有大段注释解释了什么是RDD。它是一个数据的抽象加上附在它身上的一些操作。以下截取一段RDD.scala中的注释:

Internally, each RDD is characterized by five main properties:

  • A list of partitions
  • A function for computing each split
  • A list of dependencies on other RDDs
  • Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
  • Optionally, a list f preferred locations to compute each split on (e.g. block locations for an HDFS file)

本文主要列举各种RDD以及它们的生成方式。

Mehr lesen

LeetCode4: Median of Two Sorted Arrays

更完这篇我的博客和我在leetcode的刷题同步了,但是不写我一定会忘记算法,所以还是写吧。
sad T_T

闲话少絮,题目的意思是对于两个已经排好序的长度分别是m和n的数组A和B,找他们合并之后数组的中位数。要求算法复杂度为O(log(m+n))

最直接的想法是把两个数组合并然后排序然后取中位数。如果你有一个优秀的算法老师,看到复杂度的那一刻你就会想到二分。。。对没错就是二分,那么怎么二分呢?

直观地,假设m+n为奇数,我们可以想到求中位数,实际上就是求排序过后的第(m+n)/2+1个数。(若m+n为偶数,就是求中间两数的平均数,我们就不讨论了)于是,我们可以把这个问题转换成一个求第k大元素的问题。

Mehr lesen

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