大数据技术课后习题

第一章

1.试述信息技术发展史上的三次信息化浪潮及具体内容。

信息化浪潮 发生时间 标志 解决问题 代表企业
第一次浪潮 1980年前后 个人计算机 信息处理 Intel、AMD、IBM、苹果、微软、联想‘戴尔、惠普等
第二次浪潮 1955年前后 互联网 信息传输 雅虎、谷歌、阿里巴巴、百度、腾讯等
第三次浪潮 2010年前后 物联网、云计算和大数据 信息爆炸 将涌现出一批新的市场标杆企业

2.试述数据产生方式经历的几个阶段。

  1. 运营式系统阶段
    • 数据往往伴随着一定的运营活动而产生并记录在数据库中,数据的产生方式是被动的。
  2. 用户内容原创阶段
    • 数据爆发产生于Web2.0时代,而标志就是用户原创内容
    • 智能手机等移动设备加速内容产生
    • 数据产生方式是主动的
  3. 感知式系统阶段
    • 感知式系统的广泛使用
    • 人类社会的数据量第三次大的飞跃最终导致了大数据的产生

3.试述大数据的三个特征。

  1. 数据量大
  2. 数据类型繁多
  3. 处理速度快
  4. 价值密度低

4.试述大数据时代的“ 数据爆炸”特性。

人类社会正在经历第二次“数据爆炸”,各种数据的产生速度之快,产生数量之大,已远远超出人类可以控制的范围,“数据爆炸’成为大数据时代的鲜明特征。

5.科学研究经历了哪四个阶段?

  1. 实验科学

    采用实验来解决一些科学问题。

  2. 理论科学

    采用各种数学、几何、物理等理论,构建问题模型和解决方案。

  3. 计算科学

    通过设计算法并编写乡音程序输入计算机运行,人类可以借助于计算机的高速运算能力去解决各种问题。

  4. 数据密集型科学

    一般先提出可能的理论,在手机数据,然后通过计算来验证。

6.试述大数据对思维方式的重要影响。

  • 全样而非抽样

    科学分析完全可以针对全集数据而不是抽样数据,并且可以在短时间内迅速得到分析结果。

  • 效率而非精确

    全样分析结果不存在误差被放大的问题,海量数据的实时分析才是大数据时代的首要目标。

  • 相关而非因果

    大数据时代,因果关系不在那么重要,人们转而追求相关性。

7.大数据决策与传统的基于数据仓库的决策有什么区别?

传统的数据库以关系型数据库为基础,无论是数据类型还是数据量方面都存在较大的限制。而现在大数据决策可以面向类型繁多的、非结构化数据进行决策分析。

8.举例说明大数据的具体应用。

领域 大数据应用
互联网 借助于大数据技术,可以分析客户行为,进行商品推荐和有针对性的广告投放
物流行业 利用大数据优化物流网络,提高物流效率,降低物流成本
····

9.举例说明大数据的关键技术。

技术层面 功能
数据采集与预处理 利用ETL工具将分布的、异构数据源中的数据,如关系数据、平面数据文件等,抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础;也可以利用日志采集工具(如Flurme、Kafka 等)把实时采集的数据作为流计算系统的输人,进行实时处理分析
数据存储与管理 利用分布式文件系统、数据仓库、关系数据库、NoSQL数据库、云数据库等,实现对结构化、半结构化和非结构化海量数据的存储和管理
数据处理与分析 利用分布式并行编程模型和计算框架,结合机器学习和数据挖掘算法,实现对海量数据的处理和分析;对分析结果进行可视化呈现,帮助人们更好地理解数据、分析数据
数据安全和隐私保护 在从大数据中挖掘潜在的巨大商业价值和学术价值的同时,构建隐私数据保护体系和数据安全体系,有效保护个人隐私和数据安全

10.大数据产业包含哪些层面?

大数据产业包括IT基础设施层、数据源层、数据管理层、数据分析层、数据平台层、数据应用层

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

  • 云计算:实现了通过网络提供可伸缩性、廉价的分布式计算能力,用户只需要在具备网络接入条件的地方,就可随时随地获得所需要的IT资源。
  • 物联网:利用局部网络或互联网等通信技术把传感器、控制器、机器、人员和物等通过新的方式连在一起,形成人与物、物与物项链,实现信息化和远程管理控制。

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

  1. 大数据、云计算和物联网的区别。大数据侧重于对海量数据的存储、处理与分析,从海量数据中发现价值,服务于生产和生活:云计算本质上旨在整合和优化各种IT资源,并通过网络以服务的方式廉价地提供给用户;物联网的发展目标是实现物物相连,应用创新是物联网发展的核心。
  2. 大数据、云计算和物联网的联系。从整体上看,大数据、云计算和物联网这三者是相辅相成的。大数据根植于云计算,大数据分析的很多技术都来自于云计算,云计算的分布式数据存储和管理系统(包括分布式文件系统和分布式数据库系统)提供了海量数据的存储和管理能力,分布式并行处理框架MapRecduce提供了海量数据分析能力,没有这些云计算技术作为支撑,大数据分析就无从谈起。反之,大数据为云计算提供了“用武之地”,没有大数据这个“练兵场”,云计算技术再先进,也不能发挥它的应用价值。物联网的传感器源源不断产生的大量数据,构成了大数据的重要数据来源,没有物联网的飞速发展,就不会带来数据产生方式的变革,即由人工产生阶段转向自动产生阶段,大数据时代也不会这么快就到来。同时,物联网需要借助于云计算和大数据技术,实现物联网大数据的存储、分析和处理。

可以说, 云计算、大数据和物联网三者已经彼此渗透、相互融合,在很多应用场合都可以同时看到三者的身影。在未来,三者会继续相互促进、相互影响,更好地服务于社会生产和生活的各个领城。

第二章

1.试述 hadoop 和谷歌的mapreduce、gfs等技术之间的关系

Hadoop 的核心是分布式文件系统 HDFS和 MapReduce,HDFS是谷歌文件系 统 GFS的开源实现, MapReduces是针对谷歌 MapReduce的开源实现。

2.试述 Hadoop具有哪些特性。

高可靠性,高效性,高可扩展性,高容错性,成本低,运行在 Linux 平台, 支持多种编程语言。

3.试述 Hadoop在各个领域的应用情况。

2007年,雅虎在 Sunnyvale 总部建立了 M45——一个包含了 4000 个处理器 和 1.5PB 容量的 Hadooop集群系统; Facebook主要将 Hadoop平台用于日志处理,推荐系统和数据仓库等方面; 百度主要使用 Hadoop于日志的存储和统计、 网页数据的分析和挖掘、 商业分析、 在线数据反馈、网页聚类等。

4.试述 Hadoop的项目结构以及每个部分的具体功能。

  • Commeon是为 Hadoop其他子项目提供支持的常用工具,主要包括文件系统、 RPC 和串行化库
  • Avro 是为 Hadoop的子项目,用于数据序列化的系统,提供了丰富的数据结构类 型、快速可压缩的二进制数据格式、 存储持续性数据的文件集、 远程调用的功能 和简单的动态语言集成功能。
  • HDFS是 Hadoop项目的两个核心之一,它是针对谷歌文件系统的开源实现。
  • HBase是一个提高可靠性、高性能、可伸缩、实时读写、分布式的列式数据库, 一般采用 HDFS作为其底层数据存储。
  • MapReduce是针对谷歌 MapReduce的开源实现,用于大规模数据集的并行运算。
  • Zoookepper 是针对谷歌 Chubby的一个开源实现,是高效和可靠的协同工作系统, 提供分布式锁之类的基本服务, 用于构建分布式应用,减轻分布式应用程序所承 担的协调任务。
  • Hive 是一个基于 Hadoop的数据仓库工具,可以用于对 Hadoop文件中的数据集 进行数据整理、特殊查询和分布存储。
  • Pig 是一种数据流语言和运行环境,适合于使用 Hadoop和 MapReducce平台上查 询大型半结构化数据集。
  • Sqoop可以改进数据的互操作性,主要用来在 H大哦哦哦配合关系数据库之间交换数据。
  • Chukwa是一个开源的、用于监控大型分布式系统的数据收集系统,可以将各种 类型的数据收集成适合 Hadoop处理的文件,并保存在 HDFS中供 Hadoop进行各 种 MapReduce操作。

5.配置Hadoop时,Java的路径JAVA_HOME是在哪一个配置文件中进行设置的?

Hadoop-env.sh

6.所有节点的HDFS路径是通过fs.default.name来设置的,请问它是在哪个配置文件中进行设置的?

core-site.xml

7.试列举单机模式和伪分布模式的异同点。

  • 相同点
    • 单机模式和伪分布模式都是在一台单机上运行
  • 不同点
    • 分布式文件系统不同
      • 单机模式没有分布式文件系统,而是直接读写本地操作系统的文件系统
      • 伪分布模式用不同的java进程模仿分布式运行中的各类节点
    • 启动进程不同
      • 单机模式下,Hadoop不会启动NameNode、datanode、jobtracker、tasktracker等守护进程,Map()和Reduce()任务作为同一个进程的不同部分来执行的。
      • 伪分布模式下,hadoop启动NameNode、datanode、jobtracker、tasktracker等守护进程都在同一台机器上运行,是相互独立的Java进程。
    • 配置文件处理方式不同
      • 单机模式下,不对配置文件进行修改
      • 伪分布模式下,需要修改配置文件:core-site.xml、hdfs-site.xml。

8.Hadoop伪分布式运行启动后所具有的进程都有哪些?

  • NodeManger

  • Jps

  • NameNode

  • SecondaryNameNode

  • DateNode

  • ResourceManger

第三章

1. 试述分布式文件系统设计的需求。

设计需求 含义 HDFS的实现情况
透明性 具备访问透明性、位置透明性、性能、和伸缩透明性 只能提供一定程度的访 问透明性,完全支持位置 透明性、性能和伸缩透明 性
并发控制 客户端对于文件的读写 不应该影响其他客户端 对同一个文件的读写 机制非常简单,任何时候 都只允许有一个程序写入某个文件
文件复制 一个文件可以拥有不同位置的多个副本 HDFS采用了多副本机制
硬件和操作系统的异构 可以在不同的操作系统 和计算机上实现同样的 客户端和服务端程序 采用 Java 语言开发,具有很好的跨平台能力
可伸缩性 支持节点的动态加入或 退出 建立在大规模廉价机器 上的分布式文件系统集 群,具有很好的伸缩性
容错 保证文件服务在客户端 或者服务端出现问题的 时候能正常使用 具有多副本机制和故障 自动检测、恢复机制
安全 保证系统的安全性 安全性较弱

