大数据技术习题

发布于:2022-11-09 ⋅ 阅读:(443) ⋅ 点赞:(0)

第一章 大数据概述

  1. 试述信息技术发展史上的3次信息化浪潮及其具体内容
第一次浪潮 1980年前后 个人计算机 信息处理
第二次浪潮 1995年前后 互联网 信息传输
第三次浪潮 2010年前后 物联网、云计算和大数据 信息爆炸
  1. 试述数据产生方式经历的几个阶段

3个阶段,分别是运营式系统阶段、用户原创内容阶段和感知式系统阶段。

  • 运营式系统阶段:以门户网站为代表,数据的产生方式是被动的,只有当实际的企业业务发生时,才会产生新的记录并存入数据库。
  • 用户原创内容阶段:以wiki、博客、微博、微信等自服务模式为主,上网用户本身就是内容的生成者。
  • 感知式系统阶段:物联网中的设备每时每刻都在自动产生大量数据,并且其自动数据产生方式将在短时间内产生更密集、更大量的数据。
  1. 试述大数据的四个基本特征
  • 数据量大:信息社会中,数据以自然方式增长,数据每两年增加一倍;
    数据类型繁多:数据类型丰富,包括结构化数据和非结构化数据,如邮件、音频、视频等,给数据处理和分析技术提出了新的挑战;
  • 处理速度快:由于很多应用都需要基于快速生成的数据给出实时分析结果,因此新兴的大数据分析技术通常采用集群处理和独特的内部设计;
  • 价值密度低:有价值的数据分散在海量数据中。
  1. 试述大数据时代的“数据爆炸”特性
    当前数据爆炸的特性包括增长速度快以及种类繁多两大特征
  • 增长速度快主要指的是随着用户将更多设备连入互联网中以及物联网的推广和普及,各种设备将自动每时每刻产生大量数据;
  • 另一方面,产生的数据也由于产生的途径、设备、用途不同而变得种类繁多,结构各异。
  1. 科学研究经历了哪4个阶段
  • 实验科学:采用科学解决一些科学问题;
  • 理论科学:开始采用各种数学、几何、物理等理论。构建问题模型和解决方案;
  • 计算科学:计算科学主要用于对各个科学问题进行计算机模拟和其他形式的计算,借助于计算机的高速运算能力可以解决各种问题;
  • 数据密集型科学:先有大量已知数据,从数据中挖掘未知模式和有价值的信息,通过计算和分析得到未知的结论。
  1. 试述大数据对思维方式的重要影响
  • 全样而非抽样:大数据技术的核心就是海量数据的存储和处理,因此科学分析可以完全直接针对全集数据而不是抽样数据,并且可以在短时间内迅速得到分析结果。
  • 效率而非精确:由于大数据采用的是全样分析,故不存在误差放大的问题,故追求高精确性不是首要目标。另一方面,由于大数据时代要求在几秒内迅速给出海量数据的分析结果,否则会丧失数据的价值,因此数据分析效率成为关键。
  • 相关而非因果:由于因果关系不再那么重要,人们更追求相关性。
  1. 大数据决策与传统的基于数据仓库的决策有什么区别
  • 数据仓库以关系型数据库为基础,受到数据类型和和数据量方面的限制。
  • 大数据决策可以面向类型繁多、非结构化的海量数据进行决策分析。
  1. 举例说明大数据的具体应用
  • 制造业:提升制造业水平,包括产品故障诊断与分析、工业供应链分析与优化;
  • 金融行业:在高频交易、社交情绪分析和信贷风险分析等领域发挥重大作用;
  • 汽车行业:依托于大数据和物联网技术的无人驾驶汽车。
  1. 举例说明大数据的关键技术
  • 数据采集与预处理:使用ETL工具将数据抽到临时中间层后进行清洗、转换和集成后加载到数据仓库中,作为数据挖掘的基础;或者利用日志采集工具如Flume将实时采集的数据作为流计算系统的输入,进行实时处理分析;
  • 数据存储和管理:利用分布式文件系统、NoSQL数据库等实现对数据的存储和管理;
  • 数据处理与分析:利用分布式并行编程和计算框架,结合机器学习和数据挖掘算法,实现对海量数据的处理和分析,并进行可视化呈现;
    数据安全和隐私保护:构建隐私数据保护体系和数据安全体系。
  1. 大数据产业包含哪些层面
    IT基础设施层、数据源层、数据管理层、数据分析层、数据平台层、数据应用层。

  2. 定义并解释以下术语:物联网、云计算

  • 云计算:实现了通过网络提供可伸缩的、廉价的分布式计算能力,用户只需在具备网络接入条件的地方就可以随时随地获得所需的各种IT资源;包含了三种经典的服务模式:IaaS基础设施即服务、PaaS平台即服务和SaaS软件即服务。
  • 物联网:是物物相连的互联网,是互联网的延伸,利用局部网络或互联网等通信技术将传感器、控制器、机器和人等通过新的方式连在一起,形成人与物、物与物相连,实现信息化和远程管理控制。

12 详细阐述大数据、云计算和物联网三者之间的区别与联系

  • 区别:大数据侧重于对海量数据的存储、处理与分析;云计算本质旨在整合和优化各种IT资源,并通过网络以服务的方式廉价提供给用户;物联网的发展目标是实现物物相连。
  • 联系:物联网是大数据的重要来源,大数据植根于云计算,大数据分析的很多技术来源于云计算;大数据为云计算提供用武之地,供云计算发挥价值;物联网借助于云计算和大数据技术,实现物联网大数据的存储、分析和处理。

