Skip to content

{ Monthly Archives } 二月 2007

怀念

根据昨天的温度 穿今天的衣服 冻着的是自己 才知道 被窝 肩膀 怀抱 这样的温暖 不在身边已久迎面而来的 还是那阵风的呻吟 左右顾盼里哪还有你的身影 闭上眼 仰着头 风和沙 尽情地铺 北京 春天的已然 天气 却乍暖还寒 心已经冷 风 你何苦呻吟 若是再见你 桃花满树的 灿烂 和我的骄傲 无关

大酺.闲赋

就纸一笺,笔一支,赋的闲情几许。青酒犹在炉,香盈盈满室。 几分逸出。徐书漫语,沉醉往事。恰似昭华留住。凭吊曾经意, 想故人离离,飘零难聚。愁损鬓颜,颠沛踟躇,此心不孤。 当时已惘然,缠绵意,唯留情伤苦。 好教他,千般痴意,说于谁听。 流成渍,滴破尘土。惊醒青苔阶,回头望,寒雨侵树。 声声入,敲心鼓。旧忆何意。 待得今朝醉取,依旧清风如故。

林花谢了春红 太匆匆

记不清第一次知道李煜,知道南唐是在什么时候,也记不清是在哪一本发黄的纸页上,我读到这样的句子: “林花谢了春红,太匆匆,无奈朝来寒雨晚来风。 胭脂泪,留人醉,几时重,自是人生长恨水长东。” 在这首《乌夜啼》里,我首次产生了一种像牛奶糖一样粘粘软软的感觉,后来我知道,那种感觉翻译成书面语,叫惆怅。 那种感觉是那么的模糊,后来渐渐清晰起来。在我的感觉里,在很久很久以前,在南边的南边,江南的烟柳画桥,风帘翠幕之中,参差着十万人家,这里曾经有一个叫做南唐的国家,玉楼琼宇中生活着一个名叫李煜的皇帝。 这一切的一切全都定格在一张发黄的画卷上,经过了那么多那么多的春夏秋冬。颜色渐渐变浅了,人呀花呀草呀树呀,通通都边的模糊不清了,那么多人的故事,终于化成了一片片五光十色的流苏,沉淀在陈年的宣纸上,述说着或许已是物是人非的种种。 但,我独看到了李煜。 李煜不是完人,甚至有点娘娘腔的软弱,赵匡胤曾经赞李煜“好一个翰林学士”,好一个翰林学士,但不是一个好皇帝,李煜兼有一国之君与词人的双重身份,这两种并不相容的身份在他的身上互相渗透互相影响,终于导致他才华横溢却又优柔寡断的个性,甚至亡国之君的命运。有道是:国家不幸诗家幸,赋到沧桑句变工。正是如此,李煜才是有血有肉的真实,词至南唐,因他而豁然开朗,他的词真实的写进了他的情,他的爱,他的恨,他的愁。他的词真实的展示了他的喜,他的怒,他的悲,他的哀,他的乐。这一切都使得他作为一个词人真实的凸现了于历史的混沌之中,穿过时空向我缓缓走来。 李煜是一个优秀的词人,但却不是一个好皇帝,他的身影完全不适合沉浮于功名利禄之中,而应该是乘一叶扁舟,漂流于天地之间,享受那冯虚御风的感觉,李煜的确不是一个好皇帝,这是因为他并不想做一个皇帝,他曾做《渔父》曰: “浪花有意千重雪,桃李无言一对春。 一壶酒,一竿身,世上如侬有几人?” “一棹春风一叩舟,一纶茧缕一轻钩。 花满渚,酒满瓯,万倾波中得自由。” 对他而言,自由不是身为皇帝,呼风唤雨,而是在万倾碧波中,在“千山鸟飞绝,万境人踪灭 ”的世界里,披蓑而钓,抱坛而醉,那种清雅的、平凡的孤独,才叫“自由”。 难道真的是老天弄人吗?但,若没有了他亡国之君的曲折人生,或许就没有了“一江春水向东流”的千古绝唱,我一向不相信命运,但我相信——李后主绝对是命运造就的一位奇人。 作为皇帝的李煜,他是软弱的,甚至是昏庸的,他害死了潘佑,害死了林仁肇,害死了陈乔,害死了周宋、徐楷,更害死了四十年的山河。当他“无言独上西楼”的时候,望着如钩的明月,他是否会后悔,是否自责呢?他那如春草一样“更行更远还生”的离恨中,有没有这些人的空间呢?但无可否认,李煜还是一位仁君,他那种以人为本的精神,那种“挥泪对宫娥”的坦诚,还是让我感动的。 自古愁怨都是无穷无尽的,但惟有李后主笔下的愁更让我留恋,让我垂泪,因为比之男女之情,风花雪月,他的愁绪更深刻,更痛苦。一首《乌夜啼》一片谢春红,一个“无奈”,一句“自是人生长恨水长东”都真实的写出了李煜自己的身影。我不知道他写下“林花谢了春红”的句子时,想到了什么,是恍如前世宫娥的如云秀发?是日渐消瘦的小周后惨淡的愁容?抑或只是一种想象,一种意识的倾泄吧。总之,那艳红如血的春花,把积蓄了太久的能量终于在才春天绽放于梢头,却不想一夜风雨之后,便只是残花遍地。词人只是无奈的看着,叹息着,心疼着,却无法阻止那朝来的寒雨晚来的风。生命,原本就是如此的脆弱,像一片有棱有角的玻璃,虽可折射无数的光华,但轻轻一碰就化做了一滩破碎的梦。 “深院静,小庭空,断续寒砧断续风,无奈夜长人不昧,数声和月到帘栊。”于是,就在这种冷冷的空灵的境界中,李煜结束了他的生命,他终于沉入了那陈年的宣纸,和着许许多多五光十色而又模糊不清的流苏,沉入了江南的草长莺飞当中。 “玉楼琼殿枉回头,天上人间恨未休,不用流珠洵旧谱,一江春水足千秋。”是的,一江春水足千秋,命运和才情都逐渐模糊了,但他的词,他的情,他的真,都会像一江东流不尽的春水——足千秋。 是的,林花谢了春红,太匆匆,但他终究开过,美丽过,虽然匆匆,却也真已足够。 PS:   我最喜欢的词人就是李煜,他的词非常的直率自然,随意中有着无可否认的才情,是我喜欢的风格,这个是念高中时写的,后来还写过关于李煜的一些文章,也许是现在太浮躁了,很难再认真的读李煜了。但我还是非常的怀念那些过去在月下读李煜的清净。

