Hadoop :内部工作机制非常复杂,是一个集分布式系统理论、实际工程理论和常识于一体的系统。
提供用于构建分布式系统的每一个工具(用于数据存储、数据分析和协调处理)都非常简单。这些工具都非常抽象,对偶尔有大量数据需要存储的程序员、有大量数据需要分析的额程序员、有大量计算机需要管理的程序员等时期利用Hadoop构建基础平台,满足需要。
我特么才发现,需要点java基础,如果要看Hadoop的话。
学前篇:
2006年数字世界(digital universe)项目统计的出全球数据总量为0.18ZB并预测在2011年将达到1.8ZB。
小姿势:1ZB=10^21字节=1000EB(exabytes)
1 000 000 PB = 10亿TB(terrabytes)
数据来源可能为2007年
纽约证交所曾有段时间统计数据:一天交易数据多达1TB
FaceBook 存储的照片至少100亿张,存储容量约为1PB
Ancestry.com存储的数据约为2.5PB
互联网档案馆(The Internet Archive)存储的数据量约为2PB,并以每月至少20TB的速度持续增长
瑞士日内瓦附近的大型强子对撞机每年产生的数据约为15PB
MyLifeBits:微软研究院的一个研究项目,研究显示,在不久的将来,个人信息档案将日益普及。MyLifeBits的一个实验是获取和保存每个人的对外联系情况,供日后存取。收集的数据包括每分钟拍摄的照片等,数据量每月约为1GB。当存储成本急剧下降以至于可以存储音频和视频时,MyLifeBits项目在未来的存储的数据量将是现在的很多倍。
生活中我们一般遇到的问题:
在硬盘存储容量多年来不断提升的同时,访问速度(硬盘数据读取速度)却没有与时俱进。1990年,一个普通硬盘可以存储1370MB数据,传输速度为4.4MB/s,因此只需要5分钟就可以读完整个硬盘中的数据,20年过去了,1TB的硬盘已然成为主流,但其数据传输速度约为100MB/s,读完整个硬盘中的数据至少得话2.5小时。现实中我们产生的数据量成几何倍数增长,但是对数据的处理速度却受到硬件设备很大的限制和影响,很难提升。
对硬盘中的数据并行进行读写数据,有许多问题:第一个需要解决硬件故障问题;第二个是大多数分析任务需要以某种凡是结合大部分数据来共同完成分析,即从一个硬盘读取的数据可能需要与从另外99个硬盘中读取的数据结合使用。
读到这里恍然发现:Hadoop即为我们常说的分布式存储系统的一种。
MapReduce看似采用了一种蛮力方法。每个查询选哟处理整个数据集成或至少数据集的绝大部分。有区别与传统的关系型数据库。即MapReduc为数据库的一种。(暂时理解)
和关系型数据库进行比较:
类型 传统关系型数据库 MapReduce
数据大小 GB PB
数据存取 交互式和批处理 批处理
更新 多次读写 一次写入,多次读取
结构 静态模式 动态模式
完整性 高 低
横向扩展 非线性的 线性的
MapReduce和关系型数据库之间的另一个区别在于它们所操作的数据集的结构化程度。结构化数据(structured data)是具有既定格式的实体化数据,如xml文档或满足特定预定一个是的数据库表等。半结构化数据(semi-structured data)比较松散,虽然可能有格式,但经常被忽略,所以它只能作为对数据结构的一般性指导。非结构化数据(unstructured data)没有什么特别的内部结构,例如纯文本或图像数据。MapReduce对非结构化或半结构化数据非常有效,因为它是在处理数据是才对数据进行解释。换句话说,MapReduce输入的键和值并不是数据固有的属性,而是有分析数据的人来选的。
关系型数据库往往是规范的,以保持数据的完整性且不含冗余。规范给MapReduce带来问题,因为它使记录读取成为非本地操作。而MapReduce的核心假设之一就是可以进行(高速的)流读写操作。
web服务器日志是典型的非规范化数据记录,MapReduce非常适用于分析各种日志文件
MapReduce是一种线性的可伸缩编程模型。程序员需要写两个函数,分别为map函数和reduce函数,每个函数定义从一个键值对集合到另一个键值对集合的映射。这些函数不必关注数据集及其所用集群的大小,可以原封不动地应用于小规模数据集或大规模的数据集。更重要的是,如果输入的数据量是原来的两倍,那么运行时间页需要两倍。但如果集群是原来的两倍,作业的运行速度却仍然与原来一样。
next:1.3.2
来源:Hadoop权威指南