第二章

  1. 试述Hadoop和MapReduce、GFS等技术之间的联系?
  • Hadoop是GFS的开源实现,都属于Google
  • Hadoop的核心是HDFS和MapReduce
  1. Hadoop有哪些特性?
  • 高可靠性、高效性、高扩展性、高容错性
  • 成本低、运行在Linux平台、支持多种编程语言
  1. 试述Hadoop在各个领域的应用情况?
    主要运用在互联网领域;yamhoo(广告系统和页面搜索)、Facebook(日志处理、推荐系统、数据仓库)、淘宝(数据库、推荐、日志、排行榜)、百度、华为
  2. Hadoop生态系统以及每个部分的具体功能?
    在这里插入图片描述
  • HDFS:底层数据存储与I/O
  • Hbase:基于列的分布式数据库
  • MapReduce:一种编程模型,用于大数据集的并行运算
  • Hive:数据库查询工具,对Hadoop中数据集进行数据分析、查询
  • Pig:一种数据流语言和运行环境,查询半结构化的数据集
  • Mahout:提供可扩展的机器学习领域经典算法的实现
  • Zookeeper:高效和可靠的协同工作系统,用于构建分布式应用,减轻分布式应用程序承担的协调任务
  • Flume:高可用、高可靠、分布式的海量日志采集、聚合、传输的系统
  • Sqoop:SQL to Hadoop的缩写,用来在Hadoop和关系型数据库之间交换数据
  • Ambari:基于Web的工具,支持Hadoop集群的安装、部署、配置和管理。
  1. java的路径JAVA_HOME在哪个配置文件中?
    JAVA_HOME = /usr/lib/jvm/default-java
  2. 所有节点的HDFS路径是通过fs.default.name来设置的,请问它是在哪个配置文件中设置的?
    core-site.xml
  3. 单机模式和伪分布式模式的异同点?
  • 伪分布式:一台机器上模拟一个小小的集群,但是集群中只有一个节点。

  • 单机模式是Hadoop的默认模式。这种模式在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统。

  • 伪分布模式这种模式也是在一台单机上运行,但用不同的Java进程模仿分布式运行中的各类结点

单机就是在本地,不需要配置文件,完全运行在本地

  • 单机模式因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程。该模式主要用于开发调试MapReduce程序的应用逻辑。

  • 伪分布模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。

  1. Hadoop伪分布式运行启动后所具有的进程都有哪些?
    NodeManager
    Jps
    NameNode
    SecondaryNameNode
    DataNode
    ResourceManager

第三章 分布式文件系统

  1. 试述分布式文件系统设计的需求
    设计需求主要有以下几点:
  • 透明性、并发控制、文件复制、硬件和操作系统的异构性、可收缩性、容错、安全。
  1. 分布式文件系统是如何实现高水平扩展的?
    分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些节点分为两类,一类叫“主节点”或“名称节点”,即NameNode,一类叫“从节点”或“数据节点”,即DataNode。
    通过名称节点管理文件和目录并管理数据结点和文件块的映射关系;
    数据结点负责数据的存储和读取。

HDFS架构:
在这里插入图片描述

  1. 试述HDFS的块和普通文件系统中的块的区别
    HDFS的块大小更大,一般默认一个块大小为128MB,这是由于HDFS中的文件会被拆为多个块作为独立单元进行存储

  2. 试述HDFS中的名称节点和数据结点的具体功能

  • 名称节点负责管理分布式文件系统的命名空间(包括目录、块、文件),记录每个文件中各个块所在的数据节点的位置信息;
  • 数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者名称节点的调度来进行数据的存储和检索,并向名称节点定期发送自己所存储的块的列表。
  1. 在分布式文件系统中,中心节点的设计至关重要,请阐述HDFS是如何减轻中心节点的负担的
  • 在客户端需要访问一个文件时,名称节点并不参与数据的传输,而是只将数据节点位置发给客户端,因此实现了一个文件的数据能够在不同的数据节点上实现并发访问,大大提高了数据访问速度并减轻了中心服务器的负担,方便了数据管理。

名称节点:
在这里插入图片描述
名称节点架构:
在这里插入图片描述

  1. HDFS只设置唯一一个名称节点,在简化系统设计的同时也带来了一些明显的局限性,请阐述局限性具体表现在哪些方面
    1) 命名空间的限制;2)性能的瓶颈;3)隔离问题;4)集群的可用性。

  2. 试述HDFS的冗余数据保存策略
    采用了多副本方式多数据进行存储。即先在集群内挑选一台磁盘不太满、CPU不太忙的数据节点作为第一个副本存放点;选取不同的机架的数据节点作为第二副本存放点;选择与第一副本存放点同机架的不同节点作为第三副本存放点;第四副本存放点从集群中随机挑选节点。
    在这里插入图片描述

  3. 数据复制主要是在数据写入和数据恢复的时候发生,HDFS数据复制是使用流水线复制的策略,请阐述该策略的细节?
    每个块都会向HDFS集群中的名称节点发出写请求,名称节点会返回一个数据节点列表给客户端,客户端将数据写入列表中第一个数据节点时,同时把列表传给第一个节点;第一个节点在接收到数据写入本地的同时,会把自己已经接收到的数据传给第二个数据节点,同时第二个数据节点接收到数据时,会在写入的同时将数据发送给第三个节点,以此类推。

  • 块->名称节点->客户端->数据节点

  • 策略:
    在这里插入图片描述

  • 流程:


  • 在这里插入图片描述

  1. 试述HDFS是如何探测错误发生以及如何进行恢复的?
    1) 名称节点出错:将名称节点上的元数据信息同步存储到其他文件系统中;并运行一个第二名称节点SecondNameNode,当名称节点宕机之后,利用第二名称节点进行系统恢复。
    2) 数据节点出错:将无法接收到“心跳”信号的数据节点标记为不可读,如果数据块的副本数量小于冗余因子,就会启动数据冗余复制,为它生成新副本。
    3) 数据出错:客户端收到数据后会使用md5和sha1对数据块进行校验;如果校验出错,客户端就会请求到另外一个数据节点读取该文件块,并向名称节点报告这个文件块有错误,名称节点会定期检查并且重新复制这个块。

第二名称节点:
在这里插入图片描述

在这里插入图片描述

  1. 请阐述HDFS在不发生故障的情况下读文件的过程
    1) 客户端打开文件,创建输入流;
    2) 输入流通过远程调用名称节点,获得文件开始部分数据块的保存位置;
    3) 客户端得到位置后开始读取数据,输入流选择距离客户端最近的数据节点建立连接并读取数据;
    4) 数据从该数据节点读取至客户端结束时,关闭连接;
    5) 输入流查找下一个数据块;
    6) 找到该数据块的最佳数据节点,读取数据;
    7) 客户端读取完毕数据时,关闭输入流。
  • 数据节点之间是链式的
  • 用户只操作命令通过客户端传达
  1. 请阐述HDFS在不发生故障的情况下写文件的过程
    1) 客户端创建文件和输出流;
    2) HDFS调用名称节点,在文件系统的命名空间中建一个新的文件,并执行检查;检查通过后,名称节点会构造一个新文件夹,并添加文件信息;
    3) 客户端通过输出流向HDFS的文件写入数据
    4) 客户端写入的数据首先会被分成一个个的分包,将分包放入输出流对象的内部队列,并向名称节点申请若干个数据节点,然后通过流水线复制策略打包成数据包发送出去;
    5) 为保证所有数据节点的数据都是准确的,需要数据节点向发送者发送**“确认包”**,当客户端收到应答时,将对应的分包从内部队列移除。不断执行3~5直至数据写完;
    6) 客户端关闭输出流,通知名称节点关闭文件。