2. 分布式文件系统是如何实现较高水平的水平扩展?

分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些节点分为俩类,一类叫“主节点”或者也被称为“名称节点”,另一类叫“从节点”或者也被称为“数据节点”。

3. 试述HDFS中的块和普通文件系统中的块的区别。

  • 在传统的文件系统中,为了提高磁盘读写效率,比如是以数据块为单位,比如以字节为单位。
  • HDFS中的块,默认一个块大小为 64MB,而 HDFS中的文件会被拆分成多个块, 每个块作为独立的单元进行存储。 HDFS在块的大小的设计上明显要大于普通文 件系统。

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

  • 名称节点负责管理分布式文件系统的命名空间,记录分布式文件系统中的每个文件中各个块所在数据节点的位置信息。
  • 数据节点是分布式文件系统 HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索, 并向名称节点定期发送自己所存储的块的列表。

5. 在分布式文件系统中,中心节点的设计至关重要,请阐述HDFS是如何减轻中心节点的负担的。

名称节点不参与数据的传输。

6.HDFS只设置唯一一个名称节点,在简化系统设计的同时也带来了一些明显的局限性,阐述局限性具体表现在哪些方面。

  • 命名空间的限制: 名称节点是保存在内存中,因此名称节点能够容纳对象(文件,块) 的个数受到内存空 间大小的限制
  • 性能的瓶颈 :整个分布式文件系统的吞吐量受限于单个名称节点的吞吐量
  • 隔离问题 :由于集群中只有一个名称节点,只有一个命名空间,因此无法为不同应用程序 进行隔离
  • 集群的可用性 一旦唯一的名称节点发生故障,会导致整个集群不可用

7.试述HDFS的冗余数据保存策略。

HDFS 采用多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被分不到不 同的数据节点上。

8.数据复制主要是数据写入和数据恢复的时候发生,HDFS是使用流水线复制策略,请阐述该策略的细节。

这个文件首先被写入本地,被切分成若干个块,每个块向 HDFS集群中名称节点发起写 请求,名称节点会将各个数据节点的使用情况,选择一个数据节点列表返回给客户端, 当第一个数据节点接收块的时候,写入本地,并且向第二数据节点发起连接请求,把自己的接收的块传给第二个数据节点,依次类推,列表中的对个数据节点形成一条数据复 制的流水线。最后数据写完后,数据复制同时完成。

9.试述HDFS是如何探测错误发生以及如何进行恢复的。

  • 名称节点出错:
    • 把名称节点的元数据信息同步存储到其他文件系统;
    • 可以把第二名称节点作为补救措施 一般会把两者结合使用,其他文件系统的元数据信息放到第二名称节点进行恢复, 并把第二名称节点作为名称节点使用(这样做仍然会有一部分数据丢失)
  • 数据节点出错: 数据节点定期向名称节点发送心跳信息,向名称节点报告状态,如果名称节点没有 收到某些数据节点时,这时名称节点将这些数据节点标记为宕机,由于这些数据节点不 可用导致一些数据块的副本数据量小于冗余因子时,就会启动数据冗余复制,生成新的副本
  • 数据出错: 网络传输和磁盘错误等因数都会造成数据的错误, 客户端读取数据后,会采用 md5 对数据块进行校验,以正确读取到正确的数据。如果校验出错,客户端就会请求到另外 一个数据节点读取该文件块,并向名称节点报告这个文件错误,名称节点会定期检查并 重新复制这个块

10.请阐述HDFS在不发生故障的情况下读文件的过程。

  1. 使用 HDFS提供供的客户端 Client, 向远程的 Namenode 发起 RPC请求;
  2. Namenode 会视情况返回文件的部分或者全部 block 列表, 对于每个 block, Namenode 都会返回有该 block 拷贝的 DataNode 地址;
  3. 客户端 Client 会选取离客户端最近的 DataNode 来读取 block; 如果客户端本 身就是 DataNode,那么将从本地直接获取数据;
  4. 读取完当前 block 的数据后, 关闭当前的 DataNode 链接, 并为读取下一个 block 寻找最佳的 DataNode;
  5. 当读完列表 block 后, 且文件读取还没有结束, 客户端会继续向 Namenode 获 取下一批的 block 列表;
  6. 读取完一个 block 都会进行 checksum 验证, 如果读取 datanode 时出现错误, 客户端会通知 Namenode , 然后再从下一个拥有该 block 拷贝的 datanode 继续读。

11.请阐述HDFS在不发生故障的情况下写文件的过程。

  1. 使用 HDFS提供的客户端 Client, 向远程的 Namenode 发起 RPC请求
  2. Namenode 会检查要创建的文件是否已经存在, 创建者是否有权限进行操作, 成功则会为文件创建一个记录, 否则会让客户端抛出异常;
  3. 当客户端开始写入文件的时候, 客户端会将文件切分成多个 packets, 并在内 部以数据队列“ data queue( 数据队列) ”的形式管理这些 packets, 并向 Namenode 申请 blocks,获取用来存储 replicas 的合适的 datanode 列表, 列表的大小根据 Namenode 中 replication 的设定而定;
  4. 开始以 pipeline ( 管道) 的形式将 packet 写入所有的 replicas 中。 开发库把 packet 以流的方式写入第一个 datanode, 该 datanode 把该 packet 存储之后, 再将其 传递给在此 pipeline 中的下一个 datanode , 直到最后一个 datanode, 这种写数据的方 式呈流水线的形式。
  5. 最后一个 datanode 成功存储之后会返回一个 ack packet( 确认队列) , 在 pipeline 里传递至客户端, 在客户端的开发库内部维护着” ack queue”, 成功收到 datanode 返回的 ack packet 后会从” ack queue”移除相应的 packet。
  6. 如果传输过程中, 有某个 datanode 出现了故障, 那么当前的 pipeline 会被关 闭, 出现故障的 datanode 会从当前的 pipeline 中移除, 剩余的 block 会继续剩下的 datanode 中继续以 pipeline 的形式传输, 同时 Namenode 会分配一个新的 datanode, 保 持 replicas 设定的数量。
  7. 客户端完成数据的写入后, 会对数据流调用 close()方法, 关闭数据流;
  8. 只要写入了 dfs.replication.min 的复本数( 默认为 1),写操作就会成功, 并 且这个块可以在集群中异步复制, 直到达到其目标复本数 ( dfs. replication 的默认值 为 3),因为 namenode 已经知道文件由哪些块组成, 所以它在返回成功前只需要等待 数据块进行最小量的复制。

第四章

1. 试述在 Hadoop 体系架构中 HBase 与其他组成部分的相互关系。

HBase 利用 Hadoop MapReduce 来处理 HBase 中的海量数据,实现高 性能计算;利用 Zookeeper 作为协同服务,实现稳定服务和失败恢复;使用 HDFS 作为高可靠的底层存储, 利用廉价集群提供海量数据存储能力 ; Sqoop 为 HBase 的底层数据导入功能, Pig 和 Hive 为 HBase 提供了高层语言支持, HBase 是 BigTable 的开源实现。

2. 请阐述 HBase 和 BigTable 的底层技术的对应关系。

项目 BigTable HBase
文件系统 GFS HDFS
海量数据处理 MapReduce Hadoop MapReduce
协同服务管理 Chubby Zookeeper

3. 请阐述 HBase 和传统关系数据库的区别。

区别 传统数据库 HBase
数据类型 关系模型 列族数据模型
数据操作 插入、删除、更新、查询、 多表连接 插入、查询、删除、清空, 无法实现表与表之间关 联
存储模式 基于行模式存储,元组或 行会被连续地存储在磁盘中 基于列存储,每个列族都 由几个文件保存,不同列族的文件是分离的
数据索引 针对不同列构建复杂的 多个索引 只有一个行键索引
数据维护 用最新的当前值去替换 记录中原来的旧值 更新操作不会删除数据 旧的版本,而是生成一个 新的版本
可伸缩性 很难实现横向扩展,纵向 扩展的空间也比较有限 轻易地通过在集群中增 加或者减少硬件数量来 实现性能的伸缩

4. HBase 有哪些类型的访问接口?

HBase 提供了 Native Java API , HBase Shell , Thrift Gateway , REST GateWay , Pig , Hive 等访问接口。

5. 请以实例说明 HBase 数据模型。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zjRKNwio-1605786639694)(D:\firefoxdowload\图片\image-20201011115504000.png)]

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

  • 行键是唯一的,在一个表里只出现一次,否则就是在更新同一行,行键可以 是任意的字节数组。
  • 列族需要在创建表的时候就定义好,数量也不宜过多。列族名必须由可打印 字符组成,创建表的时候不需要定义好列。
  • 时间戳,默认由系统指定,用户也可以显示设置。使用不同的时间戳来区分不同的版本。

7. 请举个实例来阐述 HBase 的概念视图和物理视图的不同。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TtQRvqhY-1605786639696)(D:\firefoxdowload\图片\image-20201011115756744.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N58HeT7M-1605786639697)(D:\firefoxdowload\图片\image-20201011115815500.png)]

在 HBase 的概念视图中,一个表可以视为一个稀疏、多维的映射关系。 在物理视图中,一个表会按照属于同一列族的数据保存在一起。

8. 试述 HBase 各功能组件及其作用。

  • 库函数:链接到每个客户端;
  • 一个 Master 主服务器:主服务器 Master 主要负责表和 Region 的管理工作;
  • 许多个 Region 服务器: Region 服务器是 HBase 中最核心的模块,负责维护分配给自己的 Region ,并响应用户的读写请求。

9. 请阐述 HBase 的数据分区机制。

HBase 采用分区存储, 一个大的表会被分拆许多个 Region ,这些 Region 会被分发到不同的服务器上实现分布式存储。

10. HBase 中的分区是如何定位的。

通过构建的映射表的每个条目包含两项内容,一个是 Region标识符,另一 个是 Region 服务器标识,这个条目就标识 Region 和 Region 服务器之间的对应关系,从而就可以知道某个 Region 被保存在哪个 Region 服务器中。

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

层次 名称 作用
第一层 Zookeeper 文件 记录了 -ROOT-表的位置信息
第二层 -ROOT-表 记录了 .META.表的 Region 位置信息 -ROOT-表只能有一个Region。通过 -ROOT-表,就可以访 问.META.表中的数据
第三层 .META.表 记录了用户数据表的 Region 位置信息,.META.表可以有多个 Region,保存了 HBase中所有用户数据表的 Region 位置信息

