前言
我们生活在数据时代,据统计,06年产生的数据总量为0.18ZB,一ZB等于10亿TB 。不仅仅公司会产生电子数据,比如服务器日志,大数据于我们个人来说也是密切相关,例如我们访问的页面,淘过的产品,搜索过的物品等等,这些所有信息经过适当保存,分析,都会成为有用的数据。
产生
无法分析,挖掘的大数据是毫无用处的。
在分析之前,我们遇到的一个大问题,数据读取。多年以来,我们的磁盘存储在快速增加的同时,访问速度却没有相应大规模提高,现在1TB的硬盘已经相当流行,假设数据传输速度为100M/S,那么我们需要2个多小时来读取,当然,写入熟读就跟慢。
假设我们使用并行式读写,使用100个磁盘,每一个磁盘存储读取其中一部分,那么我们可以很快的读取完毕。
但是事情没有这么简单,还有很多问题需要思考:
A,硬件故障。采用备份,一旦某个硬盘出现故障,使用备份的数据进行恢复,Hadoop使用的HDFS使用的也是备份原理,但是具体机制有所不同(SecondNameNode?)
B,多个节点如何共同完成任务?MapReduce将磁盘读写问题抽象,并转换为 键,值 的计算。
简而言之,Hadoop提供了一个可靠的的共享存储和分析系统,HDFS实现存储,Map/Reduce实现分析处理,这两部分是她的核心。
与其他系统对比
1,关系型数据库管理系统
问题: 为什么不数据库来对磁盘上的数据进行管理呢?
首先磁盘寻址的提高远远的慢于传输速度的提高。如果数据的访问模式中包含大量的磁盘寻址,那么读取大量数据集的时间势必更长(相对于流式的数据读取)
另一方面,如果数据仅仅更新一小部分,那么关系型数据库管理程序更有优势,但是当大数据更新的时候,mapreduce更有优势。
很多时候,可以将Map/Reduce视为
关系型数据库管理系统的补充,它适合一次写入,多次读取数据的应用,而关系型数据库管理系统更适合持续更新的数据集。
两者对比:
另一方面,Map/Reduce对于非结构化或者半结构化数据处理非常有效。换句话说,Map/Reduce输入的键值并不是数据固有的属性,而是由分析人员选择的。
2,网格计算(Grid Computing)
从广义上来讲,高性能计算的方法是将作业分配到集群的各个机器上,比较实用于计算密集型作业,但是如果节点需要访问更大量的计算,那么很多节点将受限于网络宽带的瓶颈而空闲下来等待数据。
Map/Reduce 会尽量在计算节点上存储数据,以实现数据的本地快速访问。数据本地化(Data locality)是Map/Reduce的核心特性。
阅读(2205) | 评论(0) | 转发(0) |