第一章之初识Hadoop笔记
数据存储与分析
要实现对多个磁盘数据的并行读写 需要解决的很多问题
1 硬件故障问题。硬件多了,发生故障的概率变大。避免数据丢失的是备份。RAID(冗余磁盘阵列),HDFS
2 大多数分析任务需要以某种方式结合大部分数据共同完成分析任务,一个磁盘读取得数据可能需要和另外的99个磁盘中
读取的数据结合使用,各种分布式系统允许结合多个来源的数据并实现分析,但保证其正确性是一个很大的挑战,
MapReduce提出一个编程模型,该模型将上述磁盘读写问题进行抽象,转换为一个对数据集(由 键/值 对组成)的计算。
该计算由map和reduce两部分组成,而只有这两部分提供对外的接口。与HDFS类似,MapReduce自身也有较高的可靠性。
与其它系统比
mapreduce 每个查询至少处理整个数据集或者数据集的很大部分。改变了对传统数据的看法,对存放在磁带什么上面的数据赋予了
创新的机会。
关系型数据库管理系统,为什么使用mapreduce
(1)磁盘的发展:寻址(将磁头移动到特定磁盘位置进行读写操作的过程)是导致磁盘操作延迟的主要原因,而传输速率取决于磁盘的带宽。
如果数据访问存在大量寻址,那么读取大量数据集的时间更长。
(2)如果数据库更新的话,只更新一小部分,那么传统的B树(关系数据库的结构,受限于寻址的比例)更有优势,但是数据库更新大量数据的时候,
B树效率会比MapReduce低很多,因为需要使用 “排序/合并”(sort/merge)来重建数据库。
(3)结构化程度不同的数据的处理。结构化(数据的格式如XML),半结构化(数据松散,可能有格式,但总被忽略,例如电子表格),
非结构化(没有内部结构,文本图像什么的).Mapduce 对非结构化和半结构化的处理有效,因为在处理数据的时候才对数据进行解释,MapReduce输入的
键和值并不是数据固有的属性,由分析人员选择的。关系型数据库规范,为了保证完整不冗余 ,mapreduce的核心假设之一就是它可以进行高速的流式读写操作。web服务器的日志就是非规范化的,so 适合分析日志。
网格计算
高性能计算是把作业分散到集群的各个机器上,这个机器访问由存储区域网络(SAN)组织的共享文件系统,数据节点需要访问大量地数据,那么计算节点会
因为网络带宽的瓶颈问题而空闲下来等待数据。而MapDuce会尽量在计算节点上存储数据,以便实现数据本地快速访问。
数据本地化(data locality)特征是MapReduce的核心特征。 mapreduce通过显示网络拓扑结构尽力保留网络带宽。
大规模分布式的环境下,协调各个进程间的执行是一个很大的挑战。最难得是合理的处理系统部分失效的问题,在不知道远程的进程是否已经失效的
情况下,还要继续完成整个计算。而Mapduce 让程序员无需考虑这个问题,因为自身的系统能够监测到失败的Map或者Reduce任务,并让正常运行的
机器重新执行这些失败的任务,因为采用了 无共享(shared-nothing)框架,所以MapReduce才能够进行失败监测,各个任务间彼此独立。