12. 请阐述 HBase 的三层结构下,客户端是如何访问到数据的。

首先访问 Zookeeper ,获取-ROOT 表的位置信息,然后访问 -Root- 表, 获得.MATA. 表的信息,接着访问 .MATA. 表,找到所需的 Region 具体位于哪个 Region 服务器,最后才会到该 Region 服务器读取数据。

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

  • 客户端

    客户端包含访问 HBase 的接口,同时在缓存中维护着已经访问过的 Region 位置信息,用来加快后续数据访问过程 。

  • Zookeeper 服务器

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

  • Master

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

  • Region

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

14. 请阐述 Region 服务器向 HDFS 文件系统中读写数据的基本原理。

Region 服务器内部管理一系列 Region 对象和一个 HLog 文件,其中, HLog 是磁盘上面的记录文件, 它记录着所有的更新操作。每个 Region 对象又是由多 个 Store 组成的,每个 Store 对象了表中的一个列族的存储。 每个 Store 又包含 了 MemStore 和若干个 StoreFile ,其中, MemStore 是在内存中的缓存。

15. 试述 HStore 的工作原理。

每个 Store 对应了表中的一个列族的存储。每个 Store 包括一个 MenStore 缓 存和若干个 StoreFile 文件。 MenStore 是排序的内存缓冲区,当用户写入数据 时,系统首先把数据放入 MenStore 缓存,当 MemStore 缓存满时,就会刷新 到磁盘中的一个 StoreFile 文件中,当单个 StoreFile 文件大小超过一定阈值时, 就会触发文件分裂操作。

16. 试述 HLog 的工作原理。

HBase 系统为每个 Region 服务器配置了一个 HLog 文件,它是一种预 写式日志( Write Ahead Log ),用户更新数据必须首先写入日志后,才能写入 MemStore 缓存,并且,直到 MemStore 缓存内容对应的日志已经写入磁盘, 该缓存内容才能被刷写到磁盘。

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

  • 优点: 多个 Region 对象的更新操作所发生的日志修改,只需要不断把日志记录追加到单个日志文件中,不需要同时打开、写入到多个日志文件中。
  • 缺点:如果一个 Region 服务器发生故障, 为了恢复其上次的 Region 对象, 需要将 Region 服务器上的对象, 需要将 Region 服务器上的 HLog 按照其所属的 Region 对象进行拆分,然后分发到其他 Region 服务器上执行恢复操作。

18. 当一台 Region 服务器意外终止时, Master 如何发现这种意外终止情况?为了恢复这台发生意外的 Region 服务器上的 Region,Master 应该做出哪些处 理(包括如何使用 HLog 进行恢复 )?

  • Zookeeper 会实时监测每个 Region 服务器的状态, 当某个 Region 服务器 发生故障时, Zookeeper 会通知 Master 。

  • Master 首先会处理该故障 Region 服务器上面遗留的 HLog 文件,这个遗 留的 HLog 文件中包含了来自多个 Region 对象的日志记录。

  • 系统会根据每条日志记录所属的 Region 对象对 HLog 数据进行拆分,分别 放到相应 Region 对象的目录下,然后,再将失效的 Region 重新分配到可用的 Region 服务器中,并把与该 Region 对象相关的 HLog 日志记录也发送给相应 的 Region 服务器。

  • Region 服务器领取到分配给自己的 Region 对象以及与之相关的 HLog 日志记录以后,会重新做一遍日志记录中的各种操作, 把日志记录中的数据写入到 MemStore 缓存中,然后,刷新到磁盘的 StoreFile 文件中,完成数据恢复。

19. 请列举几个HBase的常用命令,并说明其使用方法。

create 创建表

list 列出HBase中的所有表

put 向表,行,列指定单元格添加数据

get 通过指定表明,行键,列名,时间戳,时间范围和版本号来获得相应单元格的值

scan 流览表的相关信息

第五章

1. 如何准确理解 NoSQL的含义?

NoSQL,not only SQL, 是一种不同于关系数据库的数据库管理系统设计方式, 是对非关系型数据库的一类统 称,它采用的数据模型并非传统关系数据库的关系模型,而是类似键 /值、列族、文档等非关系模型。

2. 试述关系数据库在哪些方面无法满族 Web2.0 应用的需求。

  • 无法满足海量数据的管理需求
  • 无法满足数据高并发需求
  • 无法满足高扩展性和高可用的需求

3. 请比较 NoSQL数据库和关系数据库的优缺点。

比较标准 RDBMS NoSQL 备注
数据库原理 完全支持 部分支持 RDBMS 有关系代数理论作为基础 NoSQL 没有统一的理论基础
数据规模 超大 RDBMS 很难实现横向扩展,纵向扩展的 空间也比较有限,性能会随着数据规模的 增大而降低 NoSQL 可以很容易通过添加更多设备来支持更大规模的数据
数据库模式 固定 灵活 RDBMS 需要定义 数 据库模式,严格遵守 数据定义和相关约束 条件 NoSQL 不存在数据库 模式,可以自由灵活 定义并存储各种不同 类型的数据
查询效率 可以实现高效的简单 查询,但是不具备高 度 结 构 化 查 询 等特性,复杂查询的性能 不尽人意 RDBMS 借助于索 引 机制可以实现快速查 询(包括记录查询和 范围查询) 很多 NoSQL数据库没 有面向复杂查询的索 引,虽然 NoSQL可以 使用 MapReduce 来加速查询,但是,在复杂查询方面的性能仍然不如RDBMS
一致性 强一致性 弱一致性 RDBMS 严格遵守事务 ACID模型,可以保证事务强一致性 很多NoSQL数据库放松了对事务 ACID 四 性的要求,而是遵守 BASE模型,只能保证最终一致性
数据完整性 容易实现 很难实现 任何一个 RDBMS 都可以很容易实现数据完整性,比如通过主键或者非空约束来实现实体完整性,通过 主键、外键来实现参照完整性,通过约束或者触发器来实现用 户自定义完整性但是,在 NoSQL数据库却无法实现
扩展性 一般 RDBMS 很难实现横向扩展,纵向扩展的空间也比较有限,NoSQL 在设计之初就充分考虑了横向扩展 的需求,可以很容易通过添加廉价设备实现扩展
可用性 很好 RDBMS 在任何时候都以保证数据一致性为优先目标,其次才是优化系统性能,随着数据规模的增大, RDBMS 为了保证严格的一致性,只能提供相对较弱的可用性大多数 NoSQL都能提供较高的可用性
标准化 RDBMS 已经标准 化 (SQL) NoSQL 还没有行业标 准,不同的 NoSQL数 据库都有自己的查询 语言,很难规范应用 程序接口 StoneBraker 认为:NoSQL 缺乏统一查询语言 , 将会拖慢NoSQL发展
技术支持 RDBMS 经过几十 年 的发展,已经非常成 熟,Oracle 等大型厂商都可以提供很好的技术支持 NoSQL 在技术支持方面仍然处于起步阶段,还不成熟,缺乏有力的技术支持
可维护性 复杂 复杂 RDBMS 需要专门的数据库管理员 (DBA) 维护 NoSQL 数据库虽然没有 DBMS 复杂,也难以维护

5. 试述 NoSQL数据库的四大类型

键值数据库、列族数据库、文档数据库和图数据库

6. 试述键值数据库、列族数据库、文档数据库和图数据库的适用场合和优缺点。

数据库 适用场合 优点 缺点
键值数据库 通过键而不是值来查询的业务 扩展性好,灵活性好,大量写操作时性能高 无法存储结构化信息,条件查询效率低
列族数据库 不需要ACID事务支持的情形 查找速度快,可扩展性强,容易进行分布式扩展,复杂性低 功能较少,大多不支持事务强一致性
文档数据库 只在相同的文档上添加事务 性能好(高并发),灵活性高,复杂性低, 数据结构灵活提供嵌入式文档功能,将经常查询的数 据存储在同一个文档中既可以根据键来构建索引,也可以根据内容构建索引 缺乏统一的查询语言
图形数据库 具有高度相互关联关系的数据 灵活性,支持复杂的图形算法,可用于构建复杂的关系图谱 复杂性高,只能支持一定的数据规模

7. 试述CAP理论的具体含义。

C(consistency):一致性,是指任何一个读操作之前都能读到之前完成的写操作的结果,也就是说在分布式环境中,所有节点在同一时间的数据时相同的。

A(availability):可用性,是指获取数据时可以在确定的时间内返回操作结果,保证每个请求不管是否成功都能返回操作结果

P(tolerance of network partition):分区容忍性,是指当网络出现分区时,分离的系统也能进行正常工作。也就是说,任意数据的丢失不会影响系统的运作。

8. 请举例说明不同产品在设计时是如何运用CAP理论的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qVvkyzjR-1605786639700)(D:\firefoxdowload\图片\image-20201118210617503.png)]

9. 试述数据库的 ACID四性的含义。

  • 原子性(atomicity):事务时数据库执行的基本单元,是物理的操作要么全部都执行,要么全部不执行。
  • 一致性(consistency):指在事务开始到结束之后,数据库的完整性约束没有被破坏。
  • 隔离性(isolation):多个并发事务之间要相互隔离。
  • 持久性(durability):事务完成以后,对于数据库所作的更改是永久性的。

10. 试述 BASE的具体含义

BASE的基本含义是基本可用( Basically Availble)、软状态( Soft-state )和最终一致性 (Eventual consistency )

11. 请解释软状态、无状态、硬状态的具体含义。

“软状态( soft-state )”是与“硬状态( hard-state )”相对应的一种提法。数据库保存的数据是“硬状态”时,可以保证数据一致性,即保证数据一直是正确的。 “软状态”是指状态可以有一段时间不同步,具有一定的滞后性。

12. 什么是最终一致性?

​ 最终一致性根据更新数据后各进程访问到数据的时间和方式的不同,又可以区分为:

(1)会话一致性:它把访问存储系统的进程放到会话( session)的上下文中,只要会话还存在,系统就保证“读己之所写”一致性。如果由于某些失败情形令会话终止,就要建立新的会话,而且系统保证不会延续到新的会话;

(2)单调写一致性:系统保证来自同一个进程的写操作顺序执行。系统必须保证这种程度的一致性,否则就非常难以编程了

(3)单调读一致性:如果进程已经看到过数据对象的某个值,那么任何后续访问都不会返回在那个值之前的值

(4)因果一致性:如果进程 A 通知进程 B 它已更新了一个数据项,那么进程 B 的后续访问将获得 A 写入的最新值。而与进程 A 无因果关系的进程 C的访问,仍然遵守一般的最终一致性规则