工作琐碎

终于,播客搜索后台的首次修正上线了。 其实说起来,改的东西并不多——就是增加了按点击,星级排序的功能。可是,就这么一点小小的改动,折腾了我足足半个月。 最开始找到 HitQueue ,  一听名字,就知道是返回的结果队列,于是看它的排序,顺藤摸瓜,找到 lessthan ,以为找到了地方了,兴致冲冲的改了,ant编译也通过了,测试机上一测,发现没有效果。log4j 打出来一看,那些期待中用来排序的数字都是 0。后来才知道,这里只是一个归并排序——归并来自多台服务器返回的结果。 周六的时候,在原来做这个的同事的帮忙 下,终于找到要改的地方了,还真不少:先是修改 index 的两个 config(ini与xml),把要的数据建到索引里面去。然后修改 index 下的 dump*** 类,把数据导出来,放在 idx 目录下,与 segment 放在一起。再修改 searcher 包里的 SearchBean ,在搜到了 docid 的情况下,增加我需要的排序功能。为了排序,还需要写一个类实现 SortComparatorSource 接口。于是又分别给点击,星级写了一个类。因为点击也是整数,当时把它和 docid 的类混在一起了,结果返回的 id 和点击数相同,显然是出问题了。后来看了半天,才发现错误的所在。 改完了代码,想要测试,也是一件非常麻烦的事情:更新两个 jar 包,更新两个配置文件,重建索引,重启索引服务(一个)和搜索服务(两个),再刷新页面。在测试机上测试通过了后,往线上部署,就更麻烦了:十多台机器,而且都是需要通过通道机登录! 终于,后台都更新完毕,前台页面还需要我来更新:从播客的测试机上取回最新的代码,更新这边的 svn, 再传到爱问的测试机,再传到发布服务器,再发布,再。。。,没有了,呵呵,终于完事了,万岁! 春节进入倒计时了,节前再也不上新东西了 ^_^。这几天把后台的那些报警都仔细看看,免得春节在家也不能安生。 北京又变天了,似乎要下雪。买了 13 号的 K21 的票,可是是无座的,正郁闷呢。如果一路下雪,可能还会堵啊。不知道要站多久,才能站到家。

