第I部分Hadoop基础知识

第1章初识Hadoop.

比较喜欢这句极其形象的比喻。

“在古时候,人们用牛来拉重物。当一头牛拉不动根圆木时,人们从来没有考虑过要想方设法培育出一种更强壮的牛。同理,我们也不该想方设法打造什么超级计算机,而应该千方百计综合利用更多计算机来解决问题。”

-葛蕾丝·霍珀(Grace Hopper)

1TB=1024GB

1PB=1024TB

1EB=1024PB

1ZB=1000EB

有句话说得好:“大数据胜于好算法。”意思是说对于某些应用(譬如根据以往的偏好来推荐电影和音乐),不论算法有多牛,基于小数据的推荐效果往往都不如基于大量可用数据的一般算法的推荐效果。

当然现在我们拥有这些大量的数据,所以如何存储和分析这些数据,成了我们要讨论和研究的。

经典问题:1TB的硬盘,其传播速度为100MB/S,读完整个硬盘中的数据至少得花2.5小时。怎么解决短时间内读取完这1TB数据?

读完整个硬盘中的数据需要更长时间,写入数据就别提了。一个很简单的减少读取时间的办法是同时从多个硬盘上读数据。试想,如果我们有100个硬盘,每个硬盘存储1%的数据,并行读取,那么不到两分钟就可以读完所有数据。

仅使用硬盘容量的1%似乎很浪费。但是我们可以存储100 个数据集,每个数据集1TB,并实现共享硬盘的读取。可以想象,用户肯定很乐于通过硬盘共享来缩短数据分析时间;并且,从统计角度来看,用户的分析工作都是在不同时间点进行的,所以彼此之间的干扰并不太大。

虽然如此,但要对多个硬盘中的数据并行进行读/写数据,还有更多问题要解决。

第一个需要解决的是硬件故障问题。一旦开始使用多个硬件,其中个别硬件就很有可能发生故障。为了避免数据丢失,最常见的做法是复制(replication):系统保存数据的复本(replica),一旦有系统发生故障,就可以使用另外保存的复本。例如,冗余硬盘阵列(RAID)就是按这个原理实现的,另外,Hadoop 的文件系统(Hadoop Distributed FileSystem, HDFS)也是一类,不过它采取的方法稍有不同,详见后文的描述。

第二个问题是大多数分析任务需要以某种方式结合大部分数据来共同完成分析,即从一个硬盘读取的数据可能需要与从另外99个硬盘中读取的数据结合使用。各种分布式系统允许结合不同来源的数据进行分析,但保证其正确性是一个非常大的挑战。MapReduce提出.个编程模型,该模型抽象出这些硬盘读/写问题并将其转换为对一个数据集(由键-值对组成)的计算。后文将详细讨论这个模型,这样的计算由map和reduce两部分组成,而且只有这两部分提供对外的接口。与HDFS类似,MapReduce自身也有很高的可靠性。

简而言之,Hadoop 为我们提供了一个可靠的且可扩展的存储和分析平台。此外,由于Hadoop运行在商用硬件上且是开源的,因而可以说Hadoop的使用成本是在可承受范围内的。

我的理解:也就是说既然1TB的文件一台机器的话,读取需要2.5小时,那么,我们用100台机器去进行读取,每台机器读取其百分之一的数据,并且100台机器同时进行读取,那么时间会减少至1.5分钟。不过由于是100台机器,我们不敢确认100台机器永远不会出错,万一某台机器宕机,数据就会丢失,这里我们采用复制的方法,如果这台机器宕机,那么我们就使用保存的副本进行读取。那么这分散的100份数据如何结合使用,也就到了我们的分布式计算框架MapReduce.

从MapReduce 的所有长处来看,它基本上是一个批处理系统,并不适合交互式分析。你不可能执行一条查询并在几秒内或更短的时间内得到结果。典型情况下,执行查询需要几分钟或更多时间。因此MapReduce更适合那种没有用户在现场等待查询结果的离线使用场景。

随着Hadoop的发展,已经超越了批处理本身,实际上,名词"Hadoop" 有时被用于指代一个更大的、多个项目组成的生态系统,而不仅仅是HDFS和MapReduce。这些项目都属于分布式计算和大规模数据处理范畴。这些项目中有许多都是由Apache软件基金会管理,该基金会为开源软件项目社区提供支持,其中包括最初的HTTP server项目(基金会的名称也来源于这个项目)。

如 HBase : 一种使用HDFS做底层存储的键值存储模型。

YARN :集群管理系统

等等

无论Hadoop上出现了多少不同的处理框架,就批处理而言,MapReduce 仍然有着一席之地。 MapReduce提出的一些概念更具有通用性(例如, 输入格式、数据集分片等),因此最好是能够了解MapReduce的工作机制。

这段话也说出了为什么用一章去写MapReduce.

根据系统之间差异提出问题,

1.为什么不能用配有大量硬盘的数据库来进行大规模数据分析?我们为什么需要Hadoop?

这两个问题的答案来自于计算机硬盘的另一个发展趋势:寻址时间的提升远远不敌于传输速率的提升。寻址是将磁头移动到特定硬盘位置进行读/写操作的过程。它是导致硬盘操作延迟的主要原因,而传输速率取决于硬盘的带宽。

如果数据访问模式中包含大量的硬盘寻址,那么读取大量数据集就必然会花更长的时间(相较于流数据读取模式,流读取主要取决于传输速率)。另方面,如果数据库系统只更新一小部分记录,那么传统的B树(关系型数据库中使用的这种数据结构,受限于寻址的速率)就更有优势。但数据库系统如果有大量数据更新时,B树的效率就明显落后于MapReduce, 因为需要使用“排序/合并" (sort/merge)来重建数据库。

简单来说MapReduce 适合一次写入、多次读取数据的应用,关系型数据库则更适合持续更新的数据集。


Hadoop尽量在计算节点上存储数据,以实现数据的本地快速访问。“数据本地化(data locality)特性是Hadoop数据处理的核心,并因此而获得良好的性能。意识到网络带宽是数据中心环境最珍贵的资源(到处复制数据很容易耗尽网络带宽)之后,Hadoop通过显式网络拓扑结构来保留网络带宽。注意,这种排列方式并没有降低Hadoop对计算密集型数据进行分析的能力。

MapReduce有三大设计目标:(1)为只需要短短几分钟或几个小时就可以完成的作业提供服务; (2)运行于同一个内部有高速网络连接的数据中心内; (3)数据中心内的计算机都是可靠的、专门的硬件。

Hadoop权威指南 _03_第I部分Hadoop基础知识_第1章初识Hadoop.相关推荐

  1. Hadoop权威指南 _04_第I部分Hadoop基础知识_第2章关于MapReduce

    第I部分Hadoop基础知识 第2章关于MapReduce MapReduce是一种可用于数据处理的编程模型.该模型比较简单,但要想写出有用的程序却不太容易.Hadoop 可以运行各种语言版本的Map ...

  2. 基于python的气象数据分析_基于python的《Hadoop权威指南》一书中气象数据下载和map reduce化数据处理及其......

    文档内容: 1:下载<hadoop权威指南>中的气象数据 2:对下载的气象数据归档整理并读取数据 3:对气象数据进行map reduce进行处理 关键词:<Hadoop权威指南> ...

  3. Hadoop学习笔记—15.HBase框架学习(基础知识篇)

    Hadoop学习笔记-15.HBase框架学习(基础知识篇) HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase ...

  4. Hadoop权威指南:HDFS-目录,查询文件系统,删除文件

    目录 Hadoop权威指南:HDFS-目录,查询文件系统,删除文件 目录 查询文件系统 文件元数据:FileStatus 列出文件 文件模式 PathFilter对象 删除数据 Hadoop权威指南: ...

  5. Hadoop权威指南学习笔记三

    HDFS简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考.有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my ...

  6. 《Hadoop权威指南》第三章 Hadoop分布式文件系统

    <Hadoop权威指南>第三章 Hadoop分布式文件系统 目录 前言 HDFS的设计 HDFS的概念 命令行接口 Hadoop文件系统 Java接口 数据流 通过distcp并行复制 注 ...

  7. 《Hadoop权威指南》第二章 关于MapReduce

    <Hadoop权威指南>第二章 关于MapReduce 目录 使用Hadoop来数据分析 横向扩展 注:<Hadoop权威指南>重点学习摘要笔记 1. 使用Hadoop来数据分 ...

  8. Hadoop权威指南 _01前言感悟

    Hadoop权威指南 大数据的存储与分析-第4版-修订版-升级版 前言感悟: 或许有人会说前言,我看书一般都不看前言的,但是或许是对于技术书籍的敬畏,也或者是作者对Hadoop的诸多感受,让我也有种代 ...

  9. 《Hadoop权威指南》读书笔记1

    <Hadoop权威指南>读书笔记 Day1 第一章 1.MapReduce适合一次写入.多次读取数据的应用,关系型数据库则更适合持续更新的数据集. 2.MapReduce是一种线性的可伸缩 ...

最新文章

  1. Java竞选组长发言_竞选组长的发言稿_450字
  2. jQuery Ajax
  3. oracle释放shm空间,安装11gRAC时提示/dev/shm大小不足
  4. 【Statistics】均值
  5. 使用7zip把jre集成到绿色运行程序内
  6. 在CentOS下搭建自己的Git服务器
  7. 电脑中了“魔鬼波”病毒 冲击波补丁
  8. WinISO镜像文件使用简介
  9. Kubernetes Downward API 基本用法
  10. ORACLE导出表数据-dmp文件
  11. Guava前置条件Preconditions类(参数校验)
  12. python采用强制缩进的方式是代码具有极佳的可读性_python入门
  13. 交换机配置SNMP团体字
  14. 高项_第四章项目整体管理
  15. 2020年白领年终奖报告来了,平均值为7826元
  16. 如何进行支付功能的测试
  17. 让你的简历不落窠臼,精雕细镂写一份真正的技术简历(Python向)
  18. 贾志刚OpenCV3.3深度神经网络DNN模块应用学习笔记
  19. STM32哪些引脚默认高电平
  20. 试解螺旋矩阵(非方阵)的java实现

热门文章

  1. CodeForces - 1529E Trees of Tranquillity(贪心+线段树)
  2. android 固定大小,android 固定大小取图片缩略图
  3. C语言执行shellcode的五种方法
  4. 1.1 Windows 程序运行原理(消息循环和响应)
  5. CreatePipe匿名管道通信
  6. cocos2d-x游戏实例(26)-简易动作游戏(4)
  7. memmove和memcpy
  8. Apollo分布式配置中心踩坑
  9. 极客精神|自制机械臂!被任正非表扬的华为天才少年
  10. 如何使用JMX监控Kafka