大数据hadoop简答题

参考:《大数据技术原理与应用》——林子雨 人民邮电出版社

分布式文件系统HDFS

  • 名称节点是什么?
      名称节点负责文件和目录的创建、删除和重命名等,同时管理着数据节点和文件块的映射关系,因此客户端只有访问名称节点才能找到请求的文件块所在位置。

  • 数据节点是什么?
      数据节点负责数据的存储和读取,存储时,由名称节点分配存储位置,客户端到相应的数据节点写入数据;读取时,客户端从名称节点获得文件块和数据节点的映射关系,从而到相应的位置访问文件块。数据节点也要根据名称节点的命令创建、删除数据块和冗余复制。

  • HDFS的局限性?
     1).不适合低延迟数据访问 HDFS是面向大规模数据批量处理的,采用流式数据读取,具有很高的数据吞吐率,因此意味着较高的延迟。
     2).无法高效存储大量小文件 HDFS每个块、文件和目录都占有固定的字节,如果有大量小文件,每个小文件对应一个块,将消耗很多时间找到一个文件块的位置,所需的内存也大大增加。
     3).不支持多用户写入及任意修改文件 HDFS只允许一个文件有一个写入者,而且只允许对文件执行追加操作,不能执行随机写操作。

  • 块是什么?有什么优点?
      HDFS中文件会拆成很多个块,每个块作为独立的单元存储。
     1).支持大规模文件存储 一个大文件可以拆分成若干个文件块,不同的文件块分发到不同的节点上。
     2).简化系统设计 因为文件块大小是固定的,容易计算出一个节点能存储多少文件块;其次方便了元数据的管理。
     3).适合数据备份 每个文件块可以冗余存储到多个节点上,提高系统的容错性和可用性。

  • 第二名称节点是什么?
      可以完成Editlog和FsImage文件的合并操作,减少Editlog文件的大小,缩短名称节点重启时间;其次,它可以作为名称节点的“检查点”,保存名称节点中的元数据信息。

  • HDFS体系结构的局限性(单一名称节点的局限性)?
     1).命名空间的限制 名称节点是保存在内存中的,它能够容纳的对象个数会受到内存空间大小的限制。
     2).性能的瓶颈 整个系统的吞吐量取决于单个名称节点的吞吐量。
     3).隔离问题 由于集群只有一个名称节点和一个命名空间,无法对不同的应用程序进行隔离。
     4).集群的可用性 当名称节点出故障,会导致整个集群不可用。

  • HDFS的冗余存储优点?
      HDFS采用多副本方式对数据进行冗余存储。
     1).加快数据传输速度 当多个客户端同时访问一个数据,可以让各个客户端分别从不同的数据块副本读取数据。
     2).容易检查数据错误 数据节点之间通过网络传输,采用多副本方式容易判断数据是否出错。
     3).保证数据的可靠性 即使某个节点出现故障,也不会造成数据丢失。

  • 介绍HDFS错误与恢复机制的三种情形
     1).名称节点出错 名称节点把元数据信息同步存储到其他文件系统;当名称节点宕机,利用第二名称节点进行系统恢复,但仍会丢失部分数据;结合前面两者,将远程的文件系统的元数据信息放到第二名称节点进行恢复,并作为名称节点使用。
     2).数据节点出错 每个数据节点会定期向名称节点发送“心跳信息”,当数据节点发生故障,名称节点无法收到它们的“心跳信息”,这些数据节点就会标记为“宕机”;若一些数据块的副本数量小于冗余因子,就会启动数据冗余复制,生成新的副本。
     3).数据出错 客户端收到数据后会进行md5和sha1校验,若错误客户端会请求到另一个数据节点读取文件块。

  • 试述分布式文件系统设计的需求
     1).透明性 包括访问透明性、位置透明性、性能和伸缩透明性。
     2).并发操作 客户端对文件的读写不应该影响其他客户端对同一个文件的读写。
     3).文件复制 一个文件可以拥有在不同位置的多个副本。
     4).硬件和操作系统的异构性 可以在不同的操作系统和计算机上实现同样的客户端和服务器端程序。
     5).可伸缩性 支持节点的动态加入或退出。
     6).容错 保证文件服务在服务器端或客户端出现问题时能正常使用。
     7).安全 保障系统的安全性。

  • 试述HDFS中的块和普通文件系统的块的区别?
      HDFS中块的大小设计上比普通文件系统的块要大,目的是将寻址开销分摊到较多的数据中,降低单位数据的寻址开销。另外HDFS块也不宜过大,因为MapReduce中的Map的任务一次只处理一个块中的数据,若任务太少就会降低效率。

  • 试述HDFS的冗余数据保存策略?
     1).第一个副本:放置在上传文件的数据节点;如果是集群外提交,则随机挑
    选一台磁盘不太满、CPU不太忙的节点
     2).第二个副本:放置在与第一个副本不同的机架的节点上
     3).第三个副本:与第一个副本相同机架的其他节点上
     4).更多副本:随机节点

  • HDFS数据复制是使用流水线复制的策略,阐述该细节。
      当客户端要往HDFS写入一个文件,这个文件首先被写入本地,然后切成若干个块,每个块向集群中的名称节点发起写请求。名称节点选择一个数据节点列表返回给客户端,客户端首先将数据写入列表中的第一个数据节点,同时把列表传给第一个数据节点,第一个数据节点收到数据后写入本地,把收到的数据和列表传给第二个数据节点,以此类推,列表中的数据节点形成一条数据复制的流水线。

