Hadoop基础知识之——数据!数据!

背景

后来在读技术类的书籍时,总是习惯性的跳过前言和介绍部分,直入技术主题,钻研各种知识点。  但其实这并不是一个好习惯,因为其实一个技术或者知识,它的存在意义至关重要,以及它的发展和现状。 当需要我们从架构的角度去决断是否使用某个技术时,就需要我们对这些知识有相对深刻的了解。 比如我们作为架构师拍板部门使用每个Proxy来作为线上数据库的代理,但是好不容易上了以后,过几年这个开源却被抛弃了,或者停止维护了,那其实对整个部门的技术人员来说是很伤的。

这是一个风和日丽的春节假期,我翻看起《Hadoop权威指南》,带着放松的心情浏览了前面章节,但立马就被书中的思路和讲述吸引了。勾起了我对大数据技术学习的兴趣,所以特此写一篇博文,来记录此书第一章节的读后感。

本博内容技术知识点淡薄,求知者可绕行。

数据!数据!

这章的开头我特别喜欢,显示引入了一句名言:

“在古时候,人们用牛来拉重物。当一头牛拉不动一根圆木时,人们从来没有考虑过要想方设法的培育出一种更强壮的牛。同理,我们也不该想方设法打造什么超级计算机,而应该千方百计综合利用更多计算机来解决问题”

——葛蕾丝*霍珀

数据显示,2013年数字世界(digital universe)项目统计得出全球数据总量为 4.4 ZB 并预测在2020年达到44 ZB,约等于10亿 TB! 即使给全世界每人一块硬盘也无法保存这么多数据

举几个比较典型的例子:

  • Facebook存储的照片超过2400亿张,并以每月至少7PB的速度增长。
  • 纽约证交所每天产生的交易数据大约在4TB 至 5TB 之间。
  • 瑞士的日内瓦附近的大型强子对撞机每年产生的数据约为 30PB。

数据的存储于分析

其实问题很明显,在硬盘存储容量多年来不断提升的同时,访问速度(硬盘读取速度)却没有与时俱进。1990年的时候,一个普通硬盘可以存储1370M数据,传输速度为 4.4 M/s,因此只需要5分钟就可以读完整块硬盘的数据。20年过去了,1TB硬盘成为主流,但是传输速度也大约只有100MB/s,读完整个硬盘中的数据至少得花2.5个小时。 写入就更吃力了。

但是,如果可以做到同时从多个硬盘上读数据,比如我们有100个硬盘,每个硬盘存储1%的数据,并行读取,那么不到两分钟就可以读完所有数据。

但是,这岂不是很浪费 ? 而且只要有一个硬盘坏了,那么我的数据岂不是就不完整了 ?

是的,这样的担忧很有道理。但我们有解决办法,如果我们可以实现硬盘共享,那么找一百个人来凑成100块硬盘是不是就可以解决成本问题。 我想用户肯定是乐意通过硬盘共享来压缩数据分析时间的;并且,从统计学的角度来看,用户的分析和工作都是在不同时间点进行的,所以彼此之间干扰不大。

虽然如此,但是对多个硬盘的数据并行读写时,还有更多问题需要解决:

比如我们之前说的硬件故障。 为了避免数据丢失,最常见的做法是复制,即保存数据的副本,Hadoop的文件系统HDFS就是一类。

还有一个很大的问题是大多数分析任务需要以某种方式结合大部分数据来共同完成分析,即从一个硬盘读取的数据可能需要与从另外99个硬盘中读取的数据结合使用,还得保证其正确性。 Mapreduce模型可以相对完美的解决这个问题。

嗯,这样就从实际需求出发,阐述了HDFS和Mapreduce的存在意义和应用而生的场景,其实蛮有意思的。

广义上的Hadoop,不仅仅是批处理

Hadoop发展到现在,已经早就超越了批处理本身的意义。现在,名词 “Hadoop” 有时被用于指代一个更大的、多个项目的组成的生态系统,而不仅仅是HDFS和MapReduce。 这些项目中有许多都是由 Apache 软件基金会管理,该基金会为开源软件项目社区提供支持。

各种组件这里就不详细赘述了,可以根据情况了解。

Apache Hadoop 发展简史