HDFS重点回顾

  • 节点之间交流协议:
    在这里插入图片描述

  • 具体数据复制保存的例子:
    在这里插入图片描述

  • 机架距离计算
    在这里插入图片描述

  • 读写流程:
    在这里插入图片描述
    在这里插入图片描述

  • 心跳机制
    DataNode心跳机制的作用讲解了DataNode的三个作用:

  1. register:当DataNode启动的时候,DataNode需要将自身的一些信息(hostname, version等)告诉NameNode,NameNode经过check后使其成为集群中的一员,然后信息维护在NetworkTopology中
  2. block report:将block的信息汇报给NameNode,使得NameNode可以维护数据块和数据节点之间的映射关系
  3. 定期的send heartbeat
    • 告诉NameNode我还活着,我的存储空间还有多少等信息
    • 执行NameNode通过heartbeat传过来的指令,比如删除数据块

以上第1和第2个动作都是在DataNode启动的时候发生的,register的步骤主要功能是使得这个DataNode成为HDFS集群中的成员,DataNode注册成功后,DataNode会将它管理的所有的数据块信息,通过blockReport方法上报到NameNode,帮助NameNode建立HDFS文件数据块到DataNode的映射关系,这一步操作完成后,DataNode才正式算启动完成,可以对外提供服务了。

由于NameNode和DataNode之间存在主从关系,DataNode需要每隔一段时间发送心跳到NameNode,如果NameNode长时间收不到DataNode节点的心跳信息,那么NameNode会认为DataNode已经失效。NameNode如果有一些需要DataNode配合的动作,则会通过心跳返回给DataNode,心跳返回值是一个DataNodeCommand数组,它是一系列NameNode的指令,这样DataNode就可以根据指令完成指定的动作,比如HDFS文件的删除。

HBase

  1. 试述在Hadoop体系结构中HBase与其他组成部分的相互关系
  • HBase利用Hadoop MapReduce来处理HBase中的海量数据,实现高性能计算;
  • 利用Zookeeper作为协同服务,实现稳定服务和失败恢复;
  • 利用HDFS作为高可靠的底层存储,
  • 利用廉价集群提供海量数据存储能力;
  • 此外,Sqoop为HBase提供了高效、便捷的RDBMS数据导入功能
  • Pig和Hive为HBase提供了高层语言支持。
  1. 请阐述HBase和BigTable底层技术的对应关系
BigTable HBase
文件存储系统 GFS HDFS
数据处理 MapReduce Hadoop MapReduce
协同服务 Chubby Zookeeper
  1. 请阐述HBase和传统关系数据库的区别
区别 传统数据库 HBase
数据类型 关系模型 数据模型
数据操作 增删改查、多表连接 增删改查
存储模式 基于行或元组存储 基于列存储
数据索引 针对不同列构建复杂的多个索引 只有一个行索引
数据维护 用最新的值去替换记录中原来的旧值 更新操作不会删除数据旧的版本,而是生成新的版本
可伸缩性 很难横向伸缩,纵向也很有限 很容易通过增加硬件的数量来实现性能的伸缩
  1. HBase有哪些类型的访问接口
    HBase提供了Native Java API、HBase Shell、Thrift Gateway、REST GateWay、Pig、Hive等访问接口。

  2. HBase实例

  3. 分别解释HBase中行键、列族和时间戳的概念

  • 行键是唯一的,在一个表中只出现一次,可以是任意字符串。
  • 列族是基本的数据访问控制单元,需要在创建表的时候就定义好,数量不能太多,而且不能频繁修改。
  • 时间戳用于区分一份数据的不同版本,由系统指定或者用户自己赋值。
  1. 请举个实例来阐述HBase的概念视图和物理视图的不同
    Hbase的概念视图中,一个表可视为一个稀疏、多维的映射关系。如图所示:
    在这里插入图片描述
    Hbase的物理视图在物理存储方面会采用基于列的存储方式,因此上图会被拆违两个小片段,即按列族分别存放:
    在这里插入图片描述
  2. 试述HBase各功能组件及其作用
  • 库函数:链接到每个客户端。
  • 一个Master主服务器:负责管理和维护HBase表的分区信息,负责维护和管理Region服务器列表及Region服务器,处理模式变化。
  • 许多个Region服务器:是Hbase中最核心的模块,负责维护分配给自己的Region,并相应用户的读写请求。
  1. 请阐述HBase的数据分区机制
    Hbase采用分区存储,一个大的表会根据行键的值对行进行分区每个行区间构成一个分区Region,这些Region会被分发到不同的Region服务器上。

  2. HBase中的分区是如何定位的
    通过构建的映射表,即Region标识符查表后可以找到对应的Region服务器标识符,从而可以知道某个Region数据被保存到哪个Region服务器中。

  3. 试述HBase的三层结构中各层次的名称和作用

