Blog

MapReduce的shuffle过程

Content #

每个 Map 任务的计算结果都会写入到本地文件系统,等 Map 任务快要计算完成的时候,MapReduce 计算框架会启动 shuffle 过程,在 Map 任务进程调用一个 Partitioner 接口,对 Map 产生的每个 <Key, Value> 进行 Reduce 分区选择,然后通过 HTTP 通信发送给对应的 Reduce 进程。这样不管 Map 位于哪个服务器节点,相同的 Key 一定会被发送给相同的 Reduce 进程。Reduce 任务进程对收到的 <Key, Value> 进行排序和合并,相同的 Key 放在一起,组成一个 <Key, Value 集合 > 传递给 Reduce 执行。

map 输出的 <Key, Value>shuffle 到哪个 Reduce 进程是这里的关键,它是由 Partitioner 来实现,MapReduce 框架默认的 Partitioner 用 Key 的哈希值对 Reduce 任务数量取模,相同的 Key 一定会落在相同的 Reduce 任务 ID 上。从实现上来看的话,这样的 Partitioner 代码只需要一行。

...

无梁的风

Content #

老姑父一再重复的话就像是巴豆,他一把一把地撒下去,终于泄了人们的心头之火。人群里没人再吭声了。接着是一阵儿一阵儿的咯着痰的咳嗽声……最后,人群里终于有人说:这祸害,也就是吓吓他。

于是,众人都随声附和说:吓吓他。

老姑父指着我说:丢,祸害呀。

我说过,无梁的风是很染人的。

风无处不在。可风又是看不见的,风只有结果,没有形态。

在这里,风还有一个优雅的称呼:“西伯利亚”。这是无梁人从六十年代村中的大喇叭里听来的。那时候广播里经常出现的一个词语是“西伯利亚寒流”。无梁人以自己超常的理解力删除了“寒流”,留下了具有无限想象空间的、美丽的“西伯利亚”。这只能再一次说明,无梁人是不排外的。

无梁人之所以把风称作“西伯利亚”,是沿着光棍汉们的思路走的。这是一种想象力的飘逸,是情绪化了的阴性理解,其中包含着对美的渴望和向往,以及天上掉下个林妹妹的浪漫主义期盼。

在这里,风跟两个字的联系最为密切:一个是“情”,一个是“尘”。“风情”是一个时段的概念,那就像是剪成一段一段、互不连接的奇异景象;或者说是斜阳下在空中飞翔的带一绺断线的风筝,含些许“偷”来的诗意。可过去就过去了,永不重复。而“风尘”却是一个固定而久远的时间概念,那是一种经岁月侵蚀后带有烙印的苍凉,是一种埋在时光尘土里的永久性的定格。也只有在时间的概念上,风和尘才联系在一起。无论春夏秋冬,就是不刮风的日子,也有风的神迹。

From #

生命册

it was caused by a morbid streak in the family.

Content #

Aunt Alexandra, in underlining the moral of young Sam Merriweather’s suicide, said it was caused by a morbid streak in the family. Let a sixteen-year-old girl giggle in the choir and Aunty would say, “It just goes to show you, all the Penfield women are flighty.” Everybody in Maycomb, it seemed, had a Streak: a Drinking Streak, a Gambling Streak, a Mean Streak, a Funny Streak.

Once, when Aunty assured us that Miss Stephanie Crawford’s tendency to mind other people’s business was hereditary, Atticus said, “Sister, when you stop to think about it, our generation’s practically the first in the Finch family not to marry its cousins. Would you say the Finches have an Incestuous Streak?”

...

It's not necessary to tell all you know.

Content #

That Calpurnia led a modest double life never dawned on me. The idea that she had a separate existence outside our household was a novel one, to say nothing of her having command of two languages. “Cal,” I asked, “why do you talk nigger-talk to the—to your folks when you know it’s not right?”

“Well, in the first place I’m black—”

“That doesn’t mean you hafta talk that way when you know better,” said Jem.

...

the old lady(Mrs. Dubose)

Content #

“Come closer,” said Mrs. Dubose. “Come to the side of the bed.”

