在古时候,人们用牛来拉重物。当一头牛拉不动一根圆木时,人们从来没有考虑过要培育更强壮的牛。同理,我们也不该想方设法打造超级计算机,而应该千方百计综合利用更多计算机来解决问题。
数据!数据!
我们生活在这个数据大爆炸的时代,顺丰每天都会更新物流信息,一天有4000万条数据需要更新,纽约证交所每天产生的交易数据多达1 TB,随着计算机网络的普及,每个人每天都能产出大量的数据,如拍照,定外卖等。保存个人成长过程中产生的所有数据似乎逐渐成为主流,但更重要的是, 计算机产生的数据可能远远超过我们个人所产生的。机器日志、RFID检测仪、传感器网络、车载GPS和零售交易数据等——所有这些都将产生巨量的数据。
有句话说得好:“大数据胜于好算法。”意思是说对于某些应用(譬如根据以往的偏好来推荐电影和音乐),不论算法有多牛,基于小数据的推荐效果往往都不如基于大量可用数据的一般算法的推荐效果。
现在,我们已经有了大量数据,这是个好消息。但不幸的是,我们必须想方设法好好地存储和分析这些数据。
数据的存储和分析
1990年,一个普通硬盘可以存储 1370 MB数据,传输速度为4.4 MB/s,因此只需要5分钟就可以读完整个硬盘中的数据。20年过去了,1TB的硬盘已然成为主流,但其数据传输速度约为100 MB/s,读完整个硬盘中的数据至少得花2.5个小时。 这样的查询速度显然无法满足用户的需求,读完这个硬盘的数据需要这么多时间,更别说写入操作了。
一个很简单的减少读取时间的办法是同时从多个硬盘上读数据。试想,如果我们有100 个硬盘,每个硬盘存储1%的数据,并行读取,那么不到两分钟就可以读完 所有数据。
可是如果我们硬盘容量只使用1%似乎非常浪费,这个时候就需要共享
的概念,100个用户每人一个硬盘1T共享出来,用户肯定很乐于通过硬 盘共享来缩短数据分析时间;并且,从统计角度来看,用户的分析工作都 是在不同时间点进行的,所以彼此之间的干扰并不太大。
虽然如此,但要对多个硬盘中的数据并行进行读写数据,还有更多问题要 解决。第一个需要解决的是硬件故障问题
。一旦开始使用多个硬件,其中 个别硬件就很有可能发生故障。为了避免数羯丢失,最常见的做法是复制 (replication):系统保存数据的复本(replica)
, —旦有系统发生故障,就可以 使用另外保存的复本。(HDFS)
第二个问题是大多数分析任务需要以某种方式结合大部分数据来共同完成分析,即从一个硬盘读取的数据可能需要与从另外99个硬盘中读取的数据 结合使用。各种分布式系统允许结合不同来源的数据进行分析,但保证其 正确性是一个非常大的挑战。MapReduce提出一个编程模型,该模型抽象 出这些硬盘读写问题并将其转换为对一个数据集(由键值对组成)的计算。这样的计算由map和reduce两部分组成,而且只 有这两部分提供对外的接口。与HDFS类似,MapReduce自身也有很髙的可靠性。
简而言之,Hadoop为我们提供了一个可靠的共享存储和分析系统。HDFS 实现数据的存储,MapReduce实现数据的分析和处理。虽然Hadoop还有其他功能,但HDFS和MapReduce是它的核心价值。
稍微总结下
hadoop就是解决了这些问题1、hadoop家族中在数据存储上,提供了hdfs进行分布式存储,且一定存储数据,只能删除,不能修改。
2、运算逻辑采用MapReduce计算框架,并发计算分配为多个Map任务,再将各个Map计算结果汇总成一个结果集Reduce,并提供了容错机制。
网友评论