第一层 Zookeeper文件 记录了-ROOT-表的位置信息
第二层 -ROOT-表 记录了.META表的Region位置信息,-ROOT-表只能有一个Region,通过-ROOT-表可以访问.META表中的数据
第三层 .META表 记录了用户数据表的位置信息,.META表可以有多个访问.META表中的数据
  1. 请阐述在HBase的三层结构下,客户端是如何访问到数据的
    首先访问Zookeeper,获取-ROOT-表的位置信息,然后访问-ROOT-表,得到.META.表的信息,接着访问.META.表,找到所需的Region具体位于哪个Region服务器,最后才会到该Region服务器读取数据。

  2. 试述HBase系统基本架构以及每个组成部分的作用

  • 客户端:包含访问Hbase的接口,同时在缓存中维护已经访问过的Region位置信息,用来加快后续数据访问过程。
  • Zookeeper服务器:帮助维护当前的集群中机器的服务状态,帮助选出一个“总管”,即保证在任何时刻总有唯一一个Master在运行
  • Master:主服务器Master主要负责表和Region的管理工作。管理用户对表的增删改查操作;实现Region服务器之间的负载平衡;负责重新调整Region的分布;对发生故障失效的Region服务器上的Region数据进行迁移。
  • Region服务器:负责维护分配给自己的Region,响应用户的读写请求。
  1. 请阐述Region服务器向HDFS文件系统中读写数据的基本原理
  • 用户写入数据时,会被分配到相应的Region服务器去执行操作。用户数据首先被写入到MemStore和HLog中,当写操作写入HLog之后,commit()调用才会将其返回给客户端。
  • 当用户读取数据时,Region服务器会首先访问MemStore缓存,如果数据不在缓存中,才会到磁盘上面的StoreFile中去寻找。
  1. 试述Store的工作原理
  • Store是Region服务器的核心,每个Store对应表中一个列族的存储,每个Store包含一个MemStore缓存和若干个StoreFile文件。
  • MemStore是排序的内缓冲区,当用户写入数据时,系统会先将数据放入到MemStore缓存,当Memstore缓存满时,会被刷新到磁盘中的一个MemFile文件中;
  • MemFile文件数量过多时会触发合并文件操作,当MemFile单个文件大小过大时,会触发文件分裂操作。
  1. 试述HLog的工作原理
    HBase系统为每个Region服务器配置了一个HLog文件,用户更新数据必须首先被计入日志后才能写入MemStore缓存,并且直到MemStore缓存内容对应的日志已经被写入磁盘之后,该缓存内容才会被刷新写入磁盘。

  2. 在HBase中,每个服务器维护一个HLog,而不是为每个region单独维护一个HLog。请说明这种做法的优缺点

  • 优点:当有多个Region对象的更新操作发生的日志修改时,只需要不断把日志记录追加到单个日志文件中,而不需要同时打开、写入到多个日志文件中,可以减少磁盘寻址次数,提高对表的写操作性能。
  • 缺点:如果一个Region服务器发生故障,为了恢复其上的Region对象,需要将Region服务器上的HLog文件按照所属的Region对象进行拆分,然后分发到其他的Region服务器上执行恢复操作。
  1. 当一台Region服务器意外终止时,Master如何发现这种意外终止情况的?为了回顾这台发生意外的Region服务器上的Region,Master应该做出哪些处理(包括如何使用HLog进行恢复)

Zookeeper会通知Master。

  • Master首先会处理该服务器上遗留的HLog文件,系统会根据每条日志记录所属的Region对象对HLog数据进行拆分,放到对应的Region对象的目录下;
  • 再将失效的Region重新分配到可用的Region服务器中,并将与该Region对象相关的日志记录也发送给相应的Region服务器。
  • Region服务器领取到分配给自己的Region对象以及对应的HLog日志记录后,会重新做一次日志中的操作,把日志中记录的数据写入MemStore缓存,然后刷新到磁盘的MemFile文件中,完成数据恢复。

第五章 NoSQL数据库

  1. 如何准确理解NoSQL的含义
    NoSQL数据库是一种不同于关系数据库的数据库管理系统设计方式,是对非关系数据库的统称,它所采用的数据模型并非传统的关系数据库的关系模型,而是类似键/值、列族、文档、图等非关系模型。

  2. 试述关系数据库在哪些方面无法满足Web2.0应用的需求
    无法满足海量数据的管理需求、无法满足数据高并发的需求、无法满足高可扩展性和高可用性的需求。

  3. 为什么说关系数据库的一些关键特性在Web2.0时代成为“鸡肋”
    Web2.0网站通常不要求严格的数据库事务、严格的读写实时性、不包含大量复杂的SQL查询。

  4. 请比较关系数据库和NoSQL数据库的优缺点
    项目 关系型数据库

  • SQL优点 :以完善的关系代数理论作为基础,有严格的标准,支持事务ACID四性,借助索引机制可以实现高效的查询,技术成熟,有专业公司的技术支持
  • Nosql优点 :可以支持超大规模数据存储,灵活的数据模型可以很好支持Web2.0应用,具有强大的横向扩展能力
  • SQL缺点 :可扩展性较差,无法较好地支持海量数据存储;数据模型过于死板,无法较好支持Web2.0应用;
  • Nosql缺点:事务机制影响了系统的整体性能 缺乏数学理论基础,复杂查询性能不高,一般不能实现事务强一致性、汉南实现数据完整性,技术尚不成熟,缺乏专业团队的技术支持,维护较困难
  1. 试述NoSQL数据库的四大类型
  • 键值数据库:使用一个哈希表,表中有一个特定的Key和一个指针指向特定的Value,Key可以用来定位Value,即存储和检索具体的Value。
  • 列族数据库:采用列族数据模型,数据库由多行构成,每行数据包括多个列族,不同行可以拥有不同数量的列族,属于同一列族的数据会被存放在一起。
  • 文档数据库:文档作为最小单位,文档以某种标准化格式封装并对数据进行加密。
  • 图数据库:使用图作为数据模型来存储数据。
  1. 试述CAP理论的具体含义
    C(Consistency):一致性,多点分布环境中,多点的数据是一致的。
    A(Availability):可用性,指能够快速获取数据,可以在确定的时间内返回操作结果。
    P(Tolerance of Network Partition):分区容忍性,指出现网络分区的情况时,分离的系统也能正常运行。

  2. 请举例说明不同产品在设计时是如何运用CAP理论的
    CA:放弃分区容忍性,即影响系统的可扩展性,传统的关系数据库都采用了这种设计原则;
    CP:放弃可用性,当出现网络分区的时候,受影响的服务需要等待数据一致,即在等待期间无法对外提供服务, Neo4J、BigTable等NoSQL数据库采用;
    AP:放弃一致性,允许系统返回会不一致的数据,在Web2.0应用中是可行的。

  3. 试述数据库的ACID四性的含义
    原子性、一致性、隔离性、持久性。

  4. 试述BASE的具体含义

  • 基本可用(Basically available):一个分布式系统的一部分发生问题变得不可用时,其他部分仍然可以正常使用,也就是允许分区失败的情形出现。
  • 软状态(Soft-state):状态可以有一段时间不同步,具有一定的滞后性。
  • 最终一致性(Eventual consistency):允许后续的访问操作可以暂时读不到更新后的数据,但是经过一段时间后,必须读到更新后的数据。
  1. 请解释软状态、无状态、硬状态的具体含义
  • 软状态:与硬状态相对,状态可以有一段时间不同步,具有一定的滞后性;
  • 无状态:没有记忆,即进行了任何操作都不会保存修改;
  • 硬状态:保持数据一致性,即保证数据一直是正确的。
  1. 什么是最终一致性
    经过一段时间后能够访问到最新的数据。

  2. 试述不一致性窗口的含义
    从OP操作完成到后续访问可以读取到OP写入的最新值,这之间的时间间隔称为不一致性窗口,这个窗口的大小依赖于交互延迟、系统负载和副本个数等因素。

  3. 最终一致性根据更新后各进程访问到数据的时间和方式的不同,又可以分为哪些不同类型的一致性
    因果一致性、读己之所写一致性、会话一致性、单调读一致性、单调写一致性。

  4. 什么是NewSQL数据库
    NewSQL是对各种新的可扩展、高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储能力,还保持了传统数据库支持ACID和SQL等特性;即都支持关系数据模型,都使用SQL作为其主要的接口。

  5. 试述NewSQL数据库与传统的关系数据库以及NoSQL数据库的区别
    对比NoSQL数据库,NewSQL数据库支持支持关系数据模型;相比传统关系数据库,NewSQL数据库具有明显的性能优势,并且具有对海量数据的存储能力。