夜读李商隐

    只有在庄生的梦里你才醒着 听凭世界的手被诗歌书写 一管笔提起来就悬了千年 只等着泪水凝成珠玉 琴弦断成华年 灵感总是在东风无力的时候不期而至 中世纪的格律之王 在阴谋与爱情之间残喘 把春心托付给杜鹃 把后背暴露给人民 只用两三个典故 便草草了结了一生 义山,你的完美是我彻夜难眠的病根 不写诗的时候你扮演谁: 碌碌无为的幕僚,一身风尘的旅人 温柔的猎艳能手,凄婉的意淫大师 改革开放的牺牲品,慢性糖尿病的受害者 巴山夜雨已经淹没了晚唐的歌声 一代人多年没有回家 而谁是那双秋池涨水的明眸 被千里之外的一首《无题》彻底照亮 在寸寸相思中化为灰烬 而效仿你就意味着在平庸之中成为天才 伤心的话留给自己来说 伤肾的事让给别人去做 用几行七律把时代哄入梦乡 自己守着床头横陈的爱情 和衣斜倚到天明 胡乱梳洗一番 便翻身上马,径直驰入文学史 这时蓬山已经不远,金屋尚未修成 玉桃不偷也罢,灵犀没点就通 你耗尽一生为万物寻找对仗 可你自己的下联是谁 在那个喧闹而热爱偶数的朝代 你是惟一孤独无匹的事物 帝国的秋阳斜照着你的落寞 你一旦开始回忆 历史只好一片惘然 一个汉语的幽灵 穿行于平平仄仄的迷宫 千年之后,世界从你的梦中醒来 伸了个懒腰 决定不再压韵

如果我们再见面

在人潮涌动的街头,象东京爱情故事里的情节一样,你温柔的爱人正在为你撑伞,我们却在彼此的视线里越走越远。 如果生命可以定格,我将选择这一画面。 如果有一天,我们再见面。 日子在希翼与企盼中黯然流逝,微小的伤口变得越来越大,无止尽地溃烂下去。 哲人有过这样一句话:用理智看待这个世界,是个悲剧。用情感看待这个世界,是个喜剧。我选择喜剧,别人说我傻,我却说自己快乐。因为,清醒的人才会快乐。 如果有一天,我们再见面。 我不再是那个憨厚一笑的小男生,因为我已经选择了喝苦丁茶,用沉静的目光打量着世界,学会了用别的方式流泪。 我们之间已经隔着一条无法泅渡的河,在河的对岸我们遥遥相望,过去的悲喜哀乐在河底若隐若现。 你会明白,有些话是在语言的尽头,永远也无法诉说。也许,你会从此懂了我。 如果有一天,我们再见面。 我一定要告诉你一句《阿飞正传》里的台词:“以前我以为这世界上有种鸟从一开始就会飞,直到它死亡的那一天才落地,现在才知道其实它什么地方也没去过,那鸟儿从一开始就已经死了。”这是很久以来就放在心里的话,一直没有机会说给你听。我想要你知道,我就是那只鸟,离开你以后一路不停息的飞,某一天却忽然发现自己还在原地回旋。只是,爱情已经苍老。 一直很喜欢这样的一句话: 有些事是永远无法回头的,想念而无从回望。 有些话,不说出口,并不意味着不能了解。 有些人,不见,并不等于两两相忘。 很喜欢 如果有一天我们再见面 我希望我们只是淡淡一笑 或者 我们永远不见 身边的人,来了,又去了,而你的影子,却从未淡忘。 除了回忆,我们还能拥有什么呢? 那些微笑着淌下的泪,那些笑泣着绽开的欢颜,还记得吗? 我从午夜梦里惊醒,脸颊淌下对你的思念来。 当我们在人潮里偶遇,你会微笑着眨眨你的大眼睛,还是,就这样陌然的离去? 你,还记得曾记爱过的我吗? 现在也只能欣赏 唯一的合照一张 淡忘了的是那个街角 想念的是当时的微笑 生活中交错失望 越想念就越孤单 若再被寂寞迎头赶上 多感伤原来只是正常 你是不是也在品尝 一个人的咖啡和天光 是不是也忽然察觉到 多出时间看天色的变换 如果有一天我们再见面 时间会不会倒退一点 也许我们都忽略 互相伤害之外的感觉 如果哪一天我们都发现 好聚好散不过是种遮掩 如果我们没发现 就给彼此多一点时间