(5)“读己之所写”一致性:可以视为因果一致性的一个特例。当进程 A 自己执行一 个更新操作之后,它自己总是可以访问到更新过的值,绝不会看到旧值

13. 试述不一致性窗口的含义。

所有后续的访问都可以读取到操作OP写入的最新值。从 OP操作完成到后续访问可以最终读取到OP写入的最新值,这之间的时间间隔称为“不一致性窗口”。

14.最终一致性根据更新数据后各进程访问到数据的时间和方式的不同,又可以分为哪些不 同类型的一致性?

会话一致性、单调写一致性、单调写一致性、因果一致性和“读己之所写”一致性。

14.什么是 NewSQL数据库?

致性,否则就非常难以编程了

(3)单调读一致性:如果进程已经看到过数据对象的某个值,那么任何后续访问都不会返回在那个值之前的值

(4)因果一致性:如果进程 A 通知进程 B 它已更新了一个数据项,那么进程 B 的后续访问将获得 A 写入的最新值。而与进程 A 无因果关系的进程 C的访问,仍然遵守一般的最终一致性规则

(5)“读己之所写”一致性:可以视为因果一致性的一个特例。当进程 A 自己执行一 个更新操作之后,它自己总是可以访问到更新过的值,绝不会看到旧值

13. 试述不一致性窗口的含义。

所有后续的访问都可以读取到操作OP写入的最新值。从 OP操作完成到后续访问可以最终读取到OP写入的最新值,这之间的时间间隔称为“不一致性窗口”。

14.最终一致性根据更新数据后各进程访问到数据的时间和方式的不同,又可以分为哪些不 同类型的一致性?

会话一致性、单调写一致性、单调写一致性、因果一致性和“读己之所写”一致性。

14.什么是 NewSQL数据库?

NewSQL是对各种新的可扩展、 高性能数据库的简称, 这类数据库不仅具有 NoSQL对海量数据的存储管理能力,还保持了传统数据库支持 ACID和 SQL特性。

第六章

1. 试述云数据库的概念。

云数据库是部署和虚拟化在云计算环境中的数据库。云数据库是在云计算的大背景下发展起来的一种新兴的共享基础架构的方法、它极大地增强了数据库的存储能力, 消除了人员、 硬件、软件的重复配置,让软、硬件升级变得更加容易,同时,也虚拟化了许多后端功能。 云数据库具有高可扩展性、高可用性、采用多租形式和支持资源有效分发等特点。

2. 与传统软件使用方式相比,云计算这种模式具有哪些明显的优势?

项目 传统方式 云计算方式
使用方式 本地安装本地使用 软件运行在云计算厂商的服务器上,在任何有网络接入的地方的都可以随时使用软件
付费方式 需要一次性支付较大的初期投入成本,包括建设机房、配置硬件、购买各种软件 零成本投入就可以立即获得所需的IT资源
维护成本 需要自己花钱聘请专业技术人员维护 零成本,所有维护工作由云计算厂商负责
获得IT资源的速度 需要耗费较长时间建设机房、购买和安装调试设备系统 随时可用,购买服务后立即可用
共享方式 自己建设,自给自足 云计算厂商建设好云计算服务平台后,同时为众多用户提供服务
维修速度 出现病毒、系统崩费等问题时,需要自己聘请IT人员维护,很多普通企业的IT人员技术能力有限,碰到一些问题甚至需要寻找外援,通常不能立即解决问题 出现任何系统问题时,云计算厂商都会凭借其专业化团队给出及时响应,确保云服的正常使用
资源利用率 利用率较低,投入大量资金建设的IT系统,往往只供企业自己使用,当企业不需要那么多IT资源时,就会产生资源浪费 利用率较高,每天都可以为大量用户提供服务;当存在闲置资源时,云计算管理系统会自动关闭和退出多余资源;当需要增加资源时,又会自动启动和加人相关资源
用户搬迁时的成本 当企业椒家时,原来的机房设施就要作度需要在新地方重新投入较大成本建设机房 企业无论搬迁到哪里,都可以通过网络零成本立即获得云计算服务, 因为资源在云端, 不在用户端,用户搬迁不会影响到IT资源的分布
资源可拓展性 企业自己建设的IT基础设施的服务能力通常是有上限的, 当企业业务量突然增加时,现有的基础设施无法立即满足需求,需要花费时间和金钱购买和安装新设备;业务高峰过去时,多余的设备就会闲置,造成资源浪费 云计算厂商可以为企业提供近无限的 IT,用户想用多少都可以立即获得,当用户不使用时,只需退订多余资源,不存在任何资源浪费问题

3. 云数据库有哪些特性?

1)动态可扩展 2)高可用性 3)较低的使用代价 4)易用性 5)高性能 6)免维护 7)安全

4. 试述云数据库的影响。

在大数据时代,每个企业几乎每天都在不断产生大量的数据。企业类型不同,对于存储的需求也千差万别,而云数据库可以很好地满足不同企业的个性化存储需求。 首先,云数据库可以满足大企业的海量数据存储需求。云数据库在当前数据爆炸的大数据时代具有广阔的应用前景。 传统的关系数据库难以水平扩展, 相本无法存储如此海量的数据。因此,具有高可扩展性的云数据库就成为企业海量数据存储管理的很好选择。 其次,云数据库可以满足中小企业的低成本数据存储需求。中小企业在 IT 基础设施方 面的投人比较有限, 非常渴望从第三方方便、 快捷、廉价地获得数据库服务。云数据库采用 多租户方式同时为多个用户提供服务, 降低了单个用户的使用成本, 而且用户使用云数据库服务通常按需付费, 不会浪费资源造成额外支出, 因此, 云数据库使用成本很低, 对于中小 企业而言可以大大降低企业的信息化门槛, 让企业在付出较低成本的同时, 获得优质的专业 级数据库服务 ,从而有效提升企业信息化水平。 另外,云数据库可以满足企业动态变化的数据存储需求。 企业在不同时期需要存储的数 据量是不断变化的, 有时增加, 有时减少。在小规模应用的情况下,系统负载的变化可以由 系统空闲的多余资源来处理 ,但是,在大规模应用的情况下,传统的关系数据库由于其伸缩性较差, 不仅无法满足应用需求, 而且会给企业带来高昂的存储成本和管理开销。 而云数据 库的良好伸缩性,可以让企业在需求增加时立即获得数据库能力的提升 ,在需求减少时立即释放多余的数据库能力 ,较好地满足企业的动态数据存储需求。

5. 举例说明运输局厂商及其代表性产品。

云数据库供应商主要分为三类。

  1. 传统的数据库厂商,如 Teradata、Oracle、IBM DB2 和 Microsoft SQL Server 等。

  2. 涉足数据库市场的云供应商,如 Amazon、Google.Yahoo!、阿里、百度、腾讯等。

  3. 新兴厂商,如 IVertica.LongJump 和 EnterpriseDB 等。

6. 试述 Microsoft SQL Azure 的体系架构。

SQL Azure 的体系架构中包含了一个虚拟机簇,可以根据工 作负载的变化 ,动态增加或减少虚拟机的数量。每台虚拟机 SQL Server VM ( Virtual Machine ) 安装了 SQL Server2008 数据库管理系统,以关系模型存储 数据。通常 ,-一个数据库会被分散存储到 3~5 台 SQL ServerVM 中。每台 SQL Server VM 同时安装了 SQL Azure Fabric 和 SQL Azure 管理服务 ,后者负责数 库的数据复写工作, 以保障 SQL Azure 的基本高可用性要求。不同 SQL Server VM 内的 SQLAzure Fabric 和管理服务之间会彼此交换监控信息,以保证整体服务的可监控性。

7. 试述 UMP 系统的功能。

UMP 系统是构建在一个大的集群之上的,通过多个组件的协同作业,整个系统实现了对用户透明的容灾、读写分离、分库分表、资源管理、资源调度、资源隔离和数据安全功 能。

  • 容灾:云数据库必须向用户提供一直可用的数据库连接, 当 MySQL 实例发生故障时, 系统必须自 动执行故障恢复, 所有故障处理过程对于用户而言是透明的, 用户不会感知到后台发生的一 切。 为了实现容灾, UMP 系统会为每个用户创建两个 MySQL 实例,一个是主库,一个是从库, 而且,这两个 MySQL 实例之间互相把对方设置为备份机,任意一个 MySQL 实例上面发生的 更新都会复制到对方。同时, Proxy 服务器可以保证只向主库写人数据。
  • 读写分离:由于每个用户都有两个 MySQL实例,即主库和从库,因此,可以充分利用主从库实现用户读写操作的分离,实现负载均衡。 UMP 系统实现了对于用户透明的读写分离功能,当整个功能被开启时,负责向用户提供访问 MySQL 数据库服务的 Proxy 服务器,就会对用户发起的 SQL 语句进行解析,如果属于写操作 ,就直接发送到主库,如果是读操作,就会被均衡地发送到主库和从库上执行。
  • 分库分表:UMP 支持对用户透明的分库分表 (Shard/Horizontal Partition) 。但是,用户在创建账号的时候 需要指定类型为多实例,并且设置实例的个数,系统会根据用户设置来创建多组 MySQL实例。除此以外, 用户还需要自己设定分库分表规则,如需要确定分区字段,也就是根据哪个字段进行分库分表,还要确定分区字段里的值如何映射到不同的 MySQL 实例上。
  • 资源管理:UMP 系统采用资源池机制来管理数据库服务器上的 CPU、内存、磁盘等计算资源,所有的计算资源都放在资源池内进行统一分配,资源池是为 MySQL 实例分配资源的基本单位。整个集群中的所有服务器会根据其机型、 所在机房等因素被划分为多个资源池, 每台服务器会 被加人到相应的资源池。在资源池划分的基础上, UMP 还在每台服务器内部采用 Cgroup 将 资源进一步地细化, 从而可以限制每个进程组使用资源的上限, 同时保证进程组之间相互隔离。
  • 资源调度:UMP 系统中有 3 种规格的用户,分别是数据量和流量比较小的用户、中等规模用户以及需要分库分表的用户。多个小规模用户可以共享同一个 MySQL 实例。对于中等规模的用户, 每个用户独占个一个MySQL 实例。用户可以根据自己的需求来调整内存空间和磁盘空间,如果 用户需要更多的资源, 就可以迁移到资源有空闲或者具有更高配置的服务器上对于分库分表 的用户,会占有多个独立的 MySQL 实例,这些实例既可以共存在同一台物理机上,也可以 每个实例独占一台物理机。 UMP 通过 MySQL 实例的迁移来实现资源调度。借助于阿里集团中间件团队开发的愚公系统, UMP 可以实现在不停机的情况下动态扩容、缩容和迁移。
  • 资源隔离:当多个用户共享同一个 MySQL 实例或者多个 MySQL 实例共存在同一个物理机上时,为了 保护用户应用和数据的安全, 必须实现资源隔离, 否则, 某个用户过多消耗系统资源会严重 影响到其他用户的操作性能。
  • 数据安全:数据安全是让用户放心使用云数据库产品的关键, 尤其是企业用户, 数据库中存放了很 多业务数据,有些属于商业机密,一旦泄露,会给企业造成损失。 UMP 系统设计了多种机 制来保证数据安全。 1) SSL 数据库连接。 2) 数据访问 IP 白名单。 3) 记录用户操作日志。 4) SQL拦截。

