深入浅出的Hadoop基础原理(一)

起源

做搜索是技术难度很高的活。首先要存储很多的数据,要把全球的大部分网页都抓下来,可想而知存储量有多大。然后,要能快速检索网页,用户输入几个关键词找资料,越快越好,最好在一秒之内出结果。如果全球每秒有上亿个用户在检索,只有一两秒的检索时间,要在全球的网页里找到最合适的检索结果,难度很大。

Google 用三个最重要的核心技术解决上述问题,它们分别是 GFS、 MapReduceBigTable。Google 发表了它们的设计论文,但没有将它们开源,核心竞争力不可能开源的。论文发表之后,Doug Cutting 等人根据论文的思想,在开源项目 Nutch 的基础上实现了 Hadoop。后来,Doug Cutting 去了Yahoo,继续做 Hadoop。后来,Hadoop 的开发和应用开始爆发了。

在对应关系上看,Hadoop MapReduce 对应 MapReduce,Hadoop Distributed File System (HDFS)对应 GFS,HBase对应 BigTable。一般我们所说的Hadoop 其实是指 Hadoop 体系,它包括 Hadoop MapReduce、HDFS、HBase,还有其他更多的技术

工作原理

先用一种有助于理解的方式描述 MapReduce 和 HDFS 是如何工作的。假如有1000G 的多个文本文件,内容是英文网页,需要统计词频,也就是哪些单词出现过,各出现过多少次,有 1000 台计算机可供使用,要求速度越快越好。

最直接的想法是,把 1000G 的文件分成 1000 份,每台机器处理 1G 数据。处理完之后,其他 999 台机器将处理结果发送到一台固定的机器上,由这台机器进行合并然后输出结果。

Hadoop 将这个过程进行自动化的处理。首先看如何存储这1000G 的文本文件。HDFS在这1000台机器上创建分布式文件系统,将 1000G 的文件切分成若干个固定大小的文件块,每个块一般是 64M 大小,分散存储在这 1000 台机器上。这么多机器,在运行的时候难免会出现有几台突然死机或者挂掉的情况,这导致上面存储的文件块丢失,会导致计算出错。为避免这种情况,HDFS 对每个文件块都做复制,复制成 3~5 个相同的块,放到不同的机器上,这样死机的文件块在其他机器上仍然可以找得到,不影响计算。

MapReduce 其实是两部分,先是 Map 过程,然后是 Reduce 过程。从词频计算来说,假设某个文件块里的一行文”字是“ This is a small cat. That is a small dog.”,那么,Map 过程会对这一行进行处理,将每个单词从句子解析出来,依次生成形如<“this”, 1>, <”is”, 1>, <”a”, 1>, <”small”, 1>, <”cat”, 1>, <”that”, 1>, <”is”, 1>, <”a”, 1>, <”small”, 1>,<”dog”, 1>的键值对,<”this”, 1> “ 表示 this”这个单词出现了 1次,在每个键值对里,单词出现的次数都是 1 次,允许有相同的键值对多次出现,比如<”is”,1>这个键值对出现了 2 次。Reduce 过程就是合并同类项,将上述产生的相同的键值对合并起来,将这些单词出现的次数累加起来,计算结果就是<“this”, 1>, <”is”, 2>, <”a”, 2>, <”small”, 2>,<”cat”, 1>, <”that”, 1>, <”dog”, 1>。

这种方式很简洁,并且可以进行多种形式的优化。比如说,在一个机器上,对本地存储的 1G 的文件块先 Map,然后再 Reduce,那么就得到了这 1G 的词频统计结果,然后再将这个结果传送到远程机器,跟其他 999 台机器的统计结果再次进行 Reduce,就得到 1000G 文件的全部词频统计结果。如果文件没有那么大,只有三四个G,就不需要在本地进行Reduce 了,每次 Map 之后直接将结果传送到远程机器做 Reduce。

具体地,如果用Hadoop 来做词频统计,流程是这样的:

1) 先用HDFS的命令行工具,将1000G 的文件复制到 HDFS 上;

2) 用Java 写MapReduce 代码,写完后调试编译,然后打包成 Jar 包;

3) 执行Hadoop 命令,用这个 Jar 包在 Hadoop 集群上处理 1000G 的文件,然后将结果文件存放到指定的目录。

4) 用HDFS的命令行工具查看处理结果文件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容