04 Hadoop思想与原理,Hbase原理

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

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

答:

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

谷歌在03到06年间连续发表了三篇很有影响力的文章,分别是03年SOSP的GFS,04年OSDI的MapReduce,和06年OSDI的Big Table。SOSP和OSDI都是操作系统领域的顶级会议,在计算机学会推荐会议里属于A类。SOSP在单数年举办,而OSDI在双数年举办。

总结起来,Hadoop起源于Google的三大论文
GFS:Google的分布式文件系统Google File System
MapReduce:Google的MapReduce开源分布式并行计算框架
BigTable:一个大型的分布式数据库

 

演变关系
GFS—->HDFS
Google MapReduce—->Hadoop MapReduce
BigTable—->HBase

 

Hadoop实际上就是谷歌三宝的开源实现,Hadoop MapReduce对应Google MapReduce,HBase对应BigTable,HDFS对应GFS。HDFS(或GFS)为上层提供高效的非结构化存储服务,HBase(或BigTable)是提供结构化数据服务的分布式数据库,Hadoop MapReduce(或Google MapReduce)是一种并行计算的编程模型,用于作业调度。

 

关键时间点:

 

 

 1.x,2.x与3.x的区别:

Hadoop1.x 的组成为:Common(辅助工具)、HDFS(数据存储)、MapReduce (计算+资源调度);

Hadoop2.x 的组成为:Common(辅助工具)、HDFS(数据存储)、MapReduce (计算)、Yarn (资源调度)

Hadoop3.x在组成上和Hadoop2.x没有任何区别。

1.X,2.X区别:

从HDFS角度来看:

1:Hadoop2.0新增了HDFS HA机制,HA增加了standbynamenode进行热备份,解决了1.0的单点故障问题。

2:Hadoop2.0新增了HDFS federation,解决了HDFS水平可扩展能力。    

2.X和3.X最主要区别:

1:Java运行环境升级为1.8;

2:HDFS支持纠删码:

3:YARN时间线服务:

4:支持多余2个以上的NameNodes

5:MapReduce本地优化,性能提升了30%。

MapReduce1.x架构设计:

 

 MapReduced2.x架构设计:

 

 不同公司发行版本:

Hadoop三大发行版本:Apache、Cloudera、Hortonworks。

Apache版本最原始(最基础)的版本,对于入门学习最好。

Cloudera在大型互联网企业中用的较多。

Hortonworks文档较好。

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

答:

(1)主要功能:

名称节点:负责管理分布式文件系统的命名空间,它保存了两个核心的数据结构——Fslmage、EditLog。

数据节点:是HDFS的工作节点,负责数据的存储和读取。

(2)相互关系:

NameNode会将文件系统的Meta-data存储在内存中,这些信息主要包括了文件信息、每一个文件对应的文件块的信息和每一个文件块在DataNode的信息等。

DataNode是文件存储的基本单元,它将Block存储在本地文件系统中,保存了Block的Meta-data,同时周期性地存在的Block信息发送给NameNode。

(3)名称节点的工作机制:

第一阶段:

namenode启动 第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。

客户端对元数据进行增删改的请求。

namenode记录操作日志,更新滚动日志。

namenode在内存中对数据进行增删改查。

第二阶段:

Secondary NameNode工作 Secondary NameNode询问namenode是否需要checkpoint。直接带回namenode是否检查结果。

Secondary NameNode请求执行checkpoint。

namenode滚动正在写的edits日志。

将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode。

Secondary NameNode加载编辑日志和镜像文件到内存,并合并。

生成新的镜像文件fsimage.chkpoint。

拷贝fsimage.chkpoint到namenode。

namenode将fsimage.chkpoint重新命名成fsimage。

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

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

答:HDFS的结构:

 

 HDFS的流程:

读流程:

 

 写流程:

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

答:

1.数据类型:HBase只有简单的字符类型,所有的类型都是交由用户自己处理,它只保存字符串。而关系数据库有丰富的类型和存储方式。

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

3.存储模式:HBase是基于列存储的,每个列族都由几个文件保存,不同的列族的文件时分离的。而传统的关系型数据库是基于表格结构和行模式保存的 

4.数据维护:HBase的更新操作不应该叫更新,它实际上是插入了新的数据,而传统数据库是替换修改

5.可伸缩性:Hbase这类分布式数据库就是为了这个目的而开发出来的,所以它能够轻松增加或减少硬件的数量,并且对错误的兼容性比较高。而传统数据库通常需要增加中间层才能实现类似的功能

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

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

答:HBase的结构:

 HBase的流程:

读流程:

写流程:

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

 答:HBase 中的每个 Region 由三个要素组成,包括 Region 所属的表、第一行和最后一行。其中,第一个 Region 没有首行,最后一个 Region 没有末行。每个 Region 都有一个 RegionlD 来标识它的唯一性,Region 标识符就可以表示成“表名+开始行键+RegionID”。

posted @ 2021-10-19 16:54  boomboom_gua  阅读(26)  评论(0编辑  收藏  举报