知识点总结
-
- 请简述HDFS集群的总体架构以及NameNode、DataNode和SecondaryNameNode的作用。
- 什么是HDFS的机架感知策略?在HDFS使用该策略有什么优点?
- 简述HDFS读写数据的流程。
- 简述YARN集群的总体架构以及ResourceManager、NodeManager、ApplicationMaster和Container的作用。
- 以单词计数为例,简述MapReduce计算模型的三个阶段。
- 在ZooKeeper集群中,znode节点有哪几种类型?不同类型的节点分别具有什么特点?
- 什么是HDFS单点故障问题?HDFS HA是如何解决HDFS单点故障问题的?
- 简述Kafka集群架构。
- 请简述Kafka主题与分区的概念。
- 请简述Kafka分区副本同步的基于ISR动态复制方案及其优点。
- 请简述Kafka消费者组的含义及其作用。
- 举例说明自定义Kafka生产者、消费者?
- Kafka生产者拦截器有什么作用?如何常见生产者拦截器
- 简述Flume Agent的主要构建组件及其作用。
- Flume拦截器有什么作用?
- 简述Flume通道选择器的作用及主要类型。
- 请简述Storm Topology的基本概念及其构成。
- 请简述Storm的集群架构。
- 请简述Storm流分组的概念及其常见方式。
- 请简述Spark的主要组件及其主要功能。
- Spark的部署模式有哪几种?
- 什么是RDD?创建RDD主要由哪几种方式?请举例说明。
- 请简述RDD的转化算子和行动算子的主要区别?
- 什么是Spark惰性机制?这种机制有何优缺点?
- 请列出RDD的主要算子及其作用。
- 什么是DataFrame?DataFrame与RDD有什么不同?
- 创建DataFrame主要由哪几种方式?请举例说明。
- 请举例说明如何在Spark中使用SQL进行查询。
- 请简述Spark Streaming的工作机制。
- 请比较Spark Streaming和Storm有何不同?
- 请简述编写Spark Streaming程序的主要步骤。
- 请请举例说明DStream主要的有状态转换操作及其作用。
请简述HDFS集群的总体架构以及NameNode、DataNode和SecondaryNameNode的作用。
HDFS采用Master/Slave(主/从)架构:即一个HDFS集群是由一个NameNode和若干个DataNode组成的。
NameNode是存储集群的主服务器,负责管理文件系统的命名空间(NameSpace)以及客户端对文件的访问
DataNode负责处理文件系统客户端的读写。在NameNode的统一调度下进行数据块的创建、删除和复制操作。
HDFS的辅助元数据节点(SecondaryNameNode)辅助NameNode处理事务日志和镜像文件。
什么是HDFS的机架感知策略?在HDFS使用该策略有什么优点?
以默认的副本数=3为例
第一个副本块存本地机架的节点上
第二个副本块存跟本机同机架内的其他节点上
第三个副本块存不同机架的节点上
优点:
减少了机架间的数据传输,提高了效率
不损坏数据的可靠性和读取性能 机架错误远远比节点错误要小
简述HDFS读写数据的流程。
读文件:客户端要读某个文件
- 客户端向NameNode发送数据读操作请求
- NameNode向客户端发送组成该文件的数据块的位置列表(即每个数据块存储哪些DataNode之中)
- 客户端直接从这些DataNode读取文件数据(在读数据过程中,NameNode不参与文件的传输)
写文件:当客户端需要写入一个文件
- 客户端向NameNode发送数据写操作请求,将需要写入的文件名、路径等元数据信息(MetaData)告诉NameNode
- NameNode将文件信息记录到本地,同时验证客户端的写入权限,若验证通过,会向客户端返回文件数据块能够存放在DataNode上的存储位置信息。
- 客户端直接向DataNode的相应位置写入数据块。
- 被写入的数据块的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)实际上就是一组消费者集合
作用:
能够同时具备两种模式(队列和发布订阅)的特点
同一消费者组内不允许多个消费者消费同一分区的消息