Hadoop(HDFS、Yarn、MapReduce、Zookeeper、Kafka、Flume、Storm、Spark) 知识点总结

知识点总结

请简述HDFS集群的总体架构以及NameNode、DataNode和SecondaryNameNode的作用。

​ HDFS采用Master/Slave(主/从)架构:即一个HDFS集群是由一个NameNode和若干个DataNode组成的。

NameNode是存储集群的主服务器,负责管理文件系统的命名空间(NameSpace)以及客户端对文件的访问

DataNode负责处理文件系统客户端的读写。在NameNode的统一调度下进行数据块的创建、删除和复制操作。

​ HDFS的辅助元数据节点(SecondaryNameNode)辅助NameNode处理事务日志和镜像文件。

什么是HDFS的机架感知策略?在HDFS使用该策略有什么优点?

​ 以默认的副本数=3为例

​ 第一个副本块存本地机架的节点上

​ 第二个副本块存跟本机同机架内的其他节点上

​ 第三个副本块存不同机架的节点上

​ 优点:

​ 减少了机架间的数据传输,提高了效率

​ 不损坏数据的可靠性和读取性能 机架错误远远比节点错误要小

简述HDFS读写数据的流程。

​ 读文件:客户端要读某个文件

  1. 客户端向NameNode发送数据读操作请求
  2. NameNode向客户端发送组成该文件的数据块的位置列表(即每个数据块存储哪些DataNode之中)
  3. 客户端直接从这些DataNode读取文件数据(在读数据过程中,NameNode不参与文件的传输)

​ 写文件:当客户端需要写入一个文件

  1. 客户端向NameNode发送数据写操作请求,将需要写入的文件名、路径等元数据信息(MetaData)告诉NameNode
  2. NameNode将文件信息记录到本地,同时验证客户端的写入权限,若验证通过,会向客户端返回文件数据块能够存放在DataNode上的存储位置信息。
  3. 客户端直接向DataNode的相应位置写入数据块。
  4. 被写入的数据块的DataNode也会将数据块备份到其他DataNode上。

简述YARN集群的总体架构以及ResourceManager、NodeManager、ApplicationMaster和Container的作用。

​ YARN集群采用经典的Master/Slave(主/从)架构

RescourseManager负责对集群资源的统一管理和任务调度

NodeManager是集群中每个节点上的资源和任务管理器

ApplicationMaster是应用程序管理者,主要负责应用程序的管理

Container是YARN中资源分配的基本单位,封装了CPU和内存资源的一个容器,相当于一个Task运行的抽象环境。

以单词计数为例,简述MapReduce计算模型的三个阶段。

​ 首先在map阶段,需要将接收到的数据来进行拆分,接着将每个单词统计一次数量;

​ 然后到shuffle阶段处理,将不同单词中一样的单词分到同一组中;

​ 最后是reduce阶段,将每一组单词中的数量添加到一起,最后再整合输出。

在ZooKeeper集群中,znode节点有哪几种类型?不同类型的节点分别具有什么特点?

​ Znode有四种类型:分别是持久节点(PERSISTENT)、持久顺序节点(PERSISTENT_SEQUENTIAL)、临时节点(EPHEMERAL)以及临时顺序节点(EPHEMERAL_SEQUENTIAL)

​ 持久节点(PERSISTENT)在创建后会一直存在,除非手动将其删除

​ 持久顺序节点(PERSISTENT_SEQUENTIAL)在拥有持久节点的功能的同时,在创建时,ZooKeeper会在节点名称末尾自动追加一个自增长的数字后缀作为新的节点名称,以便记录每个节点创建的先后顺序。

​ 临时节点(EPHEMERAL)客户端与ZooKeeper服务器会话存在,这些节点就存在,客户端会话结束时,节点将被删除;以及临时节点不可以有子节点。

什么是HDFS单点故障问题?HDFS HA是如何解决HDFS单点故障问题的?

​ 一个HDFS集群只有一个单一的NameNode,一旦NameNode服务不可用,则整个集群无法访问

​ 可以在同一个集群中运行两个NameNode,其中一个处于活动状态(active),另一个处于备用状态(standby),且只有活动状态的NameNode可以对外提供读写服务。当活动状态的NameNode崩溃时,HDFS集群可以快速切换到备用的NameNode,这样也就是实现了故障自动转移

简述Kafka集群架构。

Kafka集群架构:

  • 一组生产者
    • 数据可以是Web前端产生的页面、服务器日志等
  • 一组消费者
    • 可以是Hadoop集群、实时监控程序、数据仓库或其他服务
  • 一组Broker
  • 一个ZooKeeper集群

请简述Kafka主题与分区的概念。

主题:

  • 一个主题可以分为多个分区,每个分区可以存储于不同的Broker上

  • Kafka会为每个主题维护一个分区日志,记录各个分区消息存放情况

  • 消息以追加的方式写入到每个分区的尾部

  • 消息以先入先出的顺序进行读取

  • Kafka可以保证单个分区内消息的顺序,但无法在整个主题范围内保证消息的顺序

分区:

  • 每条消息会根据分区规则被存储到某个分区

  • 如果分区合理,所有消息可以被均匀分配到不同的分区,这样就实现了水平扩展

  • 分区中的每条记录被都分配了一个偏移量(offset)

  • 偏移量是一个连续递增的整数,唯一标识分区中的某个记录

  • 消费者只需要保存偏移量,当消费者客户端向Broker发起消息请求时需要携带偏移量,当消费者读取消息后,偏移量会递增

  • 消费者可以按照任意顺序消费消息,也可以指定从某个分区中一次最多返回多少条消息

请简述Kafka分区副本同步的基于ISR动态复制方案及其优点。

基于ISR(In-sync Replica)动态复制方案

领导者会动态维护一个需要与其保持同步的副本列表(包括领导者自己),该列表称为ISR。

如果在一定时间内跟随者没有向领导者请求新的消息,该跟随者将被认为不同步,领导者会从ISR中将其移除(防止拖慢整体速度)

当跟随者重新与领导者保持同步时,领导者会将其再次加入到ISR中

当领导者失效时,也不会选择ISR中不存在的跟随者作为新的领导者

ISR的列表数据保存在ZooKeeper中,每次ISR改变后,领导者都会将最新的ISR同步到ZooKeeper中。

优点:

写入消息时,只有当ISR中所有跟随者都复制完毕,领导者才会将信息写入状态置为Commit(写入成功),而只有状态置为Commit的消息才能被消费者读取

从消费者角度看,要想成功读取消息,ISR中的所有副本必须处于同步状态,从而提高了数据的一致性

请简述Kafka消费者组的含义及其作用。

含义:

消费者组(Consumer Group)实际上就是一组消费者集合

作用:

能够同时具备两种模式(队列和发布订阅)的特点

同一消费者组内不允许多个消费者消费同一分区的消息࿰

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值