Hadoop权威指南(第三版)学习笔记之一初识Hadoop

第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
数据大小GBPB
访问交互式和批量处理批处理
更新多次读/写一次写入,多次读取
结构静态模式动态模式
完整性
横向扩展非线性线性

表1-1关系型数据库和MapReduce比较

关系型数据库和MapReduce差异性如下,MapReduce适合批处理需要分析整个数据集的问题,尤其是动态分析,RDBMS是用于与点查询和更新;二者另一个区别是他们操作的数据集的结构化程度。

 问题1-3:数据集有几种结构化程度?
(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作业)

表1-2 Hadoop生态系统项目

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
  本书从hadoop的缘起开始,由浅入深,结合理论和实践,全方位地介绍hado叩这一高性能处理海量数据集的理想工具。全书共14章,3个附录,涉及的主题包括:haddoop简介:mapreduce简介:hadoop分布式文件系统;hadoop的i/o、mapreduce应用程序开发;mapreduce的工作机制:mapreduce的类型和格式;mapreduce的特性:如何安装hadoop集群,如何管理hadoop;pig简介:hbase简介:zookeeper简介,最后还提供了丰富的案例分析。   本书是hadoop权威参考,程序员可从中探索如何分析海量数据集,管理员可以从中了解如何安装与运行hadoop集群。   什么是谷歌帝国的基石?mapreduce算法是也!apache hadoop架构作为mapreduce算法的一种开源应用,是应对海量数据的理想工具。项目负责人tomwhite透过本书详细阐述了如何使用hadoop构建可靠、可伸缩的分布式系统,程序员可从中探索如何分析海量数据集,管理员可以从中了解如何安装和运行hadoop集群。   本书结合丰富的案例来展示如何用hadoop解决特殊问题,它将帮助您:    ·使用hadoop分布式文件系统(hdfs)来存储海量数据集,   通过mapreduce对这些数据集运行分布式计算    ·熟悉hadoop的数据和ilo构件,用于压缩、数据集成、序列化和持久处理    ·洞悉编~mapreduce实际应用时的常见陷阱和高级特性    ·设计、构建和管理一个专用的hadoop集群或在云上运行hadoop    ·使用高级查询语言pig来处理大规模数据    ·利用hadoop数据库hbase来保存和处理结构化/半结构化数据    ·学会使用zookeeper来构建分布式系统   如果您拥有海量数据,无论是gb级还是pb级,hadoop都将是您的完美解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值