We moved our chairs forward. This was the nearest I had ever been to her, and the thing I wanted most to do was move my chair back again.

She was horrible. Her face was the color of a dirty pillowcase, and the corners of her mouth glistened with wet, which inched like a glacier down the deep grooves enclosing her chin. Old-age liver spots dotted her cheeks, and her pale eyes had black pinpoint pupils. Her hands were knobby, and the cuticles were grown up over her fingernails. Her bottom plate was not in, and her upper lip protruded; from time to time she would draw her nether lip to her upper plate and carry her chin with it. This made the wet move faster.

...

sometimes we have to make the best of things

Content #

“You don’t care what happens to him,” I said. “You just send him on to get shot at when all he was doin‘ was standin’ up for you.”

Atticus pushed my head under his chin. “It’s not time to worry yet,” he said. “I never thought Jem’d be the one to lose his head over this—thought I’d have more trouble with you.”

I said I didn’t see why we had to keep our heads anyway, that nobody I knew at school had to keep his head about anything.

...

when a child asks you something, answer him

Content #

Atticus said, “You’ve a lot to learn, Jack.”

“I know. Your daughter gave me my first lessons this afternoon. She said I didn’t understand children much and told me why. She was quite right. Atticus, she told me how I should have treated her—oh dear, I’m so sorry I romped on her.”

Atticus chuckled. “She earned it, so don’t feel too remorseful.”

I waited, on tenterhooks, for Uncle Jack to tell Atticus my side of it. But he didn’t. He simply murmured, “Her use of bathroom invective leaves nothing to the imagination. But she doesn’t know the meaning of half she says—she asked me what a whore-lady was…”

...

sub:游戏对现实的修补

1号补丁:主动挑战障碍 #

与游戏相比,现实太容易了。游戏激励我们主动挑战障碍,帮助我们更好地发挥个人强项。 伯纳德·苏茨对游戏的定义

2号补丁:保持不懈的乐观 #

与游戏相比,现实令人沮丧。游戏让我们保持不懈的乐观态度,把精力放在自己擅长且享受的事情上。 必须自己创造幸福,源自内在奖励的幸福有着令人难以置信的适应性。

《传送门》游戏 糊里糊涂的玩法

3号补丁:更满意的工作 #

较之游戏,现实毫无生产力。游戏给了我们更明确的任务,更满意的实操工作。

满意的工作总是从两件事开始的:一是明确的目标,二是实现这一目标的可操作性步骤。明确的目标激励我们采取行动:我们知道自己该做什么,而可操作性步骤确保我们立刻朝着目标前进。

4号补丁:更有把握的成功 #

与游戏相比,现实令人绝望。游戏消除了我们对失败的恐惧,提高了我们成功的机会。

充满希望而又绚烂华丽的失败

5号补丁:更强的社会联系 #

和游戏相比,现实是疏离的。游戏建立了更强的社会纽带,创造了更活跃的社交网络。我们在社交网络用于互动的时间越多,就越有可能产生两种积极的“亲社会情感”。

  1. 快乐尴尬(happy embarrassment)
  2. 间接骄傲(vicarious pride)

情境社交性与一起各自玩

6号补丁:更宏大的意义 #

与游戏相比,现实微不足道。游戏让我们投身到更宏伟的事业当中,并为游戏赋予了宏大的意义。这里的关键词是“宏伟”(Epic)。

虚拟世界里投身宏伟事业

7号补丁:全情投入 #

与游戏相比,现实难以投入。游戏激励我们更积极主动、热情洋溢、自我激励地参与到自己正在做的事情当中。

《家务战争》就是这样完成看似不可能完成的任务。它通过附加不必要的障碍,实施更多激励反馈,把日常家务劳动变成了集体冒险活动。

远征校园里的一天

8号补丁:人生的升级 #

与游戏相比,现实不得要领,而且费力不讨好。游戏帮助我们感受到更多的奖励,让我们全力以赴。

“plusoneme”不是游戏,它没有内置目标,对你如何获得“+1”也不做限制。它更像是一种游戏的姿态、一种大声的沉思:在现实生活中,每当我们克服障碍、努力工作时,不断获得实时的积极反馈会有什么感觉呢?我们会更有动力吗?我们会感觉得到了更多奖励吗?我们会加倍向自己提出挑战吗?