网上找到一篇比较有趣的发展简史概述,挺有意思的,直接摘过来了,原文地址是:https://www.cnblogs.com/xuanku/p/hadoop_history.html

  1. 2002~2004当时第一轮互联网泡沫刚刚破灭, 一个对搜索引擎特别了解但是同时又失去工作的屌丝Doug Cutting(1), 当时主要靠写点技术专栏文章赚赚稿费。

    同时, 他联合了另外一个RD Mike Cafarella, 当时两人觉得以后搜索被一个大公司给一统天下是一个很可怕的事情, 这家公司掌握信息入口, 能翻手为云覆手为雨。情怀!

    所以决定自己搞一个开源的搜索引擎出来, 于是说干就干, 干了个项目叫 Nutch

    两人吭哧吭哧干了一年之后, 终于把这个系统干到能支持1亿网页的抓取, 索引和搜索了。但是当时的网站差不多就有10亿, 网页数量是万亿这个规模。这两哥们也没多想, 就是干, 继续把网页量给干到下一个数量级。

  2. 2004~2006结果很不巧, 在那个时候, Google公布了GFS和MapReduce两篇论文。这两哥们一看, 完了, 这两年白干了, 人家干得那才是漂亮, 自己现在干得实在是太苦逼了, 所有工作都处于人肉运维的状态。

    那咋办呢, 重构呗, 咋重构啊, 抄一个呗。于是就开始抄GFS和MapReduce, Google用的C++做, 他们用的Java做。到2004年的时候, 已经差不多能在40台左右的机器上运行了。

  3. 2006以后Dog Cutting跟好多我们同龄人一样, 做了几年公司, 发现干也干不过google了, 好像创业没啥前途了, 那咋办呢, 就找个大公司吧。这哥们本来一开始想去IBM, 但是人家IBM要做lucene, 不用Nutch。这哥们表示不开心, 就去问Yahoo愿不愿意要Nutch, 人家Yahoo有自己的搜索引擎, 也不愿意要Nutch。不过Yahoo考虑了一下, 说虽然不要你的搜索系统, 但是你底层那几个 GFS/MapReduce 那些东西还是挺有用的嘛, 要不你过来弄这个? Dog Cutting也就从了, 于是把底层系统剥离出来, 把自己儿子的一个大象的玩具的名字Hadoop赋予了这个项目。

    但是到目前为止, Hadoop其实还不能称之为一个独立的大数据项目, 顶多只能称之为一个搜索系统的子项目, 因为他只有一个应用方, 就是搜索。

  4. 2006~当系统进入yahoo了以后, 项目逐渐发展并成熟了起来。首先是集群规模, 从最开始的几十台机器的规模发展到能支持上千个节点的机器, 中间做了很多工程性质的工作, 然后是除搜索以外的业务放, yahoo逐步将自己的广告系统的数据挖掘相关工作也迁移到了hadoop上面来, 进一步成熟化了hadoop系统。

    当有多个用户方在使用hadoop系统的时候, 又必须要增加qos调度队列等机制, 也必须要增加数据安全认证授权机制等等, 各种功能都加到hadoop上面来的时候, hadoop就算是真正成熟起来了。必须要称道的一点是, 在成熟化整个系统的过程当中, yahoo一直都将hadoop做成一个开源软件, 而不是自己的私有软件情怀!

Hadoop 商业化

在2008年的时候, 一位Google的工程师Christophe Bisciglia负责了Google跟IBM合作的一个自然科学项目, 这哥们发现要把当时的Hadoop放到任意一个集群中去运行时一件很困难的事情, 虽然项目是开源的, 但是当时其实主要是yahoo在用, 想要将hadoop商业化推给更多团队在用, 可能想要进一步的动作将其从开源带到业界。

于是这哥们就拉了几个好基友, 一块成立了一个专门商业化hadoop的公司: Cloudera。这个公司做了很多事情, 连接了开源和业界的鸿沟, 为hadoop生态的发展做出了非常重要的贡献。为了更好的提供外围服务, cloudera基于开源的Hadoop版本提供了另外一个叫CDH 的Hadoop版本。

到后来, yahoo在2011年将hadoop团队专门成立了一个子公司Hortonworks专门提供hadoop相关的服务。Baldeschwieler这哥们作为这个公司的老板。Hortonworks这个公司跟Cloudera不一样, Hortonworks不再单独提供一个版本的hadoop给用户选择, 而是完全基于和更新开源版本。但是他提供很牛B的三陪服务, 已经为很多公司, 比如微软, Teradata, Rackspace 合作搭建他们自己的开源hadoop集群, 并在业界形成了很好的口碑。

市场上有两种公司, 一种是听说过Hadoop, 也想用, 但是自己也不知道能拿Hadoop来跑什么应用的公司; 一种是特别复杂, 像把自己一整套数据管理(保证数据可用性和安全性)能管理起来, 但是又不需要组建很大一个团队来做这事儿, 期望能节约成本。

Hadoop对自己的可用性不是很有信心, 对达到很多小公司开箱既得的状态还有差距, 所以Cloudera和Hortonworks都在做更多的胶水,包装,文档的工作。

在销售过程中, Hortonworks老板的经验是, 如果一个公司说: 来来来, 让我们一起在数据里挖点宝贝出来, 那么这一定是一个非常漫长的销售过程, 因为用户自己都没想好到底数据能拿来干嘛。所以一般的销售出路是找到那种能直接为公司节约成本的方案, 毕竟现在还是有很多公司使用很昂贵的存储和分析系统, Hadoop可以为这些公司节约成本。

已经给hadoop商业化扔进去了这么多钱, 市场上还是立竿见影看到了不少效果的:

  1. 引起了很大的业界很大的关注。有很多公司在为hadoop开发系列上层应用, 框架以及管理软件。
  2. 像EMC/Intel等好多公司从预算中拨款搭建自己的hadoop集群。
  3. 所有在销售数据库, BI软件, 以及其他跟数据相关的软件都会跟Hadoop扯上关系。

但是现状的Hadoop商业化也会有一些隐患:

  1. 类似linux的90年代, 会有一万个基于其开源版本之上的不同包装的 XX 版本;
  2. 像Cloudera和Hortonworks之间已经有了很多公开的吵架, 谁对开源社区贡献得最多, 以及部分软件已经不开源了, 或者相互不配合;

谷歌改变大数据的论文

上面提到了Google发表的两篇震惊大数据界的论文,堪称旷世之作,所以中文版也有很多。 想要学习研究Hadoop大数据,这个应该是必读之作了,下面给出中文版本的连接,其实网上有很多,感兴趣可以自己搜一下:

http://blog.bizcloudsoft.com/wp-content/uploads/Google-File-System%E4%B8%AD%E6%96%87%E7%89%88_1.0.pdf

 

 

发表评论