刻在石碑上的名字

柳永 杨柳岸的晨风中浮泛者一种咯血的低吟。 酒醉方醒,纤弱的灵魂被揉搓的连哭泣都失却。 一双男人的手于青楼摇曳的烛光下抚琴, 将一种藕丝的缠与心碎的香味弥漫于无数个历史的书页。 滚烫的梦经不起冰冷戏谑的雨水,骤然间碎了。 于是索性将心按于和着泪水的酒中欲长醉不醒。 一个瘦弱的灵魂蜷缩在黑暗的角落里呻吟。 妓女的送葬的泪水于历史的黄昏被风干成一幅永不褪色的画。 谁又曾想,倚栏杆时不慎滴落的一颗泪珠竟浇开了一朵千年不败的奇葩。 苏东坡 当希冀最终蜕变为觊觎,血管中的血不再是滔滔东去的江水。 抱负之矛永远刺不穿现实之盾。 竹杖芒鞋的温柔拍醒不了熟睡的躯体。 试图的飞扬却是被捏握,以至残喘的声音在深夜埋葬,但却不是呻吟。 一个历史与人为的共同错位。 有心栽花花不开,然则并非无心插柳却扶植了一片强悍淋漓的森林。 于一个多云的天空下踽踽独行的身影萧悲成一段传唱至今的经典神话。 辛弃疾 明月别枝,单薄的战袍抵御不了长夜的寒冷。 于梦的沙场秋点兵却残缺成墙角破败的蛛网,连酒也已彻底冰冷。 于醉眼朦胧中猛握挂于斑驳墙上的昔日的剑,鞘上的尘土迷了眼睛。 泪水滴在苍白的胡须上。 廉颇老矣! 千年默落的战火被时光轻轻擦拭,一个男人的悲鸣却永久地刻在了历史的书页。 号角声渐渐远去。 落满灰尘的剑锈化了沙场秋点兵的回忆。 美芹悲黍,只能徘徊成深夜的低声吟唱。 陶潜 将逃避艺术成一种高度,是无心促成还是蓄意已久。 钟南山在几度传说中被建筑成一座圣殿。 无论见过的没见过的都将其于心中朝拜。 一簇被采摘过千年的菊花,竟仍如此地娇艳,静静地于时间的断面上搁置。 一顶头巾遮住了社会的阳光。 当日落西天,飞鸟皆还时,黄色葫芦中的酒于一个黄昏饮尽。 浅浅吟唱,小声呢喃。 然则于千年后的夜晚为何梦到你幽哽的哭泣,口中直念着:“归去,来,归去……”

湖心亭看雪