越来越多的平行实境项目暗示,所有这些问题的答案都很肯定:“没错。”帮助我们在真实生活中升级的系统、为我们提供与现实活动相关的自愿障碍、让我们获得更好的反馈,确实可以让我们变得更为努力。

9号补丁:和陌生人结盟 #

与游戏相比,现实孤独而隔离。游戏帮助我们团结起来,从无到有创建更强大的社群。

四方游戏中的地主竞争 陌生人的安慰

10号补丁:幸福的黑客 #

与游戏相比,现实令人难以忍受。游戏让我们更容易接受好的建议,并尝试培养更幸福的习惯。

幸福黑客,是将积极心理学的研究生活转化成游戏机制的实验性设计实践。它尝试让幸福活动感觉起来不那么做作,并将之置入更大的社会背景当中。

11号补丁:可持续的参与式经济 #

与游戏相比,现实难以持续。然而从玩游戏中得到的满足感,是一种无限的可再生资源。

参与就是一种奖励。比如:维基百科。

12号补丁:人人时代的华丽制胜 #

与游戏相比,现实毫无雄心壮志。游戏帮助我们确立令人敬畏的目标,一起达成看似不可能完成的社会使命。

华丽制胜(Epic Win),名词 1.小人物的意外获胜。 2.某种效果好得令人难以置信的神奇东西。 3.对人们成功做了某事之后的最高级别感叹。 4.对发生了某件极其有利且通常不可能的事情表示开心或敬畏:“哇!华丽制胜哦!”

《非凡》的任务榜单设计得就跟《魔兽世界》里的任务日志一样。你浏览所有可用的机会,看到的每一项任务都配有一个故事,介绍它为什么有助于拯救世界,以及如何完成的步骤。这里从不缺少需要完成的重要工作,每一件事都是为了让任何有意行善的人方便完成而设计的。

我的朋友汤姆第一次登录《非凡》,立刻找到了一件感到有信心完成的英勇任务。这项任务是利用他的iPhone手机拍一张“秘密对象”的照片,附上当前的GPS定位标记,上传到数据库。“秘密对象”是一款除颤器,全名叫“自动体外除颤器”,这款设备是为每年上万名心脏病患者病情发作时提供救命电击的。这一任务是非营利组织急救队(First Aid Corps)设计的,它想绘制一份地图,列出全世界每一台面向公众的除颤器。

13号补丁:认知盈余的红利 #

与游戏相比,现实混乱而分裂。游戏帮我们做出更加协调一致的努力,随着时间的推移,它们还将赋予我们合作超能力。

...

移动计算程序到数据所在位置进行计算

Content #

核心思想:既然数据是庞大的,而程序要比数据小得多,将数据输入给程序是不划算的,那么就反其道而行之,将程序分发到数据所在的地方进行计算,也就是所谓的移动计算比移动数据更划算。

具体步骤如下:

  1. 将待处理的大规模数据存储在服务器集群的所有服务器上,主要使用 HDFS 分布式文件存储系统,将文件分成很多块(Block),以块为单位存储在集群的服务器上。

  2. 大数据引擎根据集群里不同服务器的计算能力,在每台服务器上启动若干分布式任务执行进程,这些进程会等待给它们分配执行任务。

  3. 使用大数据计算框架支持的编程模型进行编程,比如 Hadoop 的 MapReduce 编程模型,或者 Spark 的 RDD 编程模型。应用程序编写好以后,将其打包, MapReduce 和 Spark 都是在 JVM 环境中运行,所以打包出来的是一个 Java 的 JAR 包。

  4. 用 Hadoop 或者 Spark 的启动命令执行这个应用程序的 JAR 包,首先执行引擎会解析程序要处理的数据输入路径,根据输入数据量的大小,将数据分成若干片(Split),每一个数据片都分配给一个任务执行进程去处理。

  5. 任务执行进程收到分配的任务后,检查自己是否有任务对应的程序包,如果没有就去下载程序包,下载以后通过反射的方式加载程序。走到这里,最重要的一步,也就是移动计算就完成了。

  6. 加载程序后,任务执行进程根据分配的数据片的文件地址和数据在文件内的偏移量读取数据,并把数据输入给应用程序相应的方法去执行,从而实现在分布式服务器集群中移动计算程序,对大规模数据进行并行处理的计算目标。

