04 Hadoop思想与原理

1.什么是hadoop

adoop起源于开源网络搜索引擎Apache Nutch,后者本身也是Lucene项目的一部分。Nutch项目面世后,面对数据量巨大的网页显示出了架构的灵活性不够。当时正好借鉴了谷歌分布式文件系统,做出了自己的开源系统NDFS分布式文件系统。第二年谷歌又发表了论文介绍了MapReduce系统,Nutch开发人员也开发出了MapReduce系统。随后NDFS和MapReduce命名为Hadoop,成为了Apache顶级项目。从Hadoop的发展历程来看,它的思想来源于Google的三篇技术性论文,一是GFS:Goolgle File System分布式处理系统,这解决了Hadoop的存储问题;二是Mapreduce:分布式计算模型,这解决了Hadoop对数据进行计算处理的问题;三是BigTable,这解决了查询分布式存储文件慢的问题。

Hadoop是一个对海量数据存储和海量数据分析计算的分布式系统。
Hadoop 1.x
            海量数据存储 ----> HDFS
            海量数据分析计算 ----> MapReduce
       Hadoop 2.x 增加
            资源调度系统 ----> Yarn
从hadoop最初的原型来看,hadoop已经远远超过了本身的批处理。从广义上来说,hadoop现在可以是指更广泛的一个hadoop生态了,而不仅仅是HDFS,MapReduce和Yarn。例如Hive,Hbase,Flume,Sqoop等等项目都属于这个生态。

 

2.简要描述名称节点、数据节点的主要功能及相互关系、名称节点的工作机制。

 

 

2.1主要功能

名称节点最主要功能:名称节点记录了每个文件中各个块所在的数据节点的位置信息。

数据节点:是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己所存储的块的列表

2.2相互关系

名称节点是HDFS主从结构中主节点上运行的主要进程,它指导主从结构中的从节点,数据节点执行底层的I/O任务。

2.3名称结点的工作机制

1.在启动时,系统会将FsImage中的内容加载到内存中去,之后再执行EditLog中的操作,使得内存中的数据和实际同步,存在内存中的支持客户端的读。
2.一旦在内存中成功建立文件系统元数据的映射,则创建一个新的FsImage文件和一个空的EditLog文件
3.名称节点起来之后,HDFS中的更新操作会重新写到EditLog文件中

 

3梳理清楚HDFS的 结构与运行流程,以图的形式描述

 

 

读操作

 

写操作

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

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

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

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

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

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

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

Hbase的优点:
1.列可以动态增加,并且当列为空的时候就不存储,节省存储空间。

2.Hbase自动切分数据,使得数据存储自动具有水平扩展能力。

3.Hbase可以支持高并发顺序读写操作(因为其有内存的缓存机制)。

Hbase的缺点:
1.不能支持条件查询,只支持按照row key来查询

2.暂时不能支持Master server的故障切换,当Master宕机后,这个存储系统都会挂掉。

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

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

 

 

(1)Master主服务器的功能

管理用户对Table表的增、删、改、查操作;

管理HRegion服务器的负载均衡,调整HRegion分布; 

(2)Region服务器的功能

HRegion部分由很多的HRegion组成,存储的是实际的数据。每一个HRegion又由很多的Store组成,每一个Store存储的实际上是一个列簇(ColumnFamily)下的数据。 

(3)Zookeeper协同的功能

zookeeper是hbase集群的"协调器"。由于zookeeper的轻量级特性,因此我们可以将多个hbase集群共用一个zookeeper集群,以节约大量的服务器.

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

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

(5)与HDFS的关联

HDFS是GFS的一种实现,他的完整名字是分布式文件系统,类似于FAT32,NTFS,是一种文件格式,是底层的,Hadoop HDFS为HBase提供了高可靠性的底层存储支持。

HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统

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

posted @ 2021-10-24 14:53  clown-00  阅读(65)  评论(0编辑  收藏  举报