8. 试述 UMP 系统的组件及其具体作用。

  • Controller 服务器:向 UMP 集群提供各种管理服务,实现集群成员管 理、元数据存储、 MySQL 实例管理、故障恢复、备份、迁移、扩容等功能。
  • Web 控制台:向用户提供系统管理界面。
  • Proxy 服务器:向用户提供访问 MySQL 数据库的服务; 除了数据路由的 基本功能外, Proxy 服务器中还实现了屏蔽 MySQL 实例故障、读写分离、分库 分表、资源隔离、记录用户访问日志等。
  • Agent 服务器:管理每台物理机上的 MySQL 实例,执行主从切换、创 建、删除、备份、迁移等操作,同时还负责收集和分析 MySQL 进程的统计信息、 慢查询日志和 bin-log 。
  • 日志分析服务器:存储和分析 Proxy 服务器传入的用户访问日志,并支 持实时查询一段时间内的慢日志和统计报表。
  • 信息统计服务器: 定期将采集到的用户的连接数、 QPS 数值以及 MySQL 实例的进程状态用 RRDtool 进行统计。
  • 愚公系统:是一个全量复制结合 bin-log 分析进行增量复制的工具,可 以实现在不停机的情况下动态扩容、缩容和迁移。

9. 试述 UMP 系统实现主从备份的方法。

UMP 系统会为用户创建两个 MySQL 实例,一个是主库,一个是从库,且 这两个 MySQL 实例之间相互把对方设置为备份机,任何一个 MySQL 实例上面 发生的更新都会复制到对方。 一旦主机宕机,Controller 服务器会启动主从切换, 修改映射关系;宕机后的主库在恢复处理后会再次上线,并从从库中复制更新, 直到更新到完全一致状态的时候, Controller 服务器会再次发起主从切换操作。

10. 试述 UMP 系统读写分离的实现方法。

UMP 系统实现了对于用户透明的读写分离功能,当整个功能被开启时,负责向用户提供访问 MySQL 数据库服务的 Proxy 服务器,就会对用户发起的 SQL 语句进行解析,如果属于写操作 ,就直接发送到主库,如果是读操作,就会 被均衡地发送到主库和从库上执行。

11.UMP 系统采用哪两种方式实现资源隔离 ?

  • 用 Group 限制 MySQL 进程资源;
  • 在 Proxy 服务器端限制 QPS。

12. 试述 UMP 系统中的 3 种规格用户。

系统内部划分为 3 种规格的用户, 分别是数据量和流量比较小的用户、 中等 规模用户以及需要分库分表的用户。 多个小规模用户可以共享同一个 MySQL 实 例,中等规模用户独占一个 MySQL 实例,需要分库分表的用户的多个 MySQL 实例共享同一个物理机,通过这些方式实现了资源的虚拟化,降低了整体成本。 UMP 通过“用 Cgroup 限制 MySQL 进程。

13. UMP 系统是如何保障数据安全的 ?

  1. SSL 数据库连接。 SSL (Secure Sockets Layer) 是为网络通信提供安全及数据完整性的一 种安全协议,它在传输层对网络连接进行加密。 Proxy 服务器实现了完整的 MySQL 客 户端服务器协议,可以与客户端之间建立 SSL 数据库连接。
  2. 数据访问 IP 白名单。可以把允许访问云数据库的 IP 地址放入 “白名单 ”,只有白名单内 的 IP 地址才能访问,其他 IP 地址的访问都会被拒绝,从而进一步保证账户安全。
  3. 记录用户操作日志。 用户的所有操作记录都会被记录到日志分析服务器,通过检查用 户操作记录,可以发现隐藏的安全漏洞。
  4. SQL拦截。 Proxy 服务器可以根据要求拦截多种类型的 SQL 语句,比如全表扫描语句 “select *”。

13. 简述阿里云 RDS的主要优势。

RDS 是阿里云提供的关系型数据库服务 ,它将直接运行于物理服务器上的数 据库实例租给用户, 是专业管理、高可靠的云端数据库服务。 用户可以通过 Web 或 API 的方式,在几分钟内开通完全兼容 MySQL 或 SQL Server 的数据库实例。 RDS由专业数据库管理团队维护, 还可以为用户提供数据备份、 数据恢复、扩展 升级等管理功能,相对于用户自建数据库而言, RDS 具有专业、高可靠、高性能、 灵活易用等优点, 能够帮助用户解决费时费力的数据库管理任务, 让用户将更多 的时间聚焦在核心业务上。 RDS 适用于各行业数据库应用,如 SaaS 应用、电子 商务网站、商家后台应用、社区网站、手机 APP 以及游戏类应用等。 RDS 具有 安全稳定、数据可靠、自动备份、管理透明、性能卓越,灵活扩容等优点,可以提供专业的数据库管理平台、专业的数据库优化建议以及完善的监控体系。

15. 简述 RDS 中实例与数据库的概念。

RDS实例或简称 “实例 ”,是用户购买 RDS服务的基本单位。在实例中可以创建多个数据库,可以使用常见的数据库客户端连接、管理及使用数据库。可以通过 RDS管理控 制台或 OPEN API来创建、修改和删除数据库。各实例之间相互独立、资源隔离,相互之间不存在 CPU、内存、 IOPS等抢占问题。但是,同一实例中的不同数据库之间是资源共享的。 每个实例拥有其自己的特性,如数据库类型、版本等,系统有相应的参数来控制实例行为。 用户所购买 RDS实例的性能,取决于购买 RDS实例时所选择的配置,可供用户选择的硬件配置项为内存和磁盘容量。 RDS数据库或简称 “数据库 ”,是用户在一个实例下创建的逻辑单元,一个实例可以创建多个数据库,在实例内数据库命名唯一,所有数据库都会共享该实例下的资源,如 CPU、内 存、磁盘容量等。 RDS不支持使用标准的 SQL 语句或客户端工具创建数据库,必须使用 OPEN API或 RDS管理控制台进行操作。

16. 列举连接 RDS for MySQL 数据库的 4 种方法。

方法 1: 使用客户端 MySQL-Front 访问。使用客户端 MySQL-Front,在连接 Host 框中 输人数据实例链接地址、端口 (默认 3306)、数据库用户名和数据库密码后,单击 “确定 ”按钮 即可。

方法 2: 使用数据库管理 T 具 Navicat MySQL。 Navicat_MySQL 是一套专为 MySQL 设计的强 大的数据库管理及开发工具,可以在连接输人框中输人数据实例地址、端口 (默认 3306 )、 数据库用户名和数据库密码后,单击 “确定 ”按钮即可。

方法 3: 使用 MySQL 命令登录。 用户安装 MySQL 客户端后, 可进人命令行方式连接数据库。 命令格式如下。 mysql -u user_name -h yuqianli.mysql.rds.aliyuncs.com -P3306 -pxxxx 其中, -u 指定的是用户名, -h 指定的是主机名, -P指定的是端口, -p 指定的是密码。

方法 4: 使用阿里云控制台 iDB Cloud 访问。阿里云控制台 iDB Cloud 的页面如图 6-7 所示, RDS 连接地址以及端口不需要再输人, 只需在 “用户名 ”中输人数据库的账号 ,在“密码 ”栏中输 人数据库账号的密码,便可以登录 RDS进行数据操作了。

第七章

1. 试述MapReduce和Hadoop的关系。

MapRuduce是Hadoop的一个并行编程模型组件,属于Hadoop重要的组成部分,并且可以和Hadoop的其他组件相互合作完成任务。

2. MapReduce 是处理大数据的有力工具,但不是每个任务都可以使用 MapReduce 来进行处理。试述适合用 MapReduce 来处理的任务或者数据集需满足怎样的要求。

适合用 MapReduce 来处理的数据集,需要满足一个前提条件 : 待处理的数据集可以分解成许多小的数据集, 而且每一个小数据集都可以完全并 行地进行处理。

3. MapReduce 模型采用 Master(JobTracker)-Slave(TaskTracker) 结构,试描述 JobTracker 和 TaskTracker 的功能。

JobTracker运行在master节点上,负责作业任务的调度,监控任务和作业的执行情况,并重新调度执行失败的任务。

TasktTracker运行在slave节点上,负责执行JobTracker调度给它的任务。

4. TaskTracker 出现故障会有什么影响 ?该故障是如何处理的 ?

很不幸,JobTracker 存在单点故障,一旦出现故障,整个集群就不可用。这个是1.0里面出现的问题,在2.0里面这个问题已经得到了解决。 不过大家放心,即使在1.0中,MapReduce也不会经常出现故障。它可能一年也就是出现几次故障,出现故障之后,你重启一下,再把作业重新提交就可以了,它不会像HDFS那样出现数据的丢失。 因为 MapReduce 是一个计算框架,计算过程是可以重现的,即使某个服务挂掉了,你重启一下服务,然后把作业重新提交,也是不会影响你的业务的。

5. MapReduce 计算模型的核心是 Map 函数和 Reduce 函数,试述这两个函数各自的输入、输出以及处理过程。

函数 输入 输出 处理过程
Map List() 将输入的小数据集解析成一批键值对,输入map函数里进行处理
Reduce 将具有相同键的键值对以某种方式组合起来,输出处理后的键值对