崇祯五年十二月,余住西湖。大雪三日,湖中人鸟声俱绝。 是日,更定矣,余拿一小舟,拥毳衣炉火,独往湖心亭看雪。雾凇沆砀,天与云、与山、与水,上下一白;湖上影子,惟长堤一痕、湖心亭一点,与余舟一芥、舟中人两三粒而已。 到亭上,有两人铺毡对坐,一童子烧酒,炉正沸。见余,大喜,曰:“湖中焉得更有此人!”拉余同饮。余强饮三大白而别。问其姓氏,是金陵人,客此。 及下船,舟子喃喃曰:“莫说相公痴,更有痴似相公者。” 这是张岱的小品〈湖心亭看雪〉,是〈陶庵梦忆〉中我最喜欢的一个。因为干净的素洁一新,就如一幅极淡的水墨画。动静醒目,空间通透。 夏日的一个炎炎午后,不知怎么竟想起了〈湖心亭看雪〉。于是,赶忙找了出来。朗诵几遍,顿觉通体舒泰,满口生津了。那干净是一种精神,仿佛把雪传入了炎炎夏天。 张岱把《湖心亭看雪》渲染的极淡,他以一种冷竣简单的姿态在宣纸上洒墨点滴,于是那清新的一痕 一点一芥两三粒 便点活了整个主题,不偏不倚,不轻不浮的现出烂漫的从容,简简几笔,有酣畅淋漓之味,也引出了天水长远的大境界。那一痕”、“一点”、“一芥”、“两三粒也宣染了“苍海一栗”的一种人生感悟,这种感悟让看似秀影浮动的小品文更具沧桑感。 “一痕”、“一点”、“一芥”、“两三粒”这淡淡的几笔,是一种痴,是一种追忆逝水年华的情绪,这情绪不是沉痛,而是久扣柴扉门初开的从容蕴藉。因此它让人陶醉咀嚼回味,它让人把这风景化成心灵慰藉。 于是,那灵动的“一痕”、“一点”、“一芥”、“两三粒”已在我心中了。

红朝略传

祖武帝开国元年 49  二月,王师入京,吏民欣喜。北土悉平。帝遣六军征南朝,号百万。 四月,六军涉江,灭南朝。南酋蒋氏遁,入海,据澎湖以抗圣化。迁九鼎于京。江南诸 道初定。 十月,帝登基于天安门。入太庙,誓,立政,改元“开国”。周文正公相。封六辅政亲 王。王曰:“华夏诸民今日立也!” 十一月,大将军刘,西路招抚使邓统王师十万入蜀,前朝余孽星散,蜀,滇,黔传徼而 定。邓平公封西南节度使,坐镇西南以图吐蕃。 是年,帝下《别了,司徒雷登》等三詔,用赐西夷美利坚使,夷使惭去。史称“三詔去 西夷”。  高祖武帝开国二年 50 二月,北狄俄罗斯遣使来朝,盟,世世代代约为兄弟之邦。 六月,高丽内乱。帝詔命停战,不听。 九月,高丽北朝胜。同月,西夷美利坚纠合西夷数十部落侵朝鲜,号“联合国军”。 十月,高丽北朝溃,美夷之师次于鸭绿水。帝以大将军彭桓公为东征元帅,加太子少保 ,太子岸英为监军,统精锐二十万入高丽,战于长津,美夷败绩,精锐白虎铁骑覆灭, 遗尸数万,山林溪涧边,虏血几洒遍。 征西将军王震统兵入西域,设西域都护府,立生产建设兵团。西域归王化。  高祖武帝开国三年 51 十一月,行“三反”。 是年,王师美夷战于朝鲜。美夷惧,求和,帝不许。吐蕃归王化。自是,天下几一统。 太子战死沙场,天下悲恸。  高祖武帝开国四年 52 一月,行“五反”。 八月,帝下“削藩令”,令东北节度使高岗王(开国辅政六亲王之一),华东节度使饶 石公,西南节度使邓平公,中南节度使邓恢公,西北节度使习勋公进京。时人谓之:“ 五马进京,一马当先。” 是年,王师美夷再战于朝鲜。王师据上甘岭,敌纠兵数万以攻,终溃。  高祖武帝开国五年 53 一月,行“新三反”。 三月,俄狄王斯大林死。(注:狄王死不曰崩。) 五月,与俄狄盟。 六月,始料民,口六亿又一百九十又三万八千又三十又五。为前所未有之盛世。 九月,彭桓公平美夷于高丽。高丽中分。北者为朝鲜,南者为韩国。  高祖武帝开国六年 54 帝使使日内瓦,南越中分。 五月,故东北节度使高岗王自杀于北京,天下震惊。谥“幽”,“动祭乱常曰幽”。 八月,江淮大水,平地汹涌不见寸土。 九月,行布票。天下币制革新由是而始。 十二月,御史劾故东北王高,华东王饶怀不臣之心阴谋乱上。帝令有司查办。  高祖武帝开国七年 55 [...]

