04 Hadoop思想与原理

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

从与谷歌系统的关系,关键时间节点,1.x,2.x与3.x的区别,不同公司发行版本等方面来讲。

答:Hadoop是一个对海量数据存储和海量数据分析计算的分布式系统。

Hadoop 1.x
海量数据存储 ------->HDFS
海量数据分析计算 -------> MapReduce
Hadoop 2.x 增加
资源调度系统 -------> Yarn

从hadoop最初的原型来看,hadoop已经远远超过了本身的批处理。从广义上来说,hadoop现在可以是指更广泛的一个hadoop生态了,而不仅仅是HDFS,MapReduce和Yarn。例如Hive,Hbase,Flume,Sqoop等等项目都属于这个生态。下图展示为Hadoop的生态圈。

 

 

 

1、Hadoop的发展

Hadoop起源于开源网络搜索引擎Apache Nutch,后者本身也是Lucene项目的一部分。Nutch项目面世后,面对数据量巨大的网页显示出了架构的灵活性不够。当时正好借鉴了谷歌分布式文件系统,做出了自己的开源系统NDFS分布式文件系统。第二年谷歌又发表了论文介绍了MapReduce系统,Nutch开发人员也开发出了MapReduce系统。随后NDFS和MapReduce命名为Hadoop,成为了Apache顶级项目。

从Hadoop的发展历程来看,它的思想来源于Google的三篇技术性论文,一是GFS:Goolgle File System分布式处理系统,这解决了Hadoop的存储问题;二是Mapreduce:分布式计算模型,这解决了Hadoop对数据进行计算处理的问题;三是BigTable,这解决了查询分布式存储文件慢的问题。

2、Hadoop的发行版本

Hadoop的三大发行版本,分别为Apache、Cloudera、Hortonworks。

其中,Apache为最基础的版本,可以基于此做二次开发。下图为Hadoop的历史版本发展图。

 

 

 

3、Hadoop的架构模型

  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分配的任务。

4、Hadoop的优势

(1)高可靠性

Hadoop在出现故障时可以对失败的节点重新分布处理。

(2)高扩展性

在集群间分配任务数据,可以方便地扩展数以千计的节点。

(3)高效性

Hadoop并行工作,以加快任务处理速度。

(4)高容错性

Hadoop自动保存多副本数据,并且可以将失败的任务重新分配。

 

二、用图与自己的话,简要描述名称节点、第二名称节点、数据节点的主要功能及相互关系 

答:数据节点是分布式文件系统HDFS的工作节点,它的主要功能包括负责数据的存储和读取,根据客户端或者是名称节点的调度来进行数据的存储和检索,然后向名称节点定期发送自己所存储的块的列表。

在HDFS中,名称节点的主要功能为存储元数据,负责管理分布式文件系统的命名空间,其内保存了两个核心的数据结构,FsImage和EditLog。

第二名称节点:是HDFS架构中的一个组成部分,它用来保存名称节点中对HDFS元数据信息的备份,并减少名称节点重启的时间,第二名称节点通过HTTPGET方式从名称节点上获取到FsImage和EditLog文件,并下载到本地的相应目录下。

 

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

(1)客户端与HDFS

(2)客户端读

(3)客户端写

(4)数据结点与集群

(5)数据结点与名称结点

(6)名称结点与第二名称结点

(7)数据结点与数据结点

(8)数据冗余

(9)数据存取策略

(10)数据错误与恢复

 
四、简述HBase与传统数据库的主要区别
(1)从数据类型来看,HBase只有简单的字符类型,所有的类型都交给用户自己进行处理,它只保存字符串,而传统的数据库有着丰富的类型和存储方式;
(2)从数据操作来看,HBase只有简单的插入、查询、删除、清空等的操作,表和表之间是分离的,没有复杂的表与表之间的关系,而传统的数据库通常有着各种各样的函数和连接操作;
(3)从存储模式来看,HBase是基于列存储的,每个列族都由几个文件保存,不同的列族的文件是分离的,而传统的数据库是基于表格结构和行模式保存的;
(4)从数据维护方面来看,HBase的更新操作是插入了新的数据,而传统的数据库更新操作是替换修改原本的数据;
(5)从可伸缩性来看,HBase能够轻松增加或减少硬件的数量,并且对错误的兼容性较高,而传统数据库需要添加中间层才可以实现与之类似的功能。
 

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

(1)Master主服务器的功能

①监控RegionServer;

②处理RegionServer故障转移、处理源数据变更;

③处理region的分配与移除;

④空闲时进行数据的负载均衡;

⑤通过Zookeeper发布自己的位置给客户端连接

(2)Region服务器的功能

①负责与HDFS的交互,存储数据到HDFS中;

②处理Master分配的region;

③刷新缓存到HDFS;

④维护HLog;

⑤执行压缩;

⑥处理region分片;

⑦处理来自客户端的读写请求

(3)Zookeeper协同的功能

①负责Master的高可用;

②Region服务器的监控;

③元数据的入口以及集群配置的维护工作

(4)Client客户端的请求流程

①HBase写数据流程

 

   Client请求Zookeeper确定meta表所在的Region服务器所在的地址,接着根据Rowkey找到数据所归属的Region服务器;用户提交put或delete请求时,HBase Client会将put或delete请求添加到本地buffer中,符合一定条件会通过异步批量提交服务器处理。

  数据到达Region后,服务端处理流程如下所示:

 

   Region服务器获取RowLock,region更新共享锁,接着HBase写日志WAL(数据可靠性),再写缓存MemStore,然后释放锁,将日志落到HDFS;如果MemStore达到阈值将缓存数据落磁盘Store File,最后多个Store File发生合并,若Store File很大则触发split操作,将当前的region分割程2个Region,并且同步至HMaster。

②HBase读数据流程

 

 

 

   Region服务器收到get请求后,对当前的Region进行Scan,接着根据列族对Store进行Scan,同时会对对应的MemStore进行Scan,最后找到需要的数据返回给Client。

(5)四者之间的相系关系

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

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

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

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

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

⑥RegionServer保存的数据直接存储在Hadoop的HDFS上。
总的来说 ,Client访问HBase上的数据的过程并不需要Master的参与,Master仅仅维护着table和region的元数据信息,负载很低。

(6)与HDFS的关联

HDFS为HBase提供最终的底层数据存储服务,同时为HBase提供高可用的支持。

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

 

posted @ 2021-10-24 00:32  unique'  阅读(108)  评论(0编辑  收藏  举报