• hadoop分布式系统复习题 大题


    1、请简单介绍Hadoop的HDFS,并简述其优缺点。

    HDFS,它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
    HDFS的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。
    HDFS优点:(高容错性、适合处理大数据、可构建在廉价机器上)
    ①高容错性:数据自动保存多个副本。它通过增加副本的形式,提高容错性。某一个副本丢失以后,它可以自动恢复。
    ②适合处理大数据:数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据;文件规模:能够处理百万规模以上的文件数量。 ③ 可构建在廉价机器上,通过多副本机制,提高可靠性。
    HDFS缺点:
    ① 不适合低延时数据访问,比如毫秒级的存储数据。② 无法高效的对大量小文件进行存储。存储大量小文件的话,它会占用NameNode大量的内存来存储文件目录和块信息。③ 不支持并发写入、文件随机修改。一个文件只能有一个写,不允许多个线程同时写。④ 仅支持数据append(追加),不支持文件的随机修改。

    2.请简述NameNode与SecondaryNameNode 的区别与联系。

    区别如下:① NameNode负责管理整个文件系统的元数据,所有的文件路径和数据块的存储信息都保存在NameNode(其实就是文件系统中所有目录和文件inode的序列化形式),除此之外,NameNode处理客户端读写请求,分发给DataNode去执行。
    ② SecondaryNameNode:并非NameNode的热备。SecondaryNameNode定期触发CheckPoint(服务),代替NameNode合并编辑日志EditLog和镜像文件Fsimage,从而减小EditLog的大小,减少NN启动时间。同时在合并期间,NameNode也可以对外提供写操作。而SecondaryNameNode至始至终不能对外提供写操作。
    联系如下:
    ① SecondaryNameNode中保存了一份和namenode一致的历史镜像文件(fsimage)和历史编辑日志(edits)。但是, NameNode还有一份正在使用的编辑日志edit_inporgress,这是SecondaryNameNode没有的。
    ②在主namenode发生故障时(假设没有及时备份数据),可以从SecondaryNameNode恢复历史的数据。

    3.MapReduce中指定的主要配置参数是什么?

    答:为了正常工作,MapReduce需要一些配置参数才能正确设置。如果未正确设置它们,则映射和缩小作业将无法正常运行。需要正确设置的配置参数如下:
    作业在HDFS中的输入位置;作业在HDFS中的输出位置;输入和输出格式;包含map和reduce函数的类;最后但并非最不重要的是用于reducer,mapper和driver类的.jar文件。

    4.请简述MapReduce的工作原理及其特点

    MapReduce是一种分布式计算模型,主要用于搜索领域,解决海量数据的计算问题。MapReduce有两个阶段组成:Map和Reduce。
    Map任务处理
    ①读取HDFS中的文件。每一行解析成一个。每一个键值对调用一次map函数;②重写map(),对第一步产生的进行处理,转换为新的输出;对输出的key、value进行分区;③对不同分区的数据,按照key进行排序、分组。相同key的value放到一个集合中;④对分组后的数据进行归约。
    Reduce任务处理
    ①多个map任务的输出,按照不同的分区,通过网络复制到不同的reduce节点上;②对多个map的输出进行合并、排序;③重写reduce函数实现自己的逻辑,对输入的key、value处理,转换成新的key、value输出;④把reduce的输出保存到文件中。
    Hadoop MapReduce 特点:
    易于编程。它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机器上运行。
    良好的扩展性。当你的计算资源不能得到满足时,可以通过简单的增加机器来扩展其计算能力。
    高容错性。 MapReduce 设计的初衷就是使程序能够部署在廉价的PC机器上, 这就要求它具有很高的容错性。
    能对PB级以上海量数据进行离线处理。适合离线处理而不适合实时处理。

    5.Hive 的元数据是什么?有哪些方式保存元数据,各有哪些优缺点。

    hive 元数据是管理hive的数据,所有的表名,库名,都是存储在元数据中的
    Derby 优点:配置简单,解压hive安装包 bin/hive 启动即可使用;
    缺点:不同路径启动hive,每一个hive拥有一套自己的元数据,无法共享。
    MySQL优点:配置较简单,本地模式下hive的配置中指定mysql的相关信息即可;
    缺点:每启动一次hive服务,都内置启动了一个metastore;在hive-site.xml中暴露的数据库的连接信息。

    6.hive 相对于 Oracle 来说有那些优点?

    存储,hive 存储在 hdfs 上,oracle 存储在本地文件系统。扩展性,hive 可以扩展到数千节点,oracle 理论上只可扩展到 100 台左右。单表存储,数据量大 hive 可以分区分桶,oracle 数据量大只能分表。hive开源免费。

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

    在这里插入图片描述

    8.YARN 是 Hadoop 集群的资源管理系统。请说明 ResourceManager 、 NodeManager Application Master 和 Containers 的作用,并论述基于 YARN 的 MapReduce 任务从客户端提交应用程序到程序结束的工作流程。

    ResourceManager内部包含了两个组件,分别是调度器和应用程序管理器。、
    Node Manager:运行在DataNode节点,负责启动Application和对资源的管理。
    ApplicationMaster的主要功能是资源的调度、监控、容错。
    Containers:Container通过ResourceManager分配。包括容器的CPU、内存等资源。
    Yarn工作流程
    (1)用户通过客户端Client向YARN提交应用程序Applicastion,提交的内容包含Application的必备信息,例如ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
    (2)YARN中的ResourceManager接收到客户端应用程序的请求后,ResourceManager中的调度器(Scheduler)会为应用程序分配一个容器,用于运行本次程序对应的ApplicationMaster。
    (3)ApplicationMaster被创建后,首先向ResourceManager注册信息,这样用户可以通过ResourceManager查看应用程序的运行状态。接下来的第(4)~(7)步是应用程序的具体执行步骤。
    (4)ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请资源。
    (5)ResourceManager向提出申请的ApplicationMaster分配资源。一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务。
    (6)NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
    (7)各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。
    (8)应用运行结束后,ApplicationMaster向ResourceManager注销自己,并关闭自己。如果ApplicationMaster因为发生故障导致任务失败,那么ResourceManager中的应用程序管理器会将其重新启动,直到所有任务执行完毕。

    9.HBase 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用 HBase 技术可在廉价 PC Server 上搭建起大规模结构化存储集群。请解释 HBase 中行键、列键和时间戳的概态,并通过实例来阐述 HBase 的概念视图和物理视图的区别于联系不同。

    ① 行键标识行。行键可以是任意字符串,行键保存为字节数组。
    ② 列族。HBase的基本的访问控制单元,需在表创建时就定义好。
    ③ 时间戳。每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引。
    数据概念视图:我们可以将一个表想象成一个大的映射关系,通过行健、行健+时间戳或行键+列(列族:列修饰符),就可以定位特定数据,HBase是稀疏存储数据的,因此某些列可以是空白的。
    在这里插入图片描述

    数据物理视图:虽然从概念视图来看每个表格是由很多行组成的,但是在物理存储上面,它是按照列来保存的。在概念视图上面有些列是空白的,这样的列实际上并不会被存储,当请求这些空白的单元格时,会返回null值。如果在查询的时候不提供时间戳,那么会返回距离现在最近的那一个版本的数据,因为在存储的时候,数据会按照时间戳来排序。
    在这里插入图片描述

  • 相关阅读:
    react router v6实现useHistory与自定义history设计思路
    linux用户管理,用户权限命令详解
    AcWing 258. 石头剪子布
    Web(二)html5基础-表格高级样式的设置
    【Linux】 ubuntu ffmpeg环境配置
    第四周学习报告
    Linux之系统文件
    concat() 、concat_ws()和group_concat()
    C++内存池
    基于PHP+MySQL班级信息发布和管理系统的设计与实现
  • 原文地址:https://blog.csdn.net/weixin_45962068/article/details/126373907