海量数据分析:Sawzall并行处理

海量数据分析:Sawzall并行处理 Interpreting the Data: Parallel Analysis with Sawzall 作者 Rob Pike, Sean Dorward, Robert Griesemer, Sean Quinlan Google, Inc. (Draft submitted to Scientific Programming Journal) 排版文件参考: http://www.fulin.org/tech/sawzall.htm 概要 超大量的数据往往会采用一种平面的正则结构,存放于跨越多个计算机的多个磁盘上。这方面的例子包括了电话通话记录,网络日志,web文档库等等。只要这些超大量的数据集不能装在单个关系数据库里边的时候,传统的数据库技术对于研究这些超大数据集来说那就是没有意义的。此外,对于这些数据集的分析可以展示成为应用简单的,便于分布式处理的计算方法:比如过滤,聚合,统计抽取,等等。我们在这里介绍这样一种这样的自动化分析系统。在过滤阶段,查询请求通过一种全新的编程语言来快速执行,把数据处理到聚合阶段。无论过滤阶段还是聚合阶段都是分布在上百台甚至上千台计算机上执行的。他们的结果通过比较并且保存到一个文件。这个系统的设计-包括分成两阶段,以及这种新式的编程语言,聚合器的特性-都是在数据和计算分布在很多台机器上的情况下,内嵌使用并行机制的。 1.介绍 有不少数据集都是超大的,或者非常动态,或者就是因为太笨拙了,而不能有效地通过关系数据库进行管理。典型的场景是一组大量无格式文件-有时候是上petabytes(2的50次方1,125,899,906,842,624)-分布在多个计算机上的多个磁盘上。这些文件都包含了无数的记录,这些记录是通常会通过一个轴来组织,比如通过时间轴或者地理轴进行组织。例如:这堆文件可能包含一个web网页仓库,用来构造internet搜索引擎的索引系统,或者这堆文件用来记录上千台在线服务器的健康日志,或者用来记录电话呼叫记录或者商业交易日至,网络包记录,web服务器查询记录,或者高级一点的数据比如卫星图像等等。但是对这些数据的分析经常可以表示成为简单的操作,远比普通SQL查询要简单得操作来完成。举一个例子,我们通常会统计满足某条件的记录数,或者抽取这些记录,或者查询异常记录,或者构造记录中某一个域值的频率柱状图。另一方面,查询也可能会较为复杂,但是这些查询依旧可以展示成为通过一系列简单查询来完成,这些简单查询都可以简单映射到这些文件的记录集上。 图1:5组机架,每组有50-55台计算机,每台计算机有4个磁盘。这样一个架构可以有到250TB的待分析数据量。我们可以在250台以上的计算机上分别执行过滤来极大的的提高并行度,并且把他们的结果通过网络汇聚到一起(参见弧线) 由于数据记录存放在多台计算机上,那么用这些计算机本身的能力来进行分析的方法就相当有效。特别是,当单独每一个步骤都可以表示成为每次对独立的记录进行操作的时候,我们就可以把计算分布到所有这些机器上,这样就能达到相当高的吞吐量。(前边提及的每个例子都有这样的特点)。这些简单操作都要求一个聚合的阶段。例如,如果我们统计记录数,我们需要把每一个机器统计出来的记录数相加,作为最终的输出结果。 所以,我们把我们的计算分成两个阶段。第一个阶段我们对每一条记录分别计算,第二个阶段我们聚合这些结果(图2)。本论文描述的系统更进一步考虑了这个问题。我们用一个全新的编程语言来进行第一个阶段的分析,从处理粒度上,它一次处理一条记录,并且在阶段2严格限制预先定义的处理阶段1产出物的聚合器处理的集合。通过约束本模式的计算量,我们可以达到非常高的吞吐量。虽然并非所有的计算都能适合这样的模式,但是仅仅通过不多的代码就能够驱动上千台机器并行计算还是很划算的。 RAW DATA 图2:总体数据流图,过滤,聚合和比较。每一步都比上一步产生更少的数据。 当然,我们还有很多小问题要解决。计算必须要分解成为小块并且分布到每一个存储数据的节点上进行执行,尽量让计算和数据在一台机器上以避免网络瓶颈。由于使用的机器越多,那么越有可能有机器会在运算中宕机,所以,必须系统必须要有容错能力。这些都是困难但是有趣的问题,但是他们都必须能够在没有人为干预的情况下完成。Google有好几个这样的基础架构,包括GFS[9]和MapReduce[8],通过容错技术和可靠性设计来提供了一个非常强大的框架,可以用来实现一个很大的,分布式处理的并行系统。因此我们着重于我们的目标:清晰的表达分析处理,并且迅速执行分析处理。 2.总览 简要而言,我们的系统通过处理用户提交的用特别设计的编程语言写成的查询,并发的在分布到大量机器上的记录集中,进行记录级别的查询,并且搜集查询结果,通过一组高性能的聚合器进行查询结果的汇聚。这两部发呢别执行,通常分布到不同的计算机集群上。 这样的处理典型类型是并发处理分布在成百上千台计算机上的gigabyte或者数Tbyte数据。一个简单的分析可能需要花去一个CPU好几个月的时间,但是通过上千台计算机的并行处理,只需要几个小时的时间就能处理完。 有两个条件决定着系统的设计。首先,如果查询操作是对记录间可交换的,就是说记录处理的先后顺序是不重要的。我们于是可以用任意的顺序来处理这个查询操作。第二,如果聚合操作是可交换的,中间结果的处理顺序是不重要的。此外,如果他们也是可结合的,中间处理结果可以被任意分组或者分成不同的步骤进行聚合。举一个例子,对于统计数量包括汇总数量来说,无论中间结果如何的累加或者分组结合累加,他们最终的结果都不会受到影响。这个交换性和结合性的约束并不算过分苛刻,他们可以提供很广阔的查寻范围,包括:统计,筛选,取样,柱状图,寻找常见项目,等等。 虽然聚合器组是有限的,但是对于查询阶段来说,应当包括更加通用的内容,我们介绍一种新的解释执行的程序语言Sawzall (解释语言的性能已经足够了:因为程序多数都是比较小的,而且他们需要处理的数据往往很大,所以往往是受I/O的限制,这在性能的章节有所讨论) 一个分析操作如下:首先输入被分解成为要被处理的数据小块,也许是一组独立的文件或者一组记录,这些记录或者文件分布于多个存储节点上。数据小块可以远远多于计算机的数量。 其次,Sawzall解释器开始处理每一个小块数据。这个处理跨越了大量机器,也许数据和机器绑定在一起,也可能数据在临近的机器上而不在一起。 Sawzall程序分别处理每一个输入记录。每一个记录的输出结果,0个或者多个中间结果值-整数,字串,key-value pairs,tuple等等-将和其他记录的输出值合并。 这些中间结果于是被发送到运行聚合器的进一步处理的结点上,这些节点比较和减少中间结果,并且构造终结结果。在一个典型的运行中,主要的计算机集群会运行Sawzall,并且小一点的集群会运行聚合器,这样的结构反映不仅是体现在计算量的差异,也体现在网络负载的均衡考虑;每一个步骤,数据流量都比上一个步骤要少(参见图2)。 当所有的处理都完成之后,结果将被排序,格式化,并且保存到一个文件。 3.例子 用这个简单的例子可以更清楚的表达这样的想法。我们说我们的输入是一个由浮点数记录组成的文件集合。这个完整的Sawzall程序将会读取输入并且产生三个结果:记录数,值得总合,并且值得平方和。 count: table sum [...]