第七章 MapReduce

  1. 试述MapReduce和Hadoop的关系
    谷歌公司首先提出了MapReduce,Hadoop MapReduce是它的开源实现。

  2. 试述适合用MapReduce来处理的任务或者数据集需要满足怎样的需求
    待处理的数据集可以分解成许多小的数据集,而且每个小数据集可以完全并行地进行处理。
    在这里插入图片描述
    在这里插入图片描述

  3. 试述JobTracker和TaskTracker的功能

  • JobTracker在主机上运行,监测每个Map任务结束后,通知相关的Reduce任务来领取数据;即负责作业和任务的调度,监控他们的执行,并重新调度已经失败的任务。
  • TaskTracker运行在从节点上,执行由JobTracker指派的任务。

在这里插入图片描述

  1. TaskTracker出现故障会有什么影响,该故障是如何处理的
    TaskTracker出现故障会停止或者很少向JobTracker发送心跳;此时JobTracker会注意到该情况,从而将该TaskTracker从等待任务调度的TaskTracker池中移除,JobTracker会安排此TaskTracker上一个成功运行的Map任务返回。并将该任务重新指派出去。

  2. 试述Map函数和Reduce函数的输入、输出以及处理过程

  • Map函数的输入为分布式文件系统的文件块,这些文件快的格式是任意的。Map函数将输入的元素转换成<key, value>形式的键值对,键和值的类型也是任意的。
  • Reduce函数的输入是Map函数输出的结果即中间结果,其任务是将输入的一系列具有相同键的键值对以某种方式组合起来,输出处理后的键值对,输出结果会合并成一个文件。
  1. 试述MapReduce的工作流程(需包括提交任务、Map、Shuffle、Reduce的过程)
    1) MapReduce框架使用InputFormat模块做Map前的预处理,然后将输入文件切分为逻辑上的多个InputSplit
    2) 通过RecordReader根据InputSplit中的信息来处理InputSplit中的具体记录,加载数据并转换为适合Map任务读取的键值对,输入给Map任务。
    3) Map任务会根据用户自定义的映射规则,输出一系列的<key, value>作为中间结果。
    4) Shuffle:对Map的输出进行一定的分区、排序、合并、归并等操作,得到<key,value-list>形式的中间结果,再交给对应的Reduce进行处理。
    5) Reduce以一系列<key, value-list>中间结果作为输入,执行用户定义的逻辑,输出结果给OutputFormat模块。
    6) OutputFormat模块会验证输出目录是否存在以及输出结果类型是否符合配置文件中的配置类型,如果都满足,就输出Reduce的结果到分布式文件系统。

  2. Shuffle过程是MapReduce过程的核心,也被称为奇迹发生的地方,试分析Shuffle过程的作用
    将Map输出结果进行分区、排序、合并等处理并交给Reduce的过程,减少磁盘I/O的读写次数,并减小从Map到Reduce之间的数据传递量。

  3. 分别描述Map端和Reduce端的Shuffle过程(包括Spill、Sort、Merge、Fetch的过程)

  • Map端:输入数据和执行map任务、写入缓存、溢写(分区、排序和合并)、文件归并
    Map的输出结果首先被写入缓存,当缓存满时就启动溢写操作,把缓存中的数据写入磁盘文件,并清空缓存。当启动溢写操作时,首先需要把缓存中的数据进行分区,然后对每个分区的数据进行排序和合并,之后再写入磁盘文件。每次溢写操作会生成一个新的磁盘文件,随着Map任务的执行,磁盘中就会生成多个溢写文件。在Map任务全部结束之前,这些溢写文件会被归并成一个大的磁盘文件,然后通知相应的Reduce任务来领取自己处理的数据。
  • Reduce端:领取数据、归并数据、把数据输入给Reduce任务
    Reduce任务从Map端的不同Map机器领会属于自己处理的那部分数据,然后对数据进行归并后交给Reduce处理。
  1. 试说明一个MapReduce程序在运行期间所启动的Map任务数量和Reduce任务数量各是由什么因素决定的?
  • Map任务数量:输入文件数目、输入文件的大小、配置参数。
  • Reduce任务数量:配置参数。
  1. 是否所有的MapReduce程序都需要经过Map和Reduce两个过程?如果不是,请举例说明。
  • 不是。例如对于关系的选择运算,只需要Map过程就能实现。对于关系R中的每个元组t,检测是否是满足条件的所需元组,如果满足条件,则输出键值对<t, t>,也就是说,键和值都是t。这时的Reduce函数就只是一个恒等式,对输入不作任何变换就直接输出
  1. 试分析为何采用Combiner可以减少数据传输量。是否所有的MapReduce程序都可以采用Combiner?
  • 使用Combiner后,可以将具有相同key的<key, value>的value加起来,这样可以减少键值对的数量从而减少数据传输量。但是不是所有的都可以使用Combiner,因为Combiner的输出是Reduce程序的输入,Combiner决不能改变Reduce任务的最终计算结果。一般而言,累加、最大值等场景可以使用合并操作。
  1. MapReduce程序的输入文件、输出文件都存储在HDFS中,而在Map任务完成时的结果则存储在本地磁盘中,试分析中间结果存储在本地磁盘而不是HDFS上有何优缺点?
  • 优点:更符合移动计算比移动数据经济原则,且Map输出结果仅仅是中间结果,在Reduce任务完成后,中间结果会被删除, HDFS还会对该部分数据做复制备份,造成资源浪费。
  1. 早期版本的HDFS,其默认块大小为64MB,而较新的版本默认为128MB,采用较大的块有什么影响和优缺点?
  • 采用较大的块说明分片的数量较小,那么map任务也较少,导致任务的并行化程度不高,不能充分利用集群资源,拖慢作业运行速度
  • 采用较小的块,说明map任务较多,而创建多个map任务进程需要耗费大量时间。
  • 块的大小设置主要从以下考虑:减少磁盘寻址时间、减少Namenode内存消耗、Nap崩溃问题、监管时间问题、问题分解问题、约束Map输出。
  1. 在基于MapReduce的单词统计中,MapReduce是如何保证相同的单词数据会划分同一个Reducer上进行处理以保证结果的正确性?
  • 通过将相同的单词数据作为key值,相同单词出现的次数作为value值,由于Reduce任务是按key值 进行划分的,因此保证了相同的单词数据会划分到同一个Reducer上进行处理。
  1. 利用MapReduce的分布式优点,试设计一个基于MapReduce的排序算法,假设数据均位于[1,100],Reducer的数量为4,正序输出或逆序输出结果均可。试简要描述该过程(可使用Partition、Combine过程)
  • 在Map过程中,将数据等量分给n个Map过程进行快速排序,使用Combiner进行一定归并后输出;然后使用4个Reducer分别处理区间为[1,25][25,50],[50,75],[75,100]的数据,最后归并成一个大文本数据。
  1. 试设计一个基于MapReduce的算法,求出数据集中的最大值。假设Reducer大于1,试简要描述该算法(可使用Partition、Combine过程)。
  • 在Map过程中每一个任务通过Partition和Combine过程后只向Reducer传递自己这一部分的最大值,最后Reducer归并得到最大值即可。
  1. 试述实现矩阵向量乘法与矩阵乘法采用不同的MapReduce策略的原因.
  • 由于矩阵向量乘法最终得到的只是一个n维向量,不需要加入Mij和Njk对应元素的乘积之和,所以采用了不同的MapReduce策略。

