Hadoop权威指南(第三版)学习笔记之一初识Hadoop
2017-10-10 18:26
363 查看
第1章 初识Hadoop
1.1 数据!数据!
大数据1ZB=1000EB=10^6^PB=10^9^TB=10^21^ 字节,相当于世界上每个人一个硬盘驱动器所能容纳数据的数量级。推荐系统中“大量数据胜于好的算法”。1.2 数据存储与分析
1TB硬盘,按其传输熟读约为100MB/s来算,读取整个硬盘数据需要约2.5h,但是将相同内容存放在100个硬盘中,每个存储1%,并行读取,用时不超过2min。实际情况下,可以存储100个数据集,每个1TB,实现共享硬盘的访问,可以大大缩短数据分析时间(统计角度来看,用户的分析工作时间不同,干扰不大)。 问题1-1:实现多个硬盘的并行读写,需解决问题?
(1)硬件故障。需要对数据进行备份:系统保存数据的冗余副本,发生故障会,可以使用数据的另一可用复本。例如,Hadoop的文件系统,HDFS也是其中一类。
(2)大多数任务需要结合大部分数据共同完成。各种分布式系统允许结合多个来源的数据实现分析,但保持正确性是一个重要问题。
MapReduce提出了一个编程模型,将上述硬盘读写问题进行抽象,转换为对一个数据集(键值对形式)的计算,只有map和reduce这两部分提供对外的接口。Hadoop提供了一个可靠的共享存储和分析系统。核心:HDFS实现存储和MapReduce实现分析处理。
1.3 相较与其他系统的优势
MapReduce:每个查询需要处理整个数据集(或大部分),是一个批量查询处理器,而且能够在合理的时间范围内处理针对整个数据集的即时查询(用时短)。1.3.1 关系型数据库管理系统
问题1-2:为什么不能用数据库来对大量硬盘上的大规模数据进行批量分析?
(1)因为寻址时间的提高远慢于传输速率的提高。寻址:是将磁头移动到特定硬盘位置进行读写操作的过程。它是导致硬盘操作延迟的主要原因,而传输速率取决于带宽。
(2)如果数据访问模式中包含大量的硬盘寻址,必然会耗费大量时间(相较于流数据读取模式,流读取主要取决于传输速率)。
类型 | 传统关系型数据库 | MapReduce |
---|---|---|
数据大小 | GB | PB |
访问 | 交互式和批量处理 | 批处理 |
更新 | 多次读/写 | 一次写入,多次读取 |
结构 | 静态模式 | 动态模式 |
完整性 | 高 | 低 |
横向扩展 | 非线性 | 线性 |
关系型数据库和MapReduce差异性如下,MapReduce适合批处理需要分析整个数据集的问题,尤其是动态分析,RDBMS是用于与点查询和更新;二者另一个区别是他们操作的数据集的结构化程度。
问题1-3:数据集有几种结构化程度? <
4000
br>
(1)结构化数据:具有既定格式的实体化数据,如XML文档。
(2)半结构化数据:比较松散,容易被忽略,只能用在对数据结构的一般指导,如一张电子表格
(3)非结构化数据:没有特别内部结构,如纯文本或属相数据。
MapReduce对非结构化数据和半结构化数据非常有效,因为在处理数据时才对数据进行解释,即MapReduce输入的键和值并不是数据固有属相,而是由分析人员选择的。关系型数据往往是规范的,规范化不适应MapReduce,因为它使记录读取成为本地操作,而MapReduce是进行高速的流读写操作。Web服务器日志是典型的非规范化数据记录,因此MapReduce非常适用分析各种日志文件。
MapReduce是一种线性的可伸缩模型,其中包括map函数和reduce函数,每个函数定义一个键值对集合到另一个键值对集合的映射。
1.3.2 网格计算
高性能计算和网格计算,主要使用类似于消息传递接口的API(MAPI)。高性能计算是将将作业分散到集群的各台机器上,适用于计算密集型作业,如果节点需要访问的数据更庞大,很多计算机节点就会被网络带宽所影响。
MapReduce在计算节点上存储数据,以实现数据本地的快速访问。数据本地化是MapReduce的核心特征。另外,MapReduce通过显示网络拓扑结构来保留网络带宽(网络带宽是数据中心最珍贵的资源),但这种排列方式并没有降低MapReduce对计算密集型数据进行分析的能力。
MapReduce 的无共享框架使系统能够检测到并重新执行那些失败的map或reduce任务(各任务是彼此独立的),因此不必担心系统部分失效问题。
问题1-4:MapReduce任务彼此独立性的理解? MapReduce系统控制着mapper输出结果传给reducer的过程。这种情况下,重新运行reducer比重新运行mapper要小心,因为reducer运行需要获取必要的mapper,如果没有,必须再次运行对应的mapper,重新生成输出结果。
MapReduce的严格编程模型:限定用户使用有特定关联的键值对,mapper和reducer彼此间的协调非常有限(每个mapper将键值对传给reducer)。
问题1-5:MapReduce的应用场景?
(1)由谷歌开发,用于构建搜索引擎的索引(函数式编程、分布式计算和数据库)
(2)图像图形分析的问题
(3)机器学习算法
1.3.3 志愿计算
MapReduce三大设计目标:
(1)为只需几分钟或几小时就可以完成的作业提供服务;
(2)运行与同一个内部有高数网络连接的数据中心内;
(3)数据中心内的计算机都是可靠的、定制的硬件。
1.4 Hadoop发展简史
Hadoop是Apache Lucene创始人创建,Lucene是一个文本搜索系统库。Hadoop起源于网络搜索引擎Apache Nutch(Lucene一部分)。2008年以后,Hadoop称为最快的TB级数据排序系统。1.5 Apache Hadoop和Hadoop生态系统
项目名称 | 内容 |
---|---|
Common | 一系列组件和接口,用于分布式文件系统和通用I/O(序列化、JavaRPC和持久化数据结构) |
Avro | 一种序列化系统,用于支持高效、跨语言的RPC和持久化数据存储 |
MapReduce | 分布式数据处理模型和执行环境,运行于大型商用机集群 |
HDFS | 分布式文件系统,运行与大型商用机集群 |
Pig | 数据流语言和运行环境,用以探究非常庞大的数据集。Pig运行在MapReduce和HDFS集群上 |
Hive | 一种分布式的、按列存储的数据仓库。Hive管理HDFS中存储的数据,并提供基于SQL的查询语言(由运行时引擎翻译成MapReduce作业)用以查询数据 |
HBase | 一种分布式的、按列存储的数据库。HBase使用HDFS作为底层存储,同时支持MapReduce的批量式计算和点查询(随机读取) |
ZooKeeper | 一种分布式的、可用性高的协调服务。ZooKeeper提供分布式锁之类的基本服务用于构建分布式应用 |
Sqoop | 该工具用于结构化数据存储(如关系型数据库)和HDFS之间高效批量传输数据 |
Oozie | 该服务用于运行和调度Hadoop作业(如:MapReduce,pig,Hive及Sqoop作业) |
相关文章推荐
- 笔记:Hadoop权威指南 第1章 初识Hadoop
- 菜鸟学习笔记--《Hadoop权威指南(第三版)》笔记
- Hadoop学习笔记之初识MapReduce以及WordCount实例分析
- hadoop学习笔记(七)——hadoop权威指南中天气数据运行
- hadoop学习笔记之初识
- ES-Hadoop学习笔记-初识
- hadoop学习笔记(3) 初识Hadoop
- hadoop权威指南笔记之初识hadoop
- Hadoop学习笔记—1.初识hadoop
- Hadoop学习笔记_初识Hadoop
- Hadoop学习笔记(一):初识Hadoop与配置
- hadoop学习笔记之初识hadoop hadoop单机版安装
- Hadoop学习笔记1-初识Hadoop
- Hadoop学习笔记-Hadoop初识
- hadoop学习笔记(3) 初识Hadoop
- ES-Hadoop学习笔记-初识
- hadoop学习笔记(3) 初识Hadoop
- hadoop学习笔记之一:初识hadoop
- hadoop学习笔记--6.MapReduce的初识
- hadoop学习笔记--9.hive初识