分布式数据库HBase

  • 试述Hadoop体系结构中HBase与其他组成部分的相互关系?
     1).利用Hadoop MapReduce来处理海量数据。
     2).利用Zookeeper作为协同服务。
     3).利用HDFS作为底层存储。
     4).Sqoop提供高效便捷的RDBMS数据导入功能。
     5).Pig和Hive提供高层语言支持。
     6).HBase是BigTable的开源实现。

  • 阐述HBase和BigTable底层技术对应关系?
    | 项目 | BigTable | HBase |
    | - ?-? -?
    | 文件存储系统 | GFS| HDFS |
    | 海量数据处理| MapReduce | Hadoop MapReduce |
    | 协同服务管理 | Chubby | Zookeeper |

  • 阐述HBase和传统数据库的区别?
     1).数据类型 关系数据库采用关系模型,具有丰富的数据类型和
    存储方式,HBase则采用了更加简单的数据模型,它把数据存储为未
    经解释的字符串。
     2).数据操作 关系数据库中包含了丰富的操作,其中会涉及复杂
    的多表连接。HBase操作则不存在复杂的表与表之间的关系,只有简
    单的插入、查询、删除、清空等,因为HBase在设计上就避免了复杂
    的表和表之间的关系
     3).存储模式 关系数据库是基于行模式存储的。HBase是基于列
    存储的,每个列族都由几个文件保存,不同列族的文件是分离的。
     4).数据索引 关系数据库通常可以针对不同列构建复杂的多个索
    引,以提高数据访问性能。HBase只有一个索引——行键,通过巧妙
    的设计,HBase中的所有访问方法,或者通过行键访问,或者通过行
    键扫描,从而使得整个系统不会慢下来。
     5).数据维护 在关系数据库中,更新操作会用最新的当前值去替
    换记录中原来的旧值,旧值被覆盖后就不会存在。而在HBase中执行
    更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧
    有的版本仍然保留。
     6).可伸缩性 关系数据库很难实现横向扩展,纵向扩展的空间也
    比较有限。相反,HBase和BigTable这些分布式数据库就是为了实现
    灵活的水平扩展而开发的,能够轻易地通过在集群中增加或者减少硬
    件数量来实现性能的伸缩。

  • HBase有哪些类型的访问接口?
    | 类型 | 特点 | 场合 |
    | - ?-? -?
    | Native Java API | 最常规和高效的访问方式 |适合Hadoop MapReduce作业并行批处理HBase表数据|
    | HBase Shell |HBase的命令行工具,最简单的接口|适合HBase管理使用|
    | Thrift Gateway |利用Thrift序列化技术,支持C++、PHP、Python等多种语言|适合其他异构系统在线访问HBase表数据|
    |REST Gateway |解除了语言限制| 支持REST风格的Http API访问HBase|
    |Pig |使用Pig Latin流式编程语言来处理HBase中的数据|适合做数据统计|
    |Hive |简单 | 当需要以类似SQL语言方式来访问HBase的时候|

  • 分别解释HBase行键、列键、时间戳的概念?
     1).行键 每个HBase表由若干行组成,每个行由行键来标识。
     2).列族 HBase分成许多列族的集合,是基本的访问控制单元。
     3).列限定符 列族里的数据通过列限定符来定位。
     4).时间戳 每个单元格保存同一份数据的多个版本,这些版本采用时间戳进行索引。

  • 试述HBase各功能组件及其作用?
     1).库函数 链接到每个客户端
     2).一个Master主服务器 负责管理和维护HBase表的分区信息,维护Region服务器列表,分配Region,负载均衡。
     3).许多个Region服务器 负责存储和维护分配给自己的Region,处理来自客户端的读写请求。

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

  • 试述HBase系统基本架构以及每个组成部分的作用?
     1).客户端 客户端包含访问HBase的接口,同时在缓存中维护着已经访问过的Region位置信息,用来加快后续数据访问过程。
     2).Zookeeper服务器 Zookeeper可以帮助选举出一个Master作为集群的总管,并保证在任何时刻总有唯一一个Master在运行,这就避免了Master的“单点失效”问题。
     3).Master 负责管理和维护HBase表的分区信息,维护Region服务器列表,分配Region,负载均衡。
     4).Region服务器 负责存储和维护分配给自己的Region,处理来自客户端的读写请求。

  • 阐述Region服务器向HDFS文件系统读写数据的基本原理?
     1).用户写入数据时,被分配到相应Region服务器去执行。
     2).用户数据首先被写入到MemStore和Hlog中。
     3).只有当操作写入Hlog之后,commit()调用才会将其返回给客户端。
     4).当用户读取数据时,Region服务器会首先访问MemStore缓存,如果找不到,再去磁盘上面的StoreFile中寻找。