MR工作实例

在这里插入图片描述
在这里插入图片描述

Shuffle

在这里插入图片描述

Hadoop

  1. 试述在Hadoop推出之后其优化与发展主要体现在哪两个方面
  • 第一个方面是针对MapReduce和HDFS的许多方面做了有针对性的改进提升;
  • 另一方面是在Hadoop生态系统中融入了更多的新成员,使得Hadoop功能更加完善。
  1. 试述HDFS 1.0中只包含一个名称节点会带来哪些问题
  • 单点故障问题,即一旦集群中唯一一个名称节点发生故障,会导致整个集群变得不可用;
  • 另外,第二名称节点无法提供热备份功能,即名称节点发生故障的时候,系统无法实时切换到第二名称节点立即对外提供服务,仍然需要进行停机恢复。
  1. 请描述HDFS HA架构构成组件及其具体功能
    HA架构中,一般设置了两个名称节点。一个为活跃的名称节点,负责对外处理所有客户端的请求;一个为待命的名称节点,作为备用节点,保存了足够多的系统元数据,当名称节点出现故障时提供快速恢复能力。

  2. 请阐述为什么需要HDFS联邦,即它能够解决什么问题?
    HDFS 1.0中存在可扩展性(名称节点进行纵向扩展时会带来过长系统时间等问题)、系统性能(单个名称节点内存等资源有限)、隔离性三个方面问题。

  • HDFS联邦通过设计多个相互独立的名称节点以联邦关系连接在一起,实现HDFS命名系统的水平扩展;
  • 同时,通过多个节点还能同时对外提供服务,为用户提高更高的吞吐量;
  • 另外,用户可以根据需求将不同业务数据交给不同的名称节点管理,实现了不同业务之间良好的隔离性。
  1. 请描述HDFS中“块池”的概念,并分析为什么HDFS联邦中的一个名称节点失效,也不会影响到与它相关的数据节点继续为其他名称节点提供服务
    块池.
  • 每个命名空间管理属于自己的一组块,这些属于同一个命名空间的块构成一个块池。每个数据节点为多个块池提供块的存储,即块池中的各个块实际上是存储在各个不同的数据节点中的。
  1. 请描述YARN架构中各组件的功能
  • ResourceManager:处理客户端请求;启动/监控ApplicationMaster;监控NodeManager;资源分配与调度。
  • ApplicationMaster:为应用程序申请资源,并分配给内部任务;任务调度、监控与容错。
  • NodeManager:单个节点上的资源管理,处理来自ResourceManager的命令;处理来自ApplicationMaster的命令。
    在这里插入图片描述
    在这里插入图片描述
  1. 请描述在YARN框架中执行一个MapReduce程序时,从提交到完成需要经历的具体步骤
    1) 用户编写客户端应用程序,向YARN提交应用程序;
    2) ResourceManager接到客户端应用程序请求后,其调度器为应用程序分配一个容器;同时,其应用程序管理器会与该容器的NodeManager通信,为该应用程序在容器中启动一个ApplicationMaster;
    3) ApplicationMaster向ResourceManager注册,以便用户直接查看应用程序的运行状态;
    4) ApplicaitonMaster采用轮询的方式通过RPC协议向ResourceMaster申请资源;
    5) ResourceManager以容器的形式分配资源,一旦ApplicationMaster申请到资源之后,就会与该容器坐在的NodeManager进行通信,要求它启动任务;
    6) 当容器启动任务时,Application会设置好运行环境(包括环境变量、JAR包、二进制程序等等),然后将任务启动命令写到一个脚本中,最后通过在容器中运行该脚本来启动任务;
    7) 各个任务通过PRC协议向AppicationMaster汇报自己的状态和进度,让ApplicationMaster可以随时掌握各个人物的运行状态,从而可以在任务失败时重新启动任务;
    8) 应用程序完成后,ApplicationMaster向ResourceManager的应用程序管理器注销并关闭自己;如果因故失败,应用程序管理器会检测到失败的情形,将其重新启动直到所有的任务执行完毕。

  2. 请对YARN和MapReduce 1.0框架进行优劣势对比分析
    1) YARN大大减少了承担中心服务功能的ResourceManager的资源消耗;
    2) YARN只是一个纯粹的资源调度管理框架,可以在上面运行不同类型的计算框架;
    3) YARN中的资源管理比MapReduce 1.0更加高效。

  3. 请分别描述Pig、Tez和Kafka的功能

  • Pig提供了类似SQL语言的Pig Latin语言,允许用户通过编写简单的脚本来实现复杂的数据分析将脚本自动转换成MpReduce作业在Hadoop集群上运行,并且对生成的MapReduce程序进行自动优化。即Pig可以加载数据、表达转换数据以及存储最终结果,但Pig只面向批处理,不适用于所有的数据分析任务。
  • Tez是Apache开源的支持DAG作业的计算框架,其核心思想是将Map和Reduce两个操作进行进一步拆分,这些元操作可以进行任意自由组合产生新的操作;提供了程序运行的整体处理逻辑,去除工作流中多余的Map阶段,减少不必要的操作,提升数据处理的性能。
  • Kafka是LinkeIn公司开发的一种高吞吐量的分布式发布订阅消息系统,用户通过Kafka系统可以发布大量的消息,同时也能实时订阅消费消息。使用Kafka作为数据交换枢纽,可以实现和Hadoop各个组件之间的不同类型数据的实时高效交换,较好满足各种企业的应用需求。同时可以很好地解决不同系统之间的数据生产/消费速率不同的问题。