6. 试述MapReduce的执行流程。

  • map阶段
    1. 把输入目录下的文件按照一定的标准逐个进行逻辑切片。默认情况下分片大小等于数据块的大小。每一个切片由一个MapTask处理。
    2. 对切片中的数据按照一定的规则解析成键值对。默认规则是把每一行文本解析成键值对。key是每一行文本的起始位置(单位是字节),value是本行的文本内容(TextInputFormat)。
    3. 调用Mapper类中的map方法。上阶段中每解析出来的一个键值对,调用一次map方法。每次调用map方法会输出0个或多个键值对。
    4. 按照一定的规则对map输出的键值对进行分区。分区的数量就是reduce任务的数量。
    5. 对每个分区中的键值对进行排序
    6. 对每个分区中的键值对进行可能的合并操作
    7. 将上一阶段输出的键值对进行一个归并操作。就是将key相同的键值对的值合并为一个valueList。
  • reduce阶段
    1. reduce任务会从不同map端机器领回属于自己处理的那部分数据。
    2. 对领回来的数据进行归并为一个大的数据。
    3. 对数据调用reduce方法,输出结果给outputformat模块,最后写入到hdfs中。

7.Shuffle是MapReduce的工作流程的核心,也被称为奇迹发生的地方,试分析Shuffle过程的作用。

shuffle就是对map任务的输出结果进行分区、排序、合并等处理并交给reduce任务的过程。

8. 分别描述Map端和Reduce端的shuffle过程。

  • Map端Shuffle
    1. map端的输出结果首先被写入缓存,当缓存满了以后,就启动溢写操作,把缓存中的数据写入到磁盘文件中。
    2. 当启动溢写操作之前,要对缓存中的数据进行分区,然后对每个分区的数据进行排序==(sort)和可能的合并(combine)==,之后再写入磁盘中。
    3. 随着map任务的进行,会在磁盘中生成多个溢写文件。在map任务全部完成之后,这些溢写文件会被==归并(merge)==为一个大的磁盘文件,然后通知相应的reduce任务来领取属于自己处理的数据。
  • Reduce端Shuffle
    1. reduce任务会从来自不同map端机器领回属于自己所要处理的分区的数据
    2. 然后对数据进行归并交给reduce处理。

9. MapReduce 中有这样 一个原则 :移动计算比移动数据更经济。 试述什么是 本地计算,并分析为何要采用本地计算。

本地计算:在一个集群中,map程序尽量在就近的hdfs数据节点上进行运行,可以避免大规模数据移动带来的网络传输开销。

10. 试说明一个 MapReduce 程序在运行期间,所启动的 Map 任务数量和 Reduce 任务数量各是由什么因素决定的。

map任务数量取决于map作业的大小即数据量的大小。

reduce任务数量取决于map任务输出结果中key的数量。

11. 是否所有的 MapReduce 程序都需要经过 Map 和 Reduce 这两个过程 ? 如果不是,请举例说明。

不是。对于关系的选择运算,只需要 Map 过程就能实现,对于关系 R 中的每个元组 t,检测是否是满足条件,如果满足条件,则输出键值对 ,也就是说,键和值都是 t。这时的 Reduce 函数就只是一个恒等式,对 输入不做任何变换就直接输出。

12. 试 分 析 为 何 采 用 Combiner 可 以减少数据 传输量 ? 是否所有的MapReduce程序都可以采用 Combiner? 为什么 ?

合并(combine)是指将那些具有相同键的键值对的值加起来,经过合并操作这些键值对就会变成一个键值对,减少了键值对的数量。

不过,并不是所有mapreduce程序都可以进行combiner,只有在不改变reduce任务最终计算结果的前提下,才能进行combine操作,一般在累加,求和场景下都可进行。

13. MapReduce 程序的输入文件、输出文件都存储在 HDFS 中,而在 Map 任务完成时的中间结果则存储在本地磁盘中。试分析中间结果存储在本地磁盘而不是 HDFS 上有何优缺点。

reduce任务一旦输出最终结果,就可将map任务生成的中间结果删除,存储在hdfs上有些小题大做,当任务在map将中间结果传送给reduce时失败,也方便了重新进行任务的恢复。

14. 早期版本的 HDFS,其默认块 ( Block) 大小为 64MB, 而较新的版本默认为 128MB, 采用较大的块具有什么影响和优缺点 ?

采用更大的块可以最小化寻址开销。

优点:

  1. 减少硬盘寻道时间(disk seek time)
  2. 减少Namenode内存消耗

缺点:

  1. 一般一个map任务会处理一个块的数据,如果数据过大,回到致map任务数量减少,从而使得map运行并行度降低,map阶段处理速度将变得缓慢。
  2. 系统需要重新启动,启动过程需要重新加载数据,数据块越大,数据加载时间越长,系统恢复过程越长。

15. 试画出使用 MapReduce 来对英语句子“ Whatever is worth doing is worth doing well" 进行单词统计的过程。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nrN4x1wh-1606559396824)(D:\firefoxdowload\图片\image-20201122230753868.png)]

16. 在基于 MapReduce 的单词统计中, MapReduce 是如何保证相同的单词数据会划分到同一个 reduce 上进行处理以保证结果的正确性 ?

map的输出结果溢写到磁盘中会根据key值进行分区,使得相同key的键值对保存在一个分区,并会对相同key的键值对进行归并,然后reduce任务会领取所有map端机器所要处理的分区的数据,此时同一个分区的键值对正是key值相同的键值对。

第八章

1. 试述在 Hadoop推出之后其优化与发展主要体现在哪两个方面。

组件 hadoop1.0的问题 hadoop2.0的改进
HDFS 单一名称节点,存在单点失效问题 设计了HDFSHA,提供名称节点热备份机制
单一命名空间,无法实现资源隔离 设计了HDFS联邦,管理多个命名空间
MapReduce 资源管理效率低 设计了新的资源管理框架YARN

2. 试述 HDFS1.0中只包含一个名称节点会带来哪些问题。

HDFS1.0采用单点名称节点的设计,不仅会带来单点故障问题,还存在可扩 展性、性能和隔离性等问题。

在可扩展性方面,名称节点把整个 HDFS文件系统中的元数据信息都保存在 自己的内存中, HDFS1.0中只有一个名称节点,不可以水平扩展,而单个名称节点的内存空间是由上限的,这限制了系统中数据块、文件和目录的数目。 在系统整体性能方面,整个 HDFS文件系统的性能会受限于单个名称节点的 吞吐量。 在隔离性方面,单个名称节点难以提供不同程序之间的隔离性,一个程序可能会影响会影响其他运行的程序。

3. 请描述 HDFS HA架构组成组件及其具体功能。

在一个典型的 HA 集群中,一般设置两个名称节点,其中一个名称节点处于 “活跃”状态,另一个处于“待命”状态。处于活跃状态的名称节点负责对外处 理所有客户端的请求, 而处于待命状态的名称节点则作为备用节点, 保存了足够多的系统元数据,当名称节点出现故障时提供快速回复能力也就是说,在 HDFS HA 中,处于待命状态的名称节点提供了“热备份”,一旦活跃名称节点出现故障,就可以立即切换到待命名称节点,不会影响到系统的正常对外服务。

4. 请分析 HDFS HA架构中数据节点如何和名称节点保持通信。

在 HDFS联邦中,所有名称节点会共享底层的数据节点存储资源。每个数据节点要向集群中所有的名称节点注册, 并周期性地向名称节点发送 “心跳”和块 信息,报告自己的状态,同时也会处理来自名称节点的指令。

5. 请阐述为什么需要HDFS联邦,即它能够解决什么问题。

可解决名称节点存在的一下问题

  1. HDFS集群可扩展性。各个名称节点分管不同的目录,使得一个集群可以扩展到更多节点。
  2. 性能更高效。多个名称节点分管不同的数据,而且都能对外提供服务,降维用户提供更高的读写吞吐率。
  3. 良好的隔离性。

6. 请描述 HDFS联邦中“块池”的概念,并分析为什么 HDFS联邦中的一个名称节点失效,也不会影响到与它相关的数据节点继续为其他名称节点提供服务。

HDFS联邦拥有多个独立的命名空间,其中,每一个命名空间管理属于自己的一组块,这些属于同一个命名空间的块构成一个“块池”。 每个数据节点会为多个块池提供块的存储。 可以看出,数据节点是一个物理逻辑, 而块池则属于逻辑概念, 一个块池是一组块的逻辑集合, 块池中的各个块实际上是存储在各个不同的数据节点中的。因此 HDFS联邦中的一个名称节点失效,也 不会影响到与它相关的数据节点继续为其他名称节点提供服务。

7. 请阐述 MapReduce1.0体系结构中存在的问题。

  1. 存在单点故障;

  2. JobTracker“大包大揽”导致任务过重;

  3. 容易出现内存溢出;

  4. 资源划分不合理。

8. 请描述 YARN架构中各组件的功能。

  • ResourceManager
    1. 处理客户端请求
    2. 启动/监控 ApplicationMaster
    3. 监控 NodeManager
    4. ④资源分配与调度
  • ApplicationMaster
    1. 为应用程序申请资源, 并分配给内部任务
    2. 任务调度、监控与容错
  • NodeManager
    1. 单个节点上的资源管理
    2. 处理来自 ResourceManager的命令
    3. 处理来自 ApplicationMaster 的命令

9. 请描述在 YARN框架中执行一个 MapReduce程序时,从提交到完成需要经历的具体步骤。

①用户编写客户端应用程序,向 YARN提交应用程序,提交的内容包括 ApplicationMaster 程序、启动 ApplicationMaster 的命令、用户程序等。 ②YARN中的 ResourceManager负责接收和处理来自客户端的请求。接到客户端 应用程序请求后,ResourceManager里面的调度器会为应用程序分配一个容器。 同时,ResourceManager的应用程序管理器会与该容器所在的 NodeManager 通信,为该应用程序在该容器中启动一个 ApplicationMaster ③ApplicationMaster 被创建后会首先向 ResourceManager注册,从而使得用户可 以通过 ResourceManager来直接查看应用程序的运行状态 ④ApplicationMaster 采用轮询的方式通过 RPC协议向 ResourceManager申请资 源。

⑤ResourceManager以“容器”的形式向提出申请的 ApplicationMaster 分配资源, 一旦 ApplicationMaster 申请到资源后,就会与该容器所在的 NodeManager 进行 通信,要求它启动任务。

⑥当 ApplicationMaster 要求容器启动任务时, 它会为任务设置好运行环境 (包括 环境变量、 JAR包、二进制程序等),然后将任务启动命令写到一个脚本中,最 后通过在容器中运行该脚本来启动任务。

⑦各个任务通过某个 RPC协议向 ApplicationMaster 汇报自己的状态和进度,让 ApplicationMaster 可以随时掌握各个任务的运行状态, 从而可以在任务失败时重 启任务。