MapReduce

  • MapReduce和Hadoop的的关系?
    MapReduce是Hadoop的核心部分,Hadoop MapReduce是谷歌MapReduce的开源实现。

  • 适合用MapReduce来处理的任务和数据集需要满足怎样的要求?
    待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行进行处理。

  • 试论述JobTracker和TaskTracker的功能?
     1).JobTracker负责资源监控和作业调度。
     2).JobTracker 监控所有TaskTracker与Job的健康状况,一旦发现失败,就将相应的任务转移到其他节点。
     3).JobTracker 会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器(TaskScheduler),而调度器会在资源出现空闲时,选择合适的任务去使用这些资源。
     4).TaskTracker 会周期性地通过“心跳”将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker 发送过来的命令并执行相应的操作(如启动新任务、杀死任务等。
     5).TaskTracker 使用“slot”等量划分本节点上的资源量(CPU、内存等)。一个Task 获取到一个slot 后才有机会运行,而Hadoop调度器的作用就是将各个TaskTracker上的空闲slot分配给Task使用。slot 分为Map slot 和Reduce slot 两种,分别供MapTask 和Reduce Task 使用。

  • 试述Map函数和Reduce函数的输入、输出及处理过程?
      Map函数的输入来自分布式文件系统的文件块,Map函数将输入的元素转换成 &lt; k e y , v a l u e &gt; &lt;key,value&gt; <key,value>形式的键值对。Reduce函数将输入的一系列相同键的键值对组合起来,输出处理后的键值对,合并成为一个文件输出到分布式文件系统。

  • 试述MapReduce的工作流程?
     1).InputFormat模块做预处理,如验证输入格式是否符合输入定义,然后将输入文件切分成逻辑上的多个InputSplit。
     2).通过RecordReader处理InputSplit中的具体记录,转换成键值对输入给Map任务。
     3).Map任务根据用户定义的映射规则,输出一系列的 &lt; k e y , v a l u e &gt; &lt;key,value&gt; <key,value>作为中间结果。
     4).Shuffle过程将Map的输出进行一定的分区、排序、合并、归并等操作,将无序的 &lt; k e y , v a l u e &gt; &lt;key,value&gt; <key,value>转到有序的 &lt; k e y , v a l u e − l i s t &gt; &lt;key, value-list&gt; <key,valuelist>
     5).Reduce以一系列的 &lt; k e y , v a l u e − l i s t &gt; &lt;key, value-list&gt; <key,valuelist>中间结果作为输入,执行用户定义的逻辑,输出结果给OutputFormat模块。
     6).OutputFormat模块验证输出目录是否存在以及输出结果类型是否符合配置文件中的配置类型,都满足的话,输出Reduce结果到分布式文件系统。

  • 试分析Shuffle过程的作用?
      Shuffle过程将Map的输出进行一定的分区、排序、合并、归并等操作并交给Reduce。
     1).Map端的Shuffle过程 Map输出结果首先被写入缓存,缓存满时启动溢写操作,将缓存的数据进行分区,然后将每个分区进行排序和合并,之后写入磁盘文件。Map任务全部结束之前,这些文件会归并成一个大的磁盘文件,然后通知相应的Reduce任务来领取属于自己处理的数据。
     2).Reduce端的Shuffle过程 Reduce任务从Map端的不同Map机器领会属于自己处理的数据,对数据进行归并后交给Reduce处理。