第九章 Spark

  1. Spark是基于内存计算的大数据计算平台,试述Spark的主要特点
    1) 运行速度快; 2)容易使用; 3)通用性; 4)运行模式多样。
  • spark 架构
    在这里插入图片描述
    在这里插入图片描述
  1. Spark的出现使为了解决Hadoop MapReduce的不足,试列举Hadoop MapReduce的几个缺陷,并说明Spark具有哪些优点
  • Hadoop的缺点:1)表达能力有限;2)磁盘I/O开销大;3)延迟高。
  • Spark的优点:
    1) 除了Map和Reduce操作,提供了多种数据集操作类型,编程模型比Reduce更加灵活。
    2) 提供了内存计算,中间结果直接存放在内存中,带来了跟高的迭代运算效率。
    3) 基于DAG的任务调度执行机制,优于MapReduce的迭代执行机制。
  1. 美国加州大学伯克利分校提出的数据分析的软件站BDAS认为目前的大数据处理可以分为哪三个类型?
    1)复杂的批量数据处理;2)基于历史数据的交互式查询;3)基于实时数据流的数据处理。

  2. Spark打造出结构一体化、功能多样化的大数据生态系统,试述Spark的生态系统
    Spark的设计遵循“一个软件栈满足不同应用场景”的理念,既能够提供内存计算框架,也可以支持SQL即席查询、实时流式计算、机器学习和图计算等。Spark可以部署在资源管理器YARN之上,提供一站式的大数据解决方案。

  3. 从Hadoop + Storm架构转向Spark架构可带来哪些好处?
    1) 实现一键式安装和配置、线程级别的任务监控和告警;
    2) 降低硬件集群、软件维护、任务监控和应用开发的难度;
    3) 便于作成统一的硬件、计算平台资源池。

  4. 试述Spark on YARN的概念
    即Spark可以运行在YARN之上,与Hadoop进行统一部署,即Spark on YARN,其架构如图所示,其中资源管理和调度依赖YARN,分布式存储则依赖HDFS。

在这里插入图片描述

  1. 试述如下Spark的几个主要概念:RDD、DAG、阶段、分区、窄依赖、宽依赖
  • RDD:弹性分布式数据集(Resilient Distributed Dataset),是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型
  • DAG:有向无环图(Directed Acyclic Graph),反映RDD之间的依赖关系。
  • 阶段:是作业的基本调度单位,一个作业会分为多个阶段,一个阶段会分为多个任务。
  • 分区:一个RDD就是一个分布式对象集合,本质上只是一个只读的分区记录集合,每个RDD可以分成多个分区,每个分区就是一个数据集片段,并且一个RDD的不同分区可以保存到集群中的不同节点,从而可以在集群中的不同节点上进行并行计算。
  • 窄依赖:一个父RDD对应一个子RDD的分区,或者是多对一;
  • 宽依赖:一个父RDD对应多个子RDD的分区。
  1. Spark对RDD的操作主要分为行动和转换两种类型,两种操作的区别是什么?
  • 行动Action:用于执行计算并指定输出的形式,接受RDD但是返回非RDD,运算
  • 转换Transfor:用于指定RDD之间的相互依赖关系,接受RDD并返回RDD,只记录依赖关系不进行运算
    在这里插入图片描述
    依赖关系:称之为血缘关系,即DAG拓扑排序的结果

Spark作业

在这里插入图片描述

  • Spark优势
    在这里插入图片描述
    在这里插入图片描述

  • Spark缺陷
    在这里插入图片描述

Spark 组件

在这里插入图片描述

宽窄依赖

  • 窄依赖
    在这里插入图片描述
  • 宽依赖
    在这里插入图片描述

Spark概念关系

在这里插入图片描述
在这里插入图片描述

Spark的模式

  • Local模式
    在这里插入图片描述
  • Stanalone
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Spark On Yarn

在这里插入图片描述