Viewpoints #

From #

04 | 移动计算比移动数据更划算

高乒商、敏感的合作雷达和应急处置能力

Content #

超能力不仅仅是新的技能而已。它是一种超越了此前所有技能的技能,有效地改变了我们对力所能及的认知。“超能力”暗示,发生了某种超出传统学习和技能习得模式之外的事情。通常情况下,我们认为练习能让人从零技能水平发展到基本掌握,接着,如果继续练习下去,则能过渡到熟练水平,最终变成精通。但精通,意味着技能水平存在一个有限度、而且可以到达的终点。那么,为什么要止步于精通呢?“超能力”提醒我们,我们正处在一种新能力门槛上,一种此前还没有任何人在任何地方精通过的新能力。这些新能力将发展到什么程度,没有人能说得清楚。

那么,这些新能力到底是什么样子的呢?在未来研究所进行的研究中,我开发了一套模型,说明拥有合作超能力的人如何工作。它包括3种主要的新技巧和新能力,即高“乒商”、敏感的合作雷达和应急处置能力。

非凡的合作者在网络环境中极端外向,哪怕他们在面对面的环境中性格内向或害羞。他们拥有一种我称为高“乒商”或高“PQ”的东西。在技术行业,乒(Ping),是一种计算机网络工具,将信息从一台电脑发送到另一台电脑,检查两者是否相通、是否能起作用。如果是,它会发回“乓”(pong)的信息,建立一段活跃的通信线路。非凡的合作者从不畏惧以“乒”的方式或通过电子手段请求他人参与。当其他人“乒”接自己时,他们发回“乓”的可能性也极高。因此,高乒商就构成了一种社会资本。

当然,对该在什么时候去“乒”谁有着良好的敏感度,也是很有帮助的。如果没有这种敏感度,就会变成发送垃圾参与信息的人。这就是为什么非凡的合作者会发展出一种内部合作雷达,也叫第六感,判断特定任务或使命由什么人来合作最合适。这种第六感来自于构建强大的社交网络,对其他人在哪里做什么以及擅长什么有一种基本认知。它不仅是一个内部系统,也是一个“氛围信息系统”。如 twitter的好友圈、Xbox360的朋友排行榜、《后勤》空闲志愿者系统等,往往能增益合作雷达。你的合作雷达越强,就越能迅速地将他人的能力用到正确的地方去。

最后,世界上最非凡超众的合作者会使用一种我称为“应急处置”(emergensight)的超能力。它指的是在混沌的合作环境下茁壮成长的能力。合作努力的规模越大、范围越是分散,它就越可能变得混沌而难以预测。我们从物理和系统理论中知道:“更大”并不意味着“更多”,而意味着不同。这就是演生原理(principle of emergence)。在你达到某一规模之前无法预测到底会发生什么,局面很可能超出想象的复杂。当然,复杂性增大,混沌的可能也随之增大。

非凡的合作者善于适应复杂而混沌的系统,也能愉悦地在此类系统下工作。他们不在乎杂乱和不确定性,他们沉浸在自己的工作流之中,维持着高层次的视野,而不是在杂乱中茫然若失。他们有毅力,能将大量的信息噪音过滤掉,继续专注于对自己的工作有意义的信号。他们还不停地扫描着其他可能性:对计划外的机会和惊人见解,总是保持开放和洞察心态。如果更为宏伟的目标自动浮现出来,他们愿意绕过或抛弃原有目标。他们不断将视线放得更远,构建更宏伟的图景:想方设法地扩大合作,构建新社群,延长时间周期,迈向更宏伟的目标。

这3种工作方式构成了我眼中非凡合作者的最重要特点。这些特点结合起来,促使我们为大规模的开放事业发掘并贡献个人强项和专业技能。

From #

游戏改变世界