Hadoop再探讨

  • Hadoop的局限与不足
     1).抽象层次低,需人工编码。
     2).表达能力有限。
     3).开发者自己管理作业(Job)之间的依赖关系。
     4).难以看到程序整体逻辑。
     5).执行迭代操作效率低。
     6).资源浪费(Map和Reduce分两阶段执行)。
     7).实时性差(适合批处理,不支持实时交互式)。

  • Hadoop的优化与发展主要体现在哪两个方面?
     1).一方面是Hadoop自身两大核心组件MapReduce和HDFS的架构设计改进。
     2).另一方面是Hadoop生态系统其它组件的不断丰富,加入了Pig、Tez、Spark和Kafka等新组件。

  • 描述HDFS HA架构组成组件及其具体功能
     1).HDFS HA(高可用)是为了解决单点故障问题。
     2).HA集群有两个名称节点,“活跃”和“待用”。
     3).两个名称节点状态同步,可以借助与一个共享存储系统实现。
     4).一旦活跃名称节点出故障,立刻切换到待命名称节点。
     5).Zookeeper确保只有一个名称节点对外服务。
     6).名称节点维护映射信息,数据节点同时向两个名称节点汇报信息。

  • 为什么需要HDFS联邦,即它能解决什么问题?
      HDFS联邦(Federation)能够解决单名称节点存在的以下几个问题:
     1).HDFS集群扩展性 多个名称节点各自分管一部分目录,使得集群可以扩展到更多节点,不再像HDFS1.0那样由于内存的限制制约了文件存储的数目。
     2).性能更高效 多个名称节点管理不同的数据,且同时对外提供服务,为用户提供更高的读写吞吐率。
     3).良好的隔离性 用户可根据需要将不同的业务数据交给不同的名称节点管理,这样不同业务之间的影响就很小。
      需要注意的是,HDFS联邦不能解决单点故障问题,还需要为每一个名称节点部署一个后备名称节点。

  • 阐述MapReduce1.0体系结构中存在的问题
     1).存在单点故障。
     2).JobTracker“大包大揽”导致任务过重(任务多时内存开销大,上限4000节点)。
     3).容易出现内存溢出(分配资源只考虑MapReduce任务数,不考虑CPU、内存)。
     4).资源划分不合理(强制划分为slot ,包括Map slot和Reduce slot)。

  • 描述YARN架构中各个组件的功能
    ResourceManager
     1).处理客户端请求
     2).启动/监控ApplicationMaster
     3).监控NodeManager
     4).资源分配与调度
    ApplicationMaster
     1).为应用程序申请资源,并分配给内部任务
     2).任务调度、监控与容错
    NodeManager
     1).单个节点上的资源管理
     2).处理来自ResourceManger的命令
     3).处理来自ApplicationMaster的命令

  • 简述Pig、Tez、Kafka的功能
    Pig:
      •Pig是Hadoop生态系统的一个组件
      •提供了类似SQL的Pig Latin语言(包含Filter、GroupBy、Join、
    OrderBy等操作,同时也支持用户自定义函数)
      •允许用户通过编写简单的脚本来实现复杂的数据分析,而不需要编写复杂的MapReduce应用程序
      •Pig会自动把用户编写的脚本转换成MapReduce作业在Hadoop集群上运行,而且具备对生成的MapReduce程序进行自动优化的功能
      •用户在编写Pig程序的时候,不需要关心程序的运行效率,这就大大减少了用户编程时间
      •通过配合使用Pig和Hadoop,在处理海量数据时就可以实现事半功倍的效果,比使用Java、C++等语言编写MapReduce程序的难度要小很多,并且用更少的代码量实现了相同的数据处理分析功能
    Tez:
      •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:
      •Kafka是一种高吞吐量的分布式发布订阅消息系统,用户通过Kafka系统可以发布大量的消息,同时也能实时订阅消费消息
      •Kafka可以同时满足在线实时处理和批量离线处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值