⑧应用程序运行完成后, ApplicationMaster 向 ResourceManager的应用程序管理 器注销并关闭自己。若 ApplicationMaster 因故失败, ResourceManager中的应用程序管理器会监测到失败的情形,然后将其重新启动,直到所有任务执行完毕。

10. 请对 YARN和 MapReduce1.0框架进行优劣势对比分析。

  1. 大大减少了承担中心服务功能的 ResourceManager的资源消耗。 MapReduce1.0中的 JobTracker需要同时承担资源管理、任务调度和任务监控等 三大功能,而 YARN中的 ResourceManager只需要负责资源管理,需要消耗大量 资源的任务调度和监控重启工作则交由 ApplicationMaster 来完成。由于每个作业 都有与之关联的独立的 ApplicationMaster,所以,系统中存在多个作业时,就会 同时存在多个 ApplicationMaster,这就实现了监控任务的分布化,不再像 MapReduce1.0那样监控任务只集中在一个 JobTracker上。
  2. MapReduce1.0既是一个计算框架, 又是一个资源管理调度框架, 但是只能 支持 MapReduce编程模型。而 YARN则是一个纯粹的资源调度管理框架,在它 上面可以运行包括 MapReduce在内的不同类型的计算框架,默认类型是 MapReduce。因为, YARN中的 ApplicationMaster 是可变更的,针对不同的计算 框架,用户可以采用任何编程语言自己编写服务于该计算框架的 ApplicationMaster。比如,可以编写一个面向 MapReduce计算框架的 ApplicationMaster,从而使得 MapReduce计算框架可以运行在 YARN框架之上。 同理,还可以编写面向 Spark、Storm 等计算框架的 ApplicationMaster,从而使得 Spark、Storm 等计算框架也可以运行在 YARN框架之上。
  3. YARN中的资源管理比 MapReduce1.0更加高效。 YARN采用容器为单位进 行资源管理和分配,而不是以槽为单位,避免了 MapReduce1.0中槽的闲置浪费 情况,大大提高了资源的利用率。

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

①Pig是 Hadoop 生态系统的一个组件, 提供了类似 SQL的 Pig Latin语言(包 含 Filter、GroupBy、Join、OrderBy等操作,同时也支持用户自定义函数),允 许用户通过编写简单的脚本来实现复杂的数据分析,而不需要编写复杂的 MapReduce应用程序, Pig会自动把用户编写的脚本转换成 MapReduce作业在 Hadoop 集群上运行,而且具备对生成的 MapReduce程序进行自动优化的功能, 所以用户在编写 Pig程序的时候,不需要关心程序的运行效率,这就大大减少了 用户编程时间。

②Tez是 Apache开源的支持 DAG作业的计算框架,直接源于 MapReduce框架, 核心思想是将 Map 和 Reduce两个操作进一步进行拆分, 即 Map 被拆分成 Input、 Processor、Sort、Merge 和 Output,Reduce被拆分成 Input、Shuffle、Sort、Merge、 Processor和 Output 等,经过分解后的这些元操作可以进行自由任意组合产生新 的操作,经过一些控制程序组装后就可形成一个大的 DAG作业。 通过 DAG作业的方式运行 MapReduce作业,提供了程序运行的整体处理逻辑, 就可以去除工作流当中多余的 Map 阶段,减少不必要的操作,提升数据处理的 性能。Hortonworks 把 Tez应用到数据仓库 Hive 的优化中,使得性能提升了约 100 倍。

③Kafka是由 LinkedIn公司开发的一种高吞吐量的分布式发布订阅消息系统,用 户通过 Kafka系统可以发布大量的消息,同时也能实时订阅消费消息。 Kafka设计的初衷是构建一个可以处理海量日志、 用户行为和网站运营统计等的数据处理框架。

第九章

1、Spark是基于内存计算的大数据计算平台,试述 Spark的主要特点。

  1. 运行速度快
  2. 容易使用
  3. 通用性
  4. 运行模式多样

2、Spark的出现是为了解决 Hadoop MapReduce的不足,试列举 Hadoop MapReduce的几个缺陷,并说明 Spark具备哪些优点?

  1. Hadoop存在以下缺点:
    • 表达能力有限
    • 磁盘IO开销大
    • 延迟高
  2. Spark的优点:
    • Spark的计算模式不局限于Map操作和Reduce操作,还提供了多种数据集操作类型,编程模型比MapReduce更灵活
    • Spark提供内存计算,中间结果直接存放在内存,减少了磁盘IO开销
    • Spark基于DAG的任务调度机制,要优于MapReduce的迭代运行机制

3、美国加州大学伯克利分校提出的数据分析的软件栈 BDAS认为目前的大数据 处理可以分为哪三个类型?

  1. 复杂的批量数据处理:时间跨度通常在数十分钟到数小时之间;
  2. 基于历史数据的交互式查询:时间跨度通常在数十秒到数分钟之间;
  3. 基于实时数据流的数据处理:时间跨度通常在数百毫秒到数秒之间。

4、Spark已打造出结构一体化,功能多样化的大数据生态系统,试述 Spark的生态系统。

Spark的设计遵循“一个软件栈满足不同应用场景”的理念,逐渐形成一套完整生态系统, 既能够提供内存计算框架, 也可以支持SQL即席查询、实时流式计算、机器学习和图计算等。 Spark可以部署在资源管理器 YARN之上,提供一 站式的大数据解决方案。因此, Spark所提供的生态系统同时支持批处理、交互 式查询和流数据处理。

5、从 Hadoop+Storm架构转向 Spark架构可带来哪些好处?

  1. 实现一键式安装和配置、线程级别的任务监控和告警;
  2. 降低硬件集群、软件维护、任务监控和应用开发的难度;
  3. 便于做成统一的硬件、计算平台资源池

6、试述“ Spark on YARN”的概念。

Spark可以运行与 YARN之上,与 Hadoop 进行统一部署,即“Spark on YARN”, 其架构如图所示,资源管理和调度用 YARN,分布式存储则以用HDFS。

7、试述如下 Spark的几个主要概念: RDD、DAG、阶段、分区、窄依赖、宽依赖。

RDD:弹性分布式数据集

DAG:有向无环图,可以反映RDD之间的依赖关系。

阶段(stage):是作业调度的基本单位,包含一组任务,也称为任务集。

分区:一个RDD就是一个分布式对象集合,每个RDD可以分成多个分区,每个分区都是一个数据集片段。

窄依赖:父RDD的一个分区只被一个子RDD的一个分区所使用就是窄依赖。

宽依赖:父RDD的一个分区被一个子RDD的多个分区所使用的就是宽依赖。

8、Spark对RDD的操作主要分为行动( Action)和转换( Transformation)两种类型,两种类型操作的区别是什么?

答:行动( Action):在数据集上进行运算,返回计算值。

转换( Transformation):基于现有的数据集创建一个新的数据集。

第十章

1、试述流数据的概念

流数据,即数据以大量、快速、时变的流形式持续到达

2、试述流数据的特点

流数据具有如下特征:

  1. 数据快速持续到达,潜在大小也许是无穷无尽的
  2. 数据来源众多,格式复杂
  3. 数据量大,但是不十分关注存储,一旦经过处理,要么被丢弃,要么被归档存储
  4. 注重数据的整体价值,不过分关注个别数据数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序

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

数据的价值会随着时间的流逝而逐渐减小

4 、试述流计算的需求

对于一个流计算系统来说,它应达到如下需求:

高性能:处理大数据的基本要求,如每秒处理几十万条数据

海量式:支持 TB级甚至是 PB 级的数据规模

实时性:保证较低的延迟时间,达到秒级别,甚至是毫秒级别

分布式:支持大数据的基本架构,必须能够平滑扩展

易用性:能够快速进行开发和部署

可靠性:能可靠地处理流数据

5、试述MapReduce框架为何不适用于处理流数据。

MapReduce框架无法满足流计算实时响应的需求

6、将基于MapReduce的批量处理转化为小批量处理,每隔一个周期就启动一次MapReduce作业,通过这样的方式处理流数据是否可行?为什么?

不可行,mapreduce是面向静态数据就的批量处理的,内部各种实现机制都为批处理做了高度优化,不适用于处理持续到达的动态数据

7 、列举几个常见的流计算框架

目前有三类常见的流计算框架和平台:商业级的流计算平台、开源流计算框架、公司为支持自身业务开发的流计算框架

  1. 商业级: IBM InfoSphere Streams 和 IBM StreamBase

  2. 较为常见的是开源流计算框架,代表如下: Twitter Storm :免费、开源的分布式实时计算系统,可简单、高效、可靠地处理大 量的流数据 Yahoo! S4(Simple Scalable Streaming System):开源流计算平台,是通用的、分布 式的、可扩展的、分区容错的、可插拔的流式系统

  3. 公司为支持自身业务开发的流计算框架: Facebook Puma Dstream(百度) 银河流数据处理平台(淘宝)

8、试述流计算的一般处理流程。

  1. 实时采集
  2. 数据实时计算
  3. 实时查询

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

  • 传统的数据处理流程需要先采集数据并存储在关系数据库等数据库管理系统中,之后用户可以方便通过查询和数据管理系统交互,最终得到查询结果。
  • 流计算处理包括三个流程:数据实时采集、数据实时计算、数据实时查询服务。

10、试述数据实时采集系统的一般组成成分。

  • Agent:主动采集数据,并把数据推送到Collector部分
  • Collector:接收多个Agent的数据,并实现有序、可靠、高性能的转发
  • Store:存储Collector转发过来的数据

11、试述流计算系统与传统的数据处理系统对所处理数据的方式有何不同?

  • 处理的数据不同
  • 获取的结果不同

12、试述流计算适用于具备怎样特点的场景?

需要实时计算实时处理

13、试列举几个流计算的应用领域。

  • 实时分析
  • 实时交通

14、试述流计算为业务分析带来了怎样的改变。

通过流计算可以达到实时计算实时分析的效果,提高了业务分析的实时性,也带来了更高的分析价值。

15、除了实时交通和实时分析,试在列举一个适合采用流计算的应用场景,并描述流计算可带来怎样的改变。

气候模拟预测,运用流计算的计算框架,可以准确的捕捉到当前气候的变化,并且可以运用这些最新信息到预测未来气候的变化情况,为人们提供一个更加准确更加快速的天气预报。

16、试述Storm框架如何改变开发人员开发实时应用的方式。

开发人员可以基于开源流处理框架Storm,快速地搭建一套健壮、易用的实时流处理系统,并配合Hadoop等平台,就可以低成本地做出很多以前很难想象的实时产品。

