1. Hadoop发展简史
1.1 Nutch
- Apache Lucene是一个应用广泛的文本搜索系统库,创始人为Dough Cutting
- 2002年,Dough开始和Mike Cafarella打算构建一个web搜索引擎 —— Nutch,面世以后创始人认为不够灵活:不足以解决数以十亿的网页搜索问题。
- 2003年,谷歌的GFS论文发表。2004年,Nutch有了自己的分布式文件系统NDFS
- 2004年,谷歌MapReduce(简称MR)论文发表。2005年初,开发人员在Nutch上实现了一个MR系统。
- 到2005年年中,Nutch的所有主要算法均在MR和NDFS上运行
1.2 Hadoop与雅虎
- MR和NDFS不仅适用于搜索领域,还适用于其他领域。
- 2006年2月,开发人员将MR和NDFS从Nutch中移出来,形成了Lucene的另一个子项目Hadoop
- 几乎同以时间,雅虎关注到了Hadoop,邀请Dough加入团队。雅虎提供了专门的团队和资源,使得Hadoop发展成能以web网络规模运行的系统
- 到2008年2月,雅虎宣布,自己的搜索引擎使用的索引是在有1万个内核的Hadoop集群上运行的
- 2008年1月,Hadoop成为Apache的顶级项目
1.3 Hadoop —— 毛绒象玩具
- Hadoop其实是Dough的孩子给他的毛绒象玩具取得名字,Dough认为小孩子是取名高手,可以轻松的想出一个拼写简单、含义宽泛、不易重复的名字
- 后续的Hadoop生态圈的很多组件,都是以动物命名的,如Pig
1.4 雅虎的搜索引擎
雅虎的搜索引擎有4个主要组成部分:
Crawler
:网页爬虫工具,从网页服务器爬取网页WebMap
:构建已知网页的链接图,边为网页链接,点为网址Indexer
:为最佳页面构建一个反向索引Runtime
:处理用户查询
WebMap
到2005年时,已经不能满足雅虎的业务需求了,需要重构WebMap
。- 2006年1月,Dough加入雅虎,Hadoop开始成为研究对象并成功取代了
WebMap
1.5 Hadoop不仅仅是一个项目
- 提到大数据,不可避免的会提到Hadoop,其实Hadoop已经不再是一个分布式存储和计算引擎了。
- 它已经超越了批处理本身,成为了一个拥有多个涉及分布式计算和大规模数据处理子项目的大数据生态系统
- 交互式SQL:如Hive和Impala
- 迭代计算:Spark
- 流处理:Storm、Spark Streaming等
- 搜索:Solr
1.6 其他知识
- 大数据的来源: 互联网公司、科学机构或金融机构;个人数据(如个人照片、音频、文档等)、机器数据(如机器日志、传感器数据等)
- 大数据胜于好算法: 大量数据 + 一般的算法
优于
少量数据 + 优秀的算法 - 读时模式与写时模式:
①Schema on Write
:数据在摄入之前已经创建好了数据模型(schema),只有满足schema的数据才能被摄入;由于一摄入的数据是经过check的,因此在读取时无需进行处理。写时模式,对读更亲和,适合结构化数据,对应传统RDB系统
②Schema on Read
:数据在摄入时无任何限制,存入系统的数据往往存在脏数据,数据质量不高;在读出时,需要按照一定的schema对齐进行解释。读取过程往往涉及ETL,读取效率较低。读时模式,适合非结构化数据。对应的数据系统
为什么需要Hadoop?
- 从磁盘读数据的瓶颈是磁盘的寻道时间,磁盘寻道时间的提升远低于数据传输速率的提升
- 数据库系统,只更新一小部分,B树非常适合;如果大量更新,B树将涉及排序/合并,效率明显落后于MR
- RDBMS适合于建立索引后的数据集的点查询和更新,更适合持续更新的数据集;MR适合一次写入、多次读取数据的应用
- MR对数据计算任务是可以线性扩展的,任务扩展为N倍,只需要将集群规模扩展为N倍;这是RDBMS无法达到的
2. 总结
- Hadoop的发展简史:与Lucene和Nutch的关系、Hadoop与雅虎
- 如今,Hadoop是大数据生态系统的代名词,而非单指Hadoop项目
- 读时模式和写时模式