流计算

  1. 试述流数据的概念
    流数据是指在时间分布和数量上无限的一系列动态数据集合体;数据记录是流数据的最小组成单元。

  2. 试述流数据的特点
    1) 数据快速持续到达,潜在大小也许是无穷无尽的。
    2) 数据来源众多,格式复杂。
    3) 数据量大,但是不是十分关注存储。
    4) 注重数据的整体价值,不过分关注个体数据。
    5) 数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序。

  3. 在流计算的概念中,数据的价值与时间具备怎样的关系

  • 数据的价值随时间的流逝而降低。
  1. 试述流计算的需求
    高性能、海量性、实时性;
    分布式、易用性、可靠性。

  2. 试述MapReduce的框架为何不适用于处理流数据?
    MapReduce框架由于需要进行分解、迭代等流程,在时间延迟方面是无法满足流计算的实时响应要求的。

  3. 将基于MapReduce的批量处理转为小批量处理,每隔一个周期就启动一次MapReduce作业,通过这样的方式来处理流数据是否可行,为什么
    不可行。
    1) 切分成小片段同时增加了任务处理的附加开销,并且需要处理片段之间的依赖关系;
    2) 需要对MapReduce进行改造以支持流式处理,会大大增加MapReduce框架的复杂度,导致系统难以维护和扩展;
    3) 降低了用户程序的可伸缩性,因为用户必须使用MapReduce接口定义流式作业。

  4. 试述流计算的一般处理流程
    数据实时采集、数据实时计算、实时查询服务。

  5. 试述流计算流程与传统的数据处理流程之间的主要区别
    传统的数据处理需要先采集数据并存储在关系数据库等数据管理系统中,并且需要用户主动发起查询;流计算是使用实时数据流,经过计算和分析后,实时查询服务可以不断更新结果,并将用户所需要的结果实时推送给用户。

  6. 试述流计算流程与传统的数据处理流程之间的主要区别

  • 传统的数据处理需要先采集数据并存储在关系数据库等数据管理系统中,并且需要用户主动发起查询;
  • 流计算是使用实时数据流,经过计算和分析后,实时查询服务可以不断更新结果,并将用户所需要的结果实时推送给用户。
  1. 试述流计算系统与传统的数据处理系统对所采集数据的处理方式有什么不同?
  • 流计算不像传统的数据处理系统,一般在Store部分不进行数据的存储,而是将采集的数据直接发送给流计算平台进行实时计算。
  1. 为什么说Storm流处理框架开发实时应用,其开发成本较低
    以往开发人员在开发一个实时应用的时候,除了要关注处理逻辑,还要为实时数据的获取、传输、存储大伤脑筋;在Storm流处理框架下,Storm可以简单、高效、可靠处理流数据,并支持多种编程语言,且能方便地与数据库系统进行整合,从而开发强大的实时应用。

  2. 试述Twitter采用的分层数据处理框架
    Twitter采用了由实时系统和批处理系统组成的分层数据处理架构;
    一方面,由Hadoop和ElephantDB组成了批处理系统;
    另一方面,由Storm和Cassandra组成实时系统。在计算查询时,该数据库会同时查询批处理视图和实时视图,并把它们合并起来得到最终结果。实时系统处理结果最终会由批处理系统来修正。

  3. 试列举几个Storm框架的主要特点
    1) 整合性,可方便地与队列系统和数据库系统进行整合;
    2) 简易的API;
    3) 可扩展性,其并行特性使其可以运行在分布式集群中;
    4) 容错性,可以自动进行故障节点的重启,以及节点故障时任务的重新分配;
    5) 可靠的消息处理,保证每个消息都能完整处理;
    6) 支持多种编程语言;
    7) 快速部署,只需要少量的安装和配置就可以快读进行部署和使用;
    8) 免费、开源。

  4. Storm的主要术语包括Streams、Spouts、Bolts、Topology和Stream Groupings,请分别简要描述这几个术语

  • Streams:是对数据流的抽象描述,即一个无限的Tuple序列。这些Tuple序列会以分布式的方式并行的创建和处理。
  • Spouts:Streams的抽象源头,Spouts会从外部读取流数据并持续发出Tuple。
  • Bolts:抽象的状态转换过程,既可以处理Tuple,也可以将处理后的Tuple作为新的Streams发送给其他的Bolts。对Tuple的处理逻辑都封装在Bolts中,可执行过滤、聚合、查询等操作。
  • Topology:Storm将Spouts和Bolts组成的网络抽象成Topology,是Storm中最高层次的抽象概念,可以被提交到Storm集群执行。一个Topology就是一个流转换图,其中的节点是一个Spout或Bolt,边表示Bolt订阅了哪个Stream。
  • Stream Groupings:用于告知Topology如何在两个组件间(如Spout和Bolt之间或者不同的Bolt之间)进行Tuple的传送。

在这里插入图片描述

  1. 试述Tuple的概念
    Tuple即元组,是元素的有序列表,每一个Tuple就是一个值列表,列表中的每个值都有一个名称,且该值可以是基本类型、字符类型、字节数组等。

  2. 一个Topology由哪些组件组成
    处理组件(Spout或Bolt)、组件之间的连接。

  3. 不同的Bolt之间如何传输Tuple
    通过序列化、套接字传输、反序列化完成。
    //通过订阅Tuple的名称来接收相应的数据。

  4. 试列举几种Stream Groupings的方式
    随机分组、按照字段分组、广播发送、全局分组、不分组、直接分组

  5. 试述MapReduce Job和Storm Topology的区别与联系

  • 其运行任务的方式类似:Hadoop上运行的是MapReduce作业,而在Storm上运行的是Topology。
  • 区别是两者的任务大不相同,MapReduce作业最终会完成计算并结束运行,而Topology将持续处理消息(直到人为终止)

在这里插入图片描述

  1. Storm集群中的Master和Worker节点各自运行什么后台进程,这些进程又分别负责什么工作?
  • Master负责运行“Nimbus”的后台程序,负责在集群范围中分发代码、为Worker分配任务和检测故障。
  • Worker负责运行“Supervisor”的后台程序,负责监听分配给它所在机器的工作,即根据Nimbus分配的任务来决定启动或停止Worker进程。
  1. 试述Zookeeper在Storm框架中的作用
  • Zookeeper作为分布式协调组件,负责一个Nimbus和多个Supervisor之间的所有协调工作。
  1. Nimbus进程和Supervisor进程意外终止后,重启时是否能恢复到终止之前的状态,为什么?
  • 可以。这两个进程借助Zookeeper将状态信息存放在了Zookeeper中或本地磁盘中,当Nimbus进程或Supervisor进程终止后,一旦进程重启,他们将恢复之前的状态并继续工作。这种设计使Storm极其稳定。
  1. Nimbus进程和Supervisor进程都是快速失败和无状态的,这样的设计有什么优点?
  • 节点故障时可以进行快速恢复。
  1. 试述Storm框架的工作流程
    1) 客户端提交Topology到Storm集群中;
    2) Nimbus将分配给Supervisor的任务写入Zookeeper;
    3) Supervisor从Zookeeper中获取所分配的任务,并启动Worker进程;
    4) Worker进程执行具体的任务。

  2. 试述Storm框架实现单词统计的一般流程:
    1) 从Spout中发送Stream(每个英文句子为一个Tuple);
    2) 用于分割单词的Bolt将接收的句子分解为独立的单词,将单词作为Tuple的字段名发送出去;
    3) 用于计数的Bolt接收表示单词的Tuple,并对其进行统计;
    4) 输出每个单词以及单词出现的次数。

  3. 试述采用MapReduce框架进行单词统计与采用Storm框架进行单词统计有什么区别?

  • MapReduce框架使用了Map和Reduce的过程,将文本进行分割后,由Map进行各文本段的单词计数再传输到Reduce中计数;而Storm框架使用了Spout和Bolt的抽象,由一个Bolt进行单词分割,另一个Bolt进行计数。
  1. Storm框架中单词统计Topology中定义了两个Bolt,试述两个Bolt各自完成的功能,以及中间结果如何在两个Bolt之间传输?
  • 第一个Bolt用于单词的分割,该Bolt中的任务随机接收Spout发送的句子,并从接受的句子中提取出单词;
  • 第二个Bolt接收第一个Bolt发送的Tuple进行处理,统计分割后的单词出现的次数。
  • Bolt通过订阅Tuple的名称来接收相应的数据,第一个Bolt声明其输出的Stream的名称为‘split’,第二个Bolt声明其订阅的Stream为‘split’。
  1. 在Storm的单词统计实例中,为何需要使用FieldGrouping()方法保证相同单词发送到同一个任务上进行处理?
  • 将具有相同字段值的所有Tuple(即单词相同的Tuple)发送到同一个任务中进行统计,从而保证了统计的准确性。
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到