Hadoop
Terark-CTO-雷鹏
Terark可检索压缩技术作者。致力于让数据更小,访问更快。
展开
-
MapReduce Key Revert ——特定数据模式的负载均衡
符号、记法 其中{k,v}指一个Key,Value对,{..} 中第一个分量是Key,第二个是Value。 [e]指一个集合,其中的元素为e。 [{k,v}]就指一个{k,v}的集合。 问题 给定巨大的集合S=[{k1,k2}],对S中每个k1,计算k1相同,而k2不同的元素个数。生成[{k1,distinct_count([k2])}]。 其中S数据的特点是: 1. 不同k1的数目...2009-10-27 11:45:00 · 78 阅读 · 0 评论 -
MapReduce做了多余的事情
MapReduce做了多余的事情 本文假定读者已了解MapReduce。 Map Map阶段一般做三件事情: 1. 切分输入 2. 变换输入为输出 3. 执行可选的Combine 如果要说哪项是多于的,大概就是Combine了。Combine在很多时候可以减少传递给Reduce的数据量;但是,也有一些时候,Combine只是空耗时间: 1. Map输入中重复Key很多时,Combi...2009-10-27 15:25:00 · 89 阅读 · 0 评论 -
希望 MapReduce 直接支持多种输入/输出
希望在 MapReduce 加入这样3个功能: 1. 可以对不同的输入文件指定不同的RecordReader/Mapper 我对这个问题的解决办法是:使用不同的正则表达式来自动识别,很不优美,而且有局限 2. 一个 Map 可以输出多个不同的管道——目前只有一个 我对这个问题的解决办法是:给记录打标记,使用标记来识别管道编号 3. 每...2009-11-16 21:05:09 · 86 阅读 · 0 评论 -
MultipleInputs/MultipleOutpus
仔细看了一下 Hadoop.MapReduce 的代码,发现了两个新类:MultipleInputs/MultipleOutpus,再仔细看它们的详细文档,的确实现了我想要的功能 : 不同的InputPath,可是使用不同的InputFormat 和 Mapper 可以将不同类型(可能是多种计算)的结果写入不同的Reduce Output。 再看一下它们的实现代码,让我大失所望,Mu...2009-11-26 20:53:44 · 180 阅读 · 0 评论 -
MapReduce应该做更少的事情
MapReduce 做的事情太多了。相比 unix 思想,它更多的是提供了一种策略(Policy),而非一种机制(Machanism)。 对于并行计算,如果我仅仅需要一种机制,暂且把这种机制叫做S,那么S只需要提供: 任意切分原始输入 ——split 无依赖的计算 ——map 按依赖切分中间结果 ——partition 有依赖的计算 ——reduce 容错 ...原创 2009-12-28 16:25:19 · 83 阅读 · 0 评论 -
管道的境界
一直在想:如何在 Hadoop.MapReduce 中,插入一个 C 写的 HashFunction,既要高效,又要接口简洁。通过命令行实现调用显然是不行的。刚刚终于想出了:使用管道! 一个非常简单的程序,从stdin读入,写到stdout。多简单!至于效率,管道嘛,本质上就是异步的,自然是buffered&asynchronous 模式。 hash 程序 #include <...2009-07-28 20:15:00 · 78 阅读 · 0 评论 -
Hadoop 模拟多通道 MapReduce
Hadoop C++ Streaming 可以直接读取压缩文件,提取其中的日志。程序流程如下: 每个 map 进程从 stdin 读取压缩的日志文件。产生 3 种不同的记录,每个记录一行,写到 stdout 。每种日志每行第一个字符不同,用来做日志种类的区分。 通过这种方式,可以有效地将计算分布到集群中不同的进程。因为: IP 相同的 ip 记录,一定会被分布到相同的...原创 2009-08-06 15:08:10 · 122 阅读 · 0 评论 -
淘宝的几个大bug
今天,发现硬盘坏了,还好,现在还在保修期内,去淘宝查找当初的商家,结果发现几个大bug: 1. 按时间查历史交易,每次只能查半年,而且还没有任何提示,搞的我很久摸不着头脑 2. 点击历史的宝贝详情(160G硬盘),跳转到了另一个页面(双皇冠/正版72折●Java编程思想(第4版)(中文版)●包邮)。不过还好是同一个商家的。...2010-04-26 11:49:32 · 434 阅读 · 0 评论