17、为什么说Storm流处理框架开发实时应用,其开发成本较低。

以往开发人员在开发一个实时应用的时候,除了要关注处理逻辑,还要为实时数据的获取、传输、存储大伤脑筋;在Storm流处理框架下,Storm可以简单、高效、可靠处理流数据,并支持多种编程语言,且能方便地与数据库系统进行整合,从而开发强大的实时应用。

18、试述Twitter采用的分层数据处理框架。

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

19、试列举几个Storm框架的主要特点

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

20、试列举几个Storm框架的应用领域

实时分析、在线及其学习、持续学习、远程RPC、数据提取加载转换等。

21、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的传送。

22、试述Tuple的概念。

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

23、一个Topology由哪些组件组成

处理组件(Spout或Bolt)、组件之间的连接。

24、不同的Bolt之间如何传输Tuple。

通过序列化、套接字传输、反序列化完成。
//通过订阅Tuple的名称来接收相应的数据。

25、试列举几种Stream Groupings的方式。

随机分组、按照字段分组、广播发送、全局分组、不分组、直接分组。

26、试述MapReduce Job和Storm Topology的区别与联系。

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

27、Storm集群中的Master和Worker节点各自运行什么后台进程,这些进程又分别负责什么工作。

Master负责运行“Nimbus”的后台程序,负责在集群范围中分发代码、为Worker分配任务和检测故障。
Worker负责运行“Supervisor”的后台程序,负责监听分配给它所在机器的工作,即根据Nimbus分配的任务来决定启动或停止Worker进程。

28、试述Zookeeper在Storm框架中的作用.

Zookeeper作为分布式协调组件,负责一个Nimbus和多个Supervisor之间的所有协调工作。

29、Nimbus进程和Supervisor进程都是快速失败和无状态的,这样的设计有什么优点。

节点故障时可以进行快速恢复。

30、Nimbus进程和Supervisor进程意外终止后,重启时是否能恢复到终止之前的状态,为什么。

可以。这两个进程借助Zookeeper将状态信息存放在了Zookeeper中或本地磁盘中,当Nimbus进程或Supervisor进程终止后,一旦进程重启,他们将恢复之前的状态并继续工作。这种设计使Storm极其稳定。

31、试述Storm框架的工作流程。

1) 客户端提交Topology到Storm集群中;
2) Nimbus将分配给Supervisor的任务写入Zookeeper;
3) Supervisor从Zookeeper中获取所分配的任务,并启动Worker进程;
4) Worker进程执行具体的任务。

32、试述Storm框架实现单词统计的一般流程。

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

33、试述采用MapReduce框架进行单词统计与采用Storm框架进行单词统计有什么区别。

MapReduce框架使用了Map和Reduce的过程,将文本进行分割后,由Map进行各文本段的单词计数再传输到Reduce中计数;而Storm框架使用了Spout和Bolt的抽象,由一个Bolt进行单词分割,另一个Bolt进行计数。

34、Storm框架中单词统计Topology中定义了两个Bolt,试述两个Bolt各自完成的功能,以及中间结果如何在两个Bolt之间传输。

第一个Bolt用于单词的分割,该Bolt中的任务随机接收Spout发送的句子,并从接受的句子中提取出单词;
第二个Bolt接收第一个Bolt发送的Tuple进行处理,统计分割后的单词出现的次数。
Bolt通过订阅Tuple的名称来接收相应的数据,第一个Bolt声明其输出的Stream的名称为‘split’,第二个Bolt声明其订阅的Stream为‘split’。

35、在Storm的单词统计实例中,为何需要使用FieldGrouping()方法保证相同单词发送到同一个任务上进行处理。

将具有相同字段值的所有Tuple(即单词相同的Tuple)发送到同一个任务中进行统计,从而保证了统计的准确性。

第十一章

1、试述BSP模型中超步的3个组件及具体含义。

局部计算:每个参与的处理器都有自身的计算任务,它们只读取存储在本地内存中的值,不同处理器的计算任务都是异步并且独立的。
通信:处理器群相互交换数据,交换的形式是,由一方发起推送(Put)和获取(Get)操作
栅栏同步:当一个处理器遇到“路障”,会等其他所有处理器完成它们的计算步骤,每一次同步也是一个超步的完成和下一个超步的开始。

2、Pregel为什么选择一种纯消息传递模型。

1) 消息传递具有足够的表达能力;
2) 有助于提高系统整体性能;其消息模式采用同步和批量的方式传递消息,因此可以缓解远程读取的延迟。

3、给定一个连通图,请给出采用Pregel模型计算图中顶点最大值的计算过程。其中寻找最大值的函数可以通过继承Pregel中已定义好的一个基类——Vertex类实现,请实现该函数。

在Vertex的原有类中改写Compute()函数,在这里比较节点V及其连接的节点Vi的值,如果V的值小于周围连接节点Vi的值,其值修改为连接节点的最大值;如果大于等于,节点V将值传递出去后进入“非活跃”状态。经过层层迭代直至图中没有活跃节点为止。

4、请简述Aggregator的作用,并以具体Aggregator的例子做说明。

Aggregator提供了一种全局通信、监控和数据查看的机制。Aggregator的聚合功能,允许在整型和字符串类型上执行最大值、最小值、求和操作;还可以实现全局协同的功能,例如通过多个and条件来决定Combine()函数是否执行某些逻辑分支。

5、假设在同一个超步中,两个请求同时要求增加同一个顶点,但初始值不一样,Pregel中可能采用什么机制来解决该冲突。

1) 局部有序。执行一个超步时,先执行删除操作,先删除边,再删除顶点;再执行增加操作,先增加顶点,再增加边;
2) Handler。用户可以通过在Vertex自定义的Hander来实现一个更好的冲突处理方式,或者系统随机挑选一个请求进行处理。

6、简述Pregel的执行过程。

1) 选择集群中的多台机器执行图计算任务,一台机器作为Master,其他机器作为Worker。
2) Master把一个图分为多个分区,并把分区分配给多个Worker,一个Worker会收到一个或多个分区,每个Worker知道其他所有Worker所分配到的分区情况。
3) Master会把用户输入划分成多个部分,通常是基于文件边界进行划分。然后Master会为每个Worker分配用户输入的一部分。当所有的输入被加载后,图中的所有定点都会被标记为“活跃”状态。
4) Master向每个Worker发送指令,Worker收到指令后,开始运行一个超步。Worker会为自己管辖的每个分区分配一个线程,对于分区中的每个顶点,Worker会把来自上一个超步的、发送给这个顶点的消息传递给它,调用“活跃”状态顶点上的Compute()函数,在执行过程中,顶点可以对外发送消息。当所有工作完成后,Worker会通知Master,将“活跃”的顶点状态报告给Master。上述步骤不断重复直到所有顶点不再活跃且系统中不会有任何消息在传输,此时执行过程才会结束。
5) 计算过程结束后,Master会给所有的Worker发送指令,通知每个Worker对自己的计算结果进行持久化存储。

7、Master如何检测Worker是否失效?什么情况下确认Worker已失效?当Worker失效后,那些被分配到这些Worker的分区的当前状态信息就丢失了,这些分区丢失的信息可以恢复吗?如果可以的话,如何对这些信息进行恢复。

Master会周期性的向每个Worker发送ping消息,Worker收到ping消息后会向Master反馈消息。如果Master在指定时间间隔内没有收到某个Worker的反馈消息,就会把该Worker标记为失效。这些丢失的状态信息会直接丢失。Master会把失效Worker所分配到的分区重新分配到其他处于正常工作状态的Worker集合上,然后所有这些分区会从最近的某超步S开始时写出的检查点中,重新加载状态信息,再执行从超步S到超步S1的所有操作。

8、试述Master和Worker的作用。

Master:1)主要负责协调各个Worker执行任务,为每个Worker分配一个唯一的ID。2)Master维护着关于当前处于“有效”状态的所有Worker的各种信息。3)对Worker进行故障检测,并进行故障恢复。4)在内部运行了一个HTTP服务器来显示图计算过程的各种信息供用户在网页随时监控图计算执行的各个细节。
Worker:
对管辖分区的每个顶点进行遍历,并调用顶点上的Compute()函数。对于一个顶点需要发送消息的时候,Worker会判断目标顶点是否在自己机器上,如果在,直接将该消息放入与目标顶点相关的消息队列中,如果不在则将消息缓存到本地消息队列中,等到达到阈值的时候将这些消息批量异步发送到目标顶点所在在Worker上。

9、与其他串行算法(如Dijkstra或者Bellman-Ford算法)相比,本章中给出的Pregel系统的计算最短路径的算法有什么优势?

其优势是迭代次数少,即Pregel的迭代次数即开始顶点到最远的顶点(此时指经过的边最多)的边数。

10、最短路径问题问题是图论中最有名的问题之一,其中s-t最短路径在现实生活中应用最广泛,比如寻找最短驾驶路线等。请在Pregel模型下变成实现s-t最短路径问题。

该问题其实是单源到每个顶点的最短路径的一个变形,即仍然按照寻找全部最短路径的方法,结束迭代的条件改为,和顶点t相邻的所有节点都不活跃即可。

11、试述采用MapReduce和Pregel执行图计算的差异。

1) Pregel将PageRank处理对象看成连通图,而MapReduce看做键值树;
2) Pregel在顶点控制迭代次数和计算,MapReduce将计算批量化处理,并且按任务进行循环迭代控制。
3) 图算法如果用MapReduce实现,需要一系列的MapReduce调用。从一个阶段到下一个阶段时需要传递整个图的状态,会产生大量不必要的序列化和反序列化的开销。而Pregel使用超步简化了这个过程。

第十二章 数据可视化

1、试述数据可视化的概念。

数据可视化是指将大型数据集中的数据以图形图像的形式表示,并利用数据分析和开发工具发现其中未知信息的处理过程。

2、试述数据可视化的重要作用。

让数据以可视化形式呈现,让枯燥复杂的数据以简单友好的图表形式展现出来,可以让数据变得更加通俗易懂,有助于用户更加方便快捷地理解数据的深层次含义,有效参与复杂的数据分析过程,提高数据分析效率,改善数据分析效果。

3、可视化工具主要包含哪些类型?各自的代表产品有哪些。

入门级工具、信息图表工具、地图工具、时间线工具、高级分析工具。

4、请举出几个数据可视化的有趣案例。

全球黑客活动、互联网地图、编程语言之间的影响力关系图。

你可能感兴趣的:(大数据技术与应用课后习题)