04 Hadoop思想与原理

1.用图与自己的话,简要描述Hadoop起源与发展阶段。

1.Hadoop的介绍

Hadoop最早起源于Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。

2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案。

——分布式文件系统(GFS),可用于处理海量网页的存储

——分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题。

Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立项目HADOOP,到2008年1月,HADOOP成为Apache顶级项目(同年,cloudera公司成立),迎来了它的快速发展期。

狭义上来说,hadoop就是单独指代hadoop这个软件,

广义上来说,hadoop指代大数据的一个生态圈,包括很多其他的软件

 

 2.Hadoop是什么?

Hadoop: 适合大数据的分布式存储和计算平台

Hadoop不是指具体一个框架或者组件,它是Apache软件基金会下用Java语言开发的一个开源分布式计算平台。实现在大量计算机组成的集群中对海量数据进行分布式计算。适合大数据的分布式存储和计算平台。

Hadoop1.x中包括两个核心组件:MapReduce和Hadoop Distributed File System(HDFS)

其中HDFS负责将海量数据进行分布式存储,而MapReduce负责提供对数据的计算结果的汇总

 

3.Hadoop的起源

2003-2004年,Google公布了部分GFS和MapReduce思想的细节,受此启发的Doug Cutting等人用2年的业余时间实现了DFS和MapReduce机制,使Nutch性能飙升。然后Yahoo招安Doug Gutting及其项目。

2005年,Hadoop作为Lucene的子项目Nutch的一部分正式引入Apache基金会。

2006年2月被分离出来,成为一套完整独立的软件,起名为Hadoop

Hadoop名字不是一个缩写,而是一个生造出来的词。是Hadoop之父Doug Cutting儿子毛绒玩具象命名的。

Hadoop的成长过程

Lucene–>Nutch—>Hadoop

 

总结起来,Hadoop起源于Google的三大论文

GFS:Google的分布式文件系统Google File System

MapReduce:Google的MapReduce开源分布式并行计算框架

BigTable:一个大型的分布式数据库

 

演变关系

GFS—->HDFS

Google MapReduce—->Hadoop MapReduce

BigTable—->HBase

 

4.Hadoop的发展历史

Hadoop大事记

2004年— 最初的版本(现在称为HDFS和MapReduce)由Doug Cutting和Mike Cafarella开始实施。

2005年12月— Nutch移植到新的框架,Hadoop在20个节点上稳定运行。

2006年1月— Doug Cutting加入雅虎。

2006年2月— Apache Hadoop项目正式启动以支持MapReduce和HDFS的独立发展。

2006年2月— 雅虎的网格计算团队采用Hadoop。

2006年4月— 标准排序(10 GB每个节点)在188个节点上运行47.9个小时。

2006年5月— 雅虎建立了一个300个节点的Hadoop研究集群。

2006年5月— 标准排序在500个节点上运行42个小时(硬件配置比4月的更好)。

2006年11月— 研究集群增加到600个节点。

2006年12月— 标准排序在20个节点上运行1.8个小时,100个节点3.3小时,500个节点5.2小时,900个节点7.8个小时。

2007年1月— 研究集群到达900个节点。

2007年4月— 研究集群达到两个1000个节点的集群。

2008年4月— 赢得世界最快1TB数据排序在900个节点上用时209秒。

2008年7月— 雅虎测试节点增加到4000个

2008年9月— Hive成为Hadoop的子项目

2008年11月— Google宣布其MapReduce用68秒对1TB的程序进行排序

2008年10月— 研究集群每天装载10TB的数据。

2008年— 淘宝开始投入研究基于Hadoop的系统–云梯。云梯总容量约9.3PB,共有1100台机器,每天处理18000道作业,扫描500TB数据。

2009年3月— 17个集群总共24 000台机器。

2009年3月— Cloudera推出CDH(Cloudera’s Dsitribution Including Apache Hadoop)

2009年4月— 赢得每分钟排序,雅虎59秒内排序500 GB(在1400个节点上)和173分钟内排序100 TB数据(在3400个节点上)。

2009年5月— Yahoo的团队使用Hadoop对1 TB的数据进行排序只花了62秒时间。

2009年7月— Hadoop Core项目更名为Hadoop Common;

2009年7月— MapReduce 和 Hadoop Distributed File System (HDFS) 成为Hadoop项目的独立子项目。

2009年7月— Avro 和 Chukwa 成为Hadoop新的子项目。

2009年9月— 亚联BI团队开始跟踪研究Hadoop

2009年12月—亚联提出橘云战略,开始研究Hadoop

2010年5月— Avro脱离Hadoop项目,成为Apache顶级项目。

2010年5月— HBase脱离Hadoop项目,成为Apache顶级项目。

2010年5月— IBM提供了基于Hadoop 的大数据分析软件——InfoSphere BigInsights,包括基础版和企业版。

2010年9月— Hive( Facebook) 脱离Hadoop,成为Apache顶级项目。

2010年9月— Pig脱离Hadoop,成为Apache顶级项目。

2011年1月— ZooKeeper 脱离Hadoop,成为Apache顶级项目。

2011年3月— Apache Hadoop获得Media Guardian Innovation Awards 。

2011年3月— Platform Computing 宣布在它的Symphony软件中支持Hadoop MapReduce API。

2011年5月— Mapr Technologies公司推出分布式文件系统和MapReduce引擎——MapR Distribution for Apache Hadoop。

2011年5月— HCatalog 1.0发布。该项目由Hortonworks 在2010年3月份提出,HCatalog主要用于解决数据存储、元数据的问题,主要解决HDFS的瓶颈,它提供了一个地方来存储数据的状态信息,这使得 数据清理和归档工具可以很容易的进行处理。

2011年4月— SGI( Silicon Graphics International )基于SGI Rackable和CloudRack服务器产品线提供Hadoop优化的解决方案。

2011年5月— EMC为客户推出一种新的基于开源Hadoop解决方案的数据中心设备——GreenPlum HD,以助其满足客户日益增长的数据分析需求并加快利用开源数据分析软件。Greenplum是EMC在2010年7月收购的一家开源数据仓库公司。

2011年5月— 在收购了Engenio之后, NetApp推出与Hadoop应用结合的产品E5400存储系统。

2011年6月— Calxeda公司(之前公司的名字是Smooth-Stone)发起了“开拓者行动”,一个由10家软件公司组成的团队将为基于Calxeda即将推出的ARM系统上芯片设计的服务器提供支持。并为Hadoop提供低功耗服务器技术。

2011年6月— 数据集成供应商Informatica发布了其旗舰产品,产品设计初衷是处理当今事务和社会媒体所产生的海量数据,同时支持Hadoop。

2011年7月— Yahoo!和硅谷风险投资公司 Benchmark Capital创建了Hortonworks 公司,旨在让Hadoop更加鲁棒(可靠),并让企业用户更容易安装、管理和使用Hadoop。

2011年8月— Cloudera公布了一项有益于合作伙伴生态系统的计划——创建一个生态系统,以便硬件供应商、软件供应商以及系统集成商可以一起探索如何使用Hadoop更好的洞察数据。

2011年8月— Dell与Cloudera联合推出Hadoop解决方案——Cloudera Enterprise。Cloudera Enterprise基于Dell PowerEdge C2100机架服务器以及Dell PowerConnect 6248以太网交换机

 

5.Hadoop的四大特性(优点)

1.扩容能力(Scalable):Hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可用方便的扩展到数以千计个节点中。

2.成本低(Economical):Hadoop通过普通廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低。

3.高效率(Efficient):通过并发数据,Hadoop可以在节点之间动态并行的移动数据,使得速度非常快。

4.可靠性(Rellable):能自动维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。所以Hadoop的按位存储和处理数据的能力值得人们信赖。

 

6.hadoop的历史版本介绍

0.x系列版本:hadoop当中最早的一个开源版本,在此基础上演变而来的1.x以及2.x的版本

1.x版本系列:hadoop版本当中的第二代开源版本,主要修复0.x版本的一些bug等

2.x版本系列:架构产生重大变化,引入了yarn平台等许多新特性

 

7.hadoop三大公司发型版本介绍

1.免费开源版本apache:

http://hadoop.apache.org/

优点:拥有全世界的开源贡献者,代码更新迭代版本比较快,

缺点:版本的升级,版本的维护,版本的兼容性,版本的补丁都可能考虑不太周到,学习可以用,实际生产工作环境尽量不要使用

apache所有软件的下载地址(包括各种历史版本):

http://archive.apache.org/dist/

 

2.免费开源版本hortonWorks:

https://hortonworks.com/

hortonworks主要是雅虎主导Hadoop开发的副总裁,带领二十几个核心成员成立Hortonworks,核心产品软件HDP(ambari),HDF免费开源,并且提供一整套的web管理界面,供我们可以通过web界面管理我们的集群状态,web管理界面软件HDF网址(http://ambari.apache.org/)

 

3.软件收费版本ClouderaManager:

https://www.cloudera.com/

cloudera主要是美国一家大数据公司在apache开源hadoop的版本上,通过自己公司内部的各种补丁,实现版本之间的稳定运行,大数据生态圈的各个版本的软件都提供了对应的版本,解决了版本的升级困难,版本兼容性等各种问题,生产环境强烈推荐使用

 

8.hadoop的架构模型(1.x,2.x的各种架构模型介绍)

1.x的版本架构模型介绍

 

 文件系统核心模块(HDFS):

NameNode:集群当中的主节点,主要用于管理集群当中的各种数据

secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理

DataNode:集群当中的从节点,主要用于存储集群当中的各种数据

数据计算核心模块(MapReduce):

JobTracker:接收用户的计算请求任务,并分配任务给从节点

TaskTracker:负责执行主节点JobTracker分配的任务

 

2.x的版本架构模型介绍

第一种:NameNode与ResourceManager单节点架构模型

 

 文件系统核心模块(HDFS):

NameNode:集群当中的主节点,主要用于管理集群当中的各种数据

secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理

DataNode:集群当中的从节点,主要用于存储集群当中的各种数据

数据计算核心模块(MapReduce):

ResourceManager:接收用户的计算请求任务,并负责集群的资源分配,以及计算任务的划分

NodeManager:负责执行主节点ResourceManager分配的任务

 

第二种:NameNode单节点与ResourceManager高可用架构模型

 

 文件系统核心模块(HDFS):

NameNode:集群当中的主节点,主要用于管理集群当中的各种数据

secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理

DataNode:集群当中的从节点,主要用于存储集群当中的各种数据

数据计算核心模块(MapReduce):

ResourceManager:接收用户的计算请求任务,并负责集群的资源分配,以及计算任务的划分,通过zookeeper实现ResourceManager的高可用

NodeManager:负责执行主节点ResourceManager分配的任务

 

第三种:NameNode高可用与ResourceManager单节点架构模型

 

 文件系统核心模块(HDFS):

NameNode:集群当中的主节点,主要用于管理集群当中的各种数据,其中nameNode可以有两个,形成高可用状态

DataNode:集群当中的从节点,主要用于存储集群当中的各种数据

JournalNode:文件系统元数据信息管理

数据计算核心模块(MapReduce):

ResourceManager:接收用户的计算请求任务,并负责集群的资源分配,以及计算任务的划分

NodeManager:负责执行主节点ResourceManager分配的任务

 

第四种:NameNode与ResourceManager高可用架构模型

 

 文件系统核心模块(HDFS):

NameNode:集群当中的主节点,主要用于管理集群当中的各种数据,一般都是使用两个,实现HA高可用

JournalNode:元数据信息管理进程,一般都是奇数个

DataNode:从节点,用于数据的存储

数据计算核心模块(MapReduce):

ResourceManager:Yarn平台的主节点,主要用于接收各种任务,通过两个,构建成高可用

NodeManager:Yarn平台的从节点,主要用于处理ResourceManager分配的任务

1.Hadoop的介绍Hadoop最早起源于Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案。——分布式文件系统(GFS),可用于处理海量网页的存储——分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题。Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立项目HADOOP,到2008年1月,HADOOP成为Apache顶级项目(同年,cloudera公司成立),迎来了它的快速发展期。狭义上来说,hadoop就是单独指代hadoop这个软件,广义上来说,hadoop指代大数据的一个生态圈,包括很多其他的软件

2.Hadoop是什么?Hadoop: 适合大数据的分布式存储和计算平台Hadoop不是指具体一个框架或者组件,它是Apache软件基金会下用Java语言开发的一个开源分布式计算平台。实现在大量计算机组成的集群中对海量数据进行分布式计算。适合大数据的分布式存储和计算平台。Hadoop1.x中包括两个核心组件:MapReduce和Hadoop Distributed File System(HDFS)其中HDFS负责将海量数据进行分布式存储,而MapReduce负责提供对数据的计算结果的汇总
3.Hadoop的起源2003-2004年,Google公布了部分GFS和MapReduce思想的细节,受此启发的Doug Cutting等人用2年的业余时间实现了DFS和MapReduce机制,使Nutch性能飙升。然后Yahoo招安Doug Gutting及其项目。2005年,Hadoop作为Lucene的子项目Nutch的一部分正式引入Apache基金会。2006年2月被分离出来,成为一套完整独立的软件,起名为HadoopHadoop名字不是一个缩写,而是一个生造出来的词。是Hadoop之父Doug Cutting儿子毛绒玩具象命名的。Hadoop的成长过程Lucene–>Nutch—>Hadoop
总结起来,Hadoop起源于Google的三大论文GFS:Google的分布式文件系统Google File SystemMapReduce:Google的MapReduce开源分布式并行计算框架BigTable:一个大型的分布式数据库
演变关系GFS—->HDFSGoogle MapReduce—->Hadoop MapReduceBigTable—->HBase
4.Hadoop的发展历史Hadoop大事记2004年— 最初的版本(现在称为HDFS和MapReduce)由Doug Cutting和Mike Cafarella开始实施。2005年12月— Nutch移植到新的框架,Hadoop在20个节点上稳定运行。2006年1月— Doug Cutting加入雅虎。2006年2月— Apache Hadoop项目正式启动以支持MapReduce和HDFS的独立发展。2006年2月— 雅虎的网格计算团队采用Hadoop。2006年4月— 标准排序(10 GB每个节点)在188个节点上运行47.9个小时。2006年5月— 雅虎建立了一个300个节点的Hadoop研究集群。2006年5月— 标准排序在500个节点上运行42个小时(硬件配置比4月的更好)。2006年11月— 研究集群增加到600个节点。2006年12月— 标准排序在20个节点上运行1.8个小时,100个节点3.3小时,500个节点5.2小时,900个节点7.8个小时。2007年1月— 研究集群到达900个节点。2007年4月— 研究集群达到两个1000个节点的集群。2008年4月— 赢得世界最快1TB数据排序在900个节点上用时209秒。2008年7月— 雅虎测试节点增加到4000个2008年9月— Hive成为Hadoop的子项目2008年11月— Google宣布其MapReduce用68秒对1TB的程序进行排序2008年10月— 研究集群每天装载10TB的数据。2008年— 淘宝开始投入研究基于Hadoop的系统–云梯。云梯总容量约9.3PB,共有1100台机器,每天处理18000道作业,扫描500TB数据。2009年3月— 17个集群总共24 000台机器。2009年3月— Cloudera推出CDH(Cloudera’s Dsitribution Including Apache Hadoop)2009年4月— 赢得每分钟排序,雅虎59秒内排序500 GB(在1400个节点上)和173分钟内排序100 TB数据(在3400个节点上)。2009年5月— Yahoo的团队使用Hadoop对1 TB的数据进行排序只花了62秒时间。2009年7月— Hadoop Core项目更名为Hadoop Common;2009年7月— MapReduce 和 Hadoop Distributed File System (HDFS) 成为Hadoop项目的独立子项目。2009年7月— Avro 和 Chukwa 成为Hadoop新的子项目。2009年9月— 亚联BI团队开始跟踪研究Hadoop2009年12月—亚联提出橘云战略,开始研究Hadoop2010年5月— Avro脱离Hadoop项目,成为Apache顶级项目。2010年5月— HBase脱离Hadoop项目,成为Apache顶级项目。2010年5月— IBM提供了基于Hadoop 的大数据分析软件——InfoSphere BigInsights,包括基础版和企业版。2010年9月— Hive( Facebook) 脱离Hadoop,成为Apache顶级项目。2010年9月— Pig脱离Hadoop,成为Apache顶级项目。2011年1月— ZooKeeper 脱离Hadoop,成为Apache顶级项目。2011年3月— Apache Hadoop获得Media Guardian Innovation Awards 。2011年3月— Platform Computing 宣布在它的Symphony软件中支持Hadoop MapReduce API。2011年5月— Mapr Technologies公司推出分布式文件系统和MapReduce引擎——MapR Distribution for Apache Hadoop。2011年5月— HCatalog 1.0发布。该项目由Hortonworks 在2010年3月份提出,HCatalog主要用于解决数据存储、元数据的问题,主要解决HDFS的瓶颈,它提供了一个地方来存储数据的状态信息,这使得 数据清理和归档工具可以很容易的进行处理。2011年4月— SGI( Silicon Graphics International )基于SGI Rackable和CloudRack服务器产品线提供Hadoop优化的解决方案。2011年5月— EMC为客户推出一种新的基于开源Hadoop解决方案的数据中心设备——GreenPlum HD,以助其满足客户日益增长的数据分析需求并加快利用开源数据分析软件。Greenplum是EMC在2010年7月收购的一家开源数据仓库公司。2011年5月— 在收购了Engenio之后, NetApp推出与Hadoop应用结合的产品E5400存储系统。2011年6月— Calxeda公司(之前公司的名字是Smooth-Stone)发起了“开拓者行动”,一个由10家软件公司组成的团队将为基于Calxeda即将推出的ARM系统上芯片设计的服务器提供支持。并为Hadoop提供低功耗服务器技术。2011年6月— 数据集成供应商Informatica发布了其旗舰产品,产品设计初衷是处理当今事务和社会媒体所产生的海量数据,同时支持Hadoop。2011年7月— Yahoo!和硅谷风险投资公司 Benchmark Capital创建了Hortonworks 公司,旨在让Hadoop更加鲁棒(可靠),并让企业用户更容易安装、管理和使用Hadoop。2011年8月— Cloudera公布了一项有益于合作伙伴生态系统的计划——创建一个生态系统,以便硬件供应商、软件供应商以及系统集成商可以一起探索如何使用Hadoop更好的洞察数据。2011年8月— Dell与Cloudera联合推出Hadoop解决方案——Cloudera Enterprise。Cloudera Enterprise基于Dell PowerEdge C2100机架服务器以及Dell PowerConnect 6248以太网交换机
5.Hadoop的四大特性(优点)1.扩容能力(Scalable):Hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可用方便的扩展到数以千计个节点中。2.成本低(Economical):Hadoop通过普通廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低。3.高效率(Efficient):通过并发数据,Hadoop可以在节点之间动态并行的移动数据,使得速度非常快。4.可靠性(Rellable):能自动维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。所以Hadoop的按位存储和处理数据的能力值得人们信赖。
6.hadoop的历史版本介绍0.x系列版本:hadoop当中最早的一个开源版本,在此基础上演变而来的1.x以及2.x的版本1.x版本系列:hadoop版本当中的第二代开源版本,主要修复0.x版本的一些bug等2.x版本系列:架构产生重大变化,引入了yarn平台等许多新特性
7.hadoop三大公司发型版本介绍1.免费开源版本apache:http://hadoop.apache.org/优点:拥有全世界的开源贡献者,代码更新迭代版本比较快,缺点:版本的升级,版本的维护,版本的兼容性,版本的补丁都可能考虑不太周到,学习可以用,实际生产工作环境尽量不要使用apache所有软件的下载地址(包括各种历史版本):http://archive.apache.org/dist/
2.免费开源版本hortonWorks:https://hortonworks.com/hortonworks主要是雅虎主导Hadoop开发的副总裁,带领二十几个核心成员成立Hortonworks,核心产品软件HDP(ambari),HDF免费开源,并且提供一整套的web管理界面,供我们可以通过web界面管理我们的集群状态,web管理界面软件HDF网址(http://ambari.apache.org/)
3.软件收费版本ClouderaManager:https://www.cloudera.com/cloudera主要是美国一家大数据公司在apache开源hadoop的版本上,通过自己公司内部的各种补丁,实现版本之间的稳定运行,大数据生态圈的各个版本的软件都提供了对应的版本,解决了版本的升级困难,版本兼容性等各种问题,生产环境强烈推荐使用
8.hadoop的架构模型(1.x,2.x的各种架构模型介绍)1.x的版本架构模型介绍


文件系统核心模块(HDFS):NameNode:集群当中的主节点,主要用于管理集群当中的各种数据secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理DataNode:集群当中的从节点,主要用于存储集群当中的各种数据数据计算核心模块(MapReduce):JobTracker:接收用户的计算请求任务,并分配任务给从节点TaskTracker:负责执行主节点JobTracker分配的任务
2.x的版本架构模型介绍第一种:NameNode与ResourceManager单节点架构模型
文件系统核心模块(HDFS):NameNode:集群当中的主节点,主要用于管理集群当中的各种数据secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理DataNode:集群当中的从节点,主要用于存储集群当中的各种数据数据计算核心模块(MapReduce):ResourceManager:接收用户的计算请求任务,并负责集群的资源分配,以及计算任务的划分NodeManager:负责执行主节点ResourceManager分配的任务
第二种:NameNode单节点与ResourceManager高可用架构模型

文件系统核心模块(HDFS):NameNode:集群当中的主节点,主要用于管理集群当中的各种数据secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理DataNode:集群当中的从节点,主要用于存储集群当中的各种数据数据计算核心模块(MapReduce):ResourceManager:接收用户的计算请求任务,并负责集群的资源分配,以及计算任务的划分,通过zookeeper实现ResourceManager的高可用NodeManager:负责执行主节点ResourceManager分配的任务
第三种:NameNode高可用与ResourceManager单节点架构模型


文件系统核心模块(HDFS):NameNode:集群当中的主节点,主要用于管理集群当中的各种数据,其中nameNode可以有两个,形成高可用状态DataNode:集群当中的从节点,主要用于存储集群当中的各种数据JournalNode:文件系统元数据信息管理数据计算核心模块(MapReduce):ResourceManager:接收用户的计算请求任务,并负责集群的资源分配,以及计算任务的划分NodeManager:负责执行主节点ResourceManager分配的任务
第四种:NameNode与ResourceManager高可用架构模型

文件系统核心模块(HDFS):NameNode:集群当中的主节点,主要用于管理集群当中的各种数据,一般都是使用两个,实现HA高可用JournalNode:元数据信息管理进程,一般都是奇数个DataNode:从节点,用于数据的存储数据计算核心模块(MapReduce):ResourceManager:Yarn平台的主节点,主要用于接收各种任务,通过两个,构建成高可用NodeManager:Yarn平台的从节点,主要用于处理ResourceMana

2.用图与自己的话,简要描述名称节点、数据节点的主要功能及相互关系、名称节点的工作机制。

 

 

 

HDFS集群有两种节点,以管理者-工作者的模式运行,即一个名称节点(管理者)和多个数据节点(工作者)。名称节点管理文件系统的命名空间。它维护着这个文件系统树及这个树内所有的文件和索引目录。这些信息以两种形式将文件永久保存在本地磁盘上:命名空间镜像和编辑日志。名称节点也记录着每个文件的每个块所在的数据节点,但它并不永久保存块的位置,因为这些信息会在系统启动时由数据节点重建。

客户端代表用户通过与名称节点和数据节点交互来访问整个文件系统。客户端提供一个类似POSIX(可移植操作系统界面)的文件系统接口,因此用户在编程时并不需要知道名称节点和数据节点及其功能。

数据节点是文件系统的工作者。它们存储并提供定位块的服务(被用户或名称节点调用时),并且定时的向名称节点发送它们存储的块的列表。

没有名称节点,文件系统将无法使用。事实上,如果运行名称节点的机器被毁坏了,文件系统上所有的文件都会丢失,因为我们无法知道如何通过数据节点上的块来重建文件。因此,名称节点能够经受故障是非常重要的,Hadoop提供了两种机制来确保这一点。

第一种机制就是复制那些组成文件系统元数据持久状态的文件。Hadoop可以通过配置使名称节点在多个文件系统上写入其持久化状态。这些写操作是具同步性和原子性的。一般的配置选择是,在本地磁盘上写入的同时,写入一个远程NFS挂载(mount)。

另一种可行的方法是运行一个二级名称节点,虽然它不能作为名称节点使用。这个二级名称节点的重要作用就是定期的通过编辑日志合并命名空间镜像,以防止编辑日志过大。这个二级名称节点一般在其他单独的物理计算机上运行,因为它也需要占用大量CPU和内存来执行合并操作。它会保存合并后的命名空间镜像的副本,在名称节点失效后就可以使用。但是,二级名称节点的状态是比主节点滞后的,所以主节点的数据若全部丢失,损失仍在所难免。在这种情况下,一般把存在NFS上的主名称节点元数据复制到二级名称节点上并将其作为新的主名称节点运行。

 

3.分别从以下这些方面,梳理清楚HDFS的 结构与运行流程,以图的形式描述。

  • 客户端与HDFS
  • 客户端读
  • 客户端写
  • 数据结点与集群
  • 数据结点与名称结点
  • 名称结点与第二名称结点
  • 数据结点与数据结点
  • 数据冗余
  • 数据存取策略
  • 数据错误与恢复

 

 

 

 

 

 

4.简述HBase与传统数据库的主要区别

①数据类型:Hbase只有简单的数据类型,只保留字符串;传统数据库有丰富的数据类型。

②数据操作:Hbase只有简单的插入、查询、删除、清空等操作,表和表之间是分离的,没有复杂的表和表之间的关系;传统数据库通常有各式各样的函数和连接操作。

③存储模式:Hbase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的,这样的好处是数据即是索引,访问查询涉及的列大量降低系统的I/O,并且每一列由一个线索来处理,可以实现查询的并发处理;传统数据库是基于表格结构和行存储,其没有建立索引将耗费大量的I/O并且建立索引和物化试图需要耗费大量的时间和资源。

④数据维护:Hbase的更新实际上是插入了新的数据;传统数据库只是替换和修改。

⑤可伸缩性:Hbase可以轻松的增加或减少硬件的数目,并且对错误的兼容性比较高;传统数据库需要增加中间层才能实现这样的功能。

⑥事务:Hbase只可以实现单行的事务性,意味着行与行之间、表与表之前不必满足事务性;传统数据库是可以实现跨行的事务性。

 

5.梳理HBase的结构与运行流程,以用图与自己的话进行简要描述,图中包括以下内容:

  • Master主服务器的功能
  • Region服务器的功能
  • Zookeeper协同的功能
  • Client客户端的请求流程
  • 四者之间的相系关系
  • 与HDFS的关联

①数据类型:Hbase只有简单的数据类型,只保留字符串;传统数据库有丰富的数据类型。

②数据操作:Hbase只有简单的插入、查询、删除、清空等操作,表和表之间是分离的,没有复杂的表和表之间的关系;传统数据库通常有各式各样的函数和连接操作。

③存储模式:Hbase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的,这样的好处是数据即是索引,访问查询涉及的列大量降低系统的I/O,并且每一列由一个线索来处理,可以实现查询的并发处理;传统数据库是基于表格结构和行存储,其没有建立索引将耗费大量的I/O并且建立索引和物化试图需要耗费大量的时间和资源。

④数据维护:Hbase的更新实际上是插入了新的数据;传统数据库只是替换和修改。

⑤可伸缩性:Hbase可以轻松的增加或减少硬件的数目,并且对错误的兼容性比较高;传统数据库需要增加中间层才能实现这样的功能。

⑥事务:Hbase只可以实现单行的事务性,意味着行与行之间、表与表之前不必满足事务性;传统数据库是可以实现跨行的事务性。

 

6.完整描述Hbase表与Region的关系,三级寻址原理。

四者之间的相系关系:

①Hbase集群有两种服务器:一个Master服务器和多个RegionServer服务器。

②Master服务负责维护表结构信息和各种协调工作,比如建表、删表、移动region、合并等操作。

③客户端获取数据是由客户端直连RegionServer的,所以Master服务挂掉之后依然可以查询、存储、删除数据,就是不能建新表了。

④RegionServer非常依赖Zookeeper服务,Zookeeper管理Hbase所有的RegionServer信息,包括具体的数据段存放在那个RegionServer上。

⑤客户端每次与Hbase连接,其实都是先于Zookeeper通信,查询出哪个RegionServer需要连接,然后再连接RegionServer;客户端从Zookeeper获取了RegionServer的地址后,会直接从RegionServer获取数据。

与HDFS的关联:

RegionServer保存的数据直接存储在Hadoop的HDFS上。

posted @ 2021-10-23 17:06  吴糖气泡水  阅读(83)  评论(0编辑  收藏  举报