04 Hadoop思想与原理

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

一、1.X,2.X区别:

1.从HDFS角度来看:

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

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

  ③允许有多个namenode独立运行组成联邦。每个datanode向所有name进行注册。

  ④每个namenode维护一个命名空间卷(互相独立)上层通过一个挂载表组织来访问数据。

2.从mapreduce角度来看:

  ①2.0相比于1.0 新增了YARN框架,Mapreduce的运行环境发生了变化

  ②在1.0中:由一个JobTracker和若干个TaskTracker两类服务组成,其中JobTracker负责资源管理和所有作业的控制,TaskTracker负责接收来自JobTracker的命令并执行它。所以MapReduce即是任务调度框架又是计算框架,1.0中会出现JobTracker大包大揽任务过重,而且存在单点故障问题,并且容易出现OOM问题,资源分配不合理等问题。

  ③在2.0中:MASTER端由ResourceManager进行资源管理调度,有ApplicationMaster进行任务管理和任务监控。SLAVE端由NodeManager替代TaskTracker进行具体任务的执行,所以MapReduce2.0只是一个计算框架,具体资源调度全部交给Yarn框架。

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

1.Java运行环境升级为1.8。

2.HDFS支持纠删码。纠删码相比于副本机制节省了一半以上的存储空间,普通副本机制需要3倍存储空间而这种机制只需1.4倍即可。

3.YARN时间线服务:

4.支持多余2个以上的NameNodes。3.0支持单active namenode+多standby namenode部署方式进一步提升了可用性。

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

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

   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主服务器的功能:

  主服务器Master主要负责表和Region的管理工作:
  ① 管理用户对表的增加、删除、修改、查询等操作。
  ②实现不同Region服务器之间的负载均衡。
  ③Region分裂或合并后,负责重新调整Region的分布.
  ④对发生故障失效的Region服务器上的Region进行迁移。

Region服务器的功能:

 Region服务器是HBase中最核心的模块,负责维护分配给自己的Region,并响应用户的读写请求。

Zookeeper协同的功能:

 Zookeeper可以帮助选举出一个Master作为集群的总管,并保证在任何时刻总有唯一一个Master在运行,这就避免了Master的“单点失效”问题。

Client客户端的请求流程:

四者之间的相系关系:

①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-24 19:13  芜湖湖  阅读(51)  评论(0编辑  收藏  举报