博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

大数据面试题V3.0 -- Hadoop基础


Hadoop基础

  1. 介绍下Hadoop

    分布式系统架构。开发分布式程序。利用集群的威力进行高速运算和存储。
  2. Hadoop的特点

    高可靠性
    高效性
    高可扩展性
    高容错性
    低成本
  3. 说下Hadoop生态圈组件及其作用

    复制代码
    1,HDFS (分布式文件系统)
    2,资源管理器(YARN 和 mesos)
    3,mapreduce(分布式计算框架)
    4,flume(日志收集工具)
    5, hive(基于hadoop的数据仓库)
    6,hbase(分布式列存数据库)
    7,zookeeper(分布式协作服务)
    8,sqoop(数据同步工具)
    9,pig(基于hadoop的数据流系统)
    10,mahout(数据挖掘算法库)
    复制代码
  4. Hadoop主要分哪几个部分?他们有什么作用?

    三大核心组件:
    HDFS(分布式文件存储)
    MAPREDUCE(分布式计算)
    YARN(资源调度)
  5. Hadoop 1.x,2x,3.x的区别

    Hadoop1.x : MR 处理业务逻辑运算 和 资源的调度,耦合性较大。
    Hadoop2.x : 增加了Yarn。Yarn负责资源的调度,MR负责运算。
    Hadoop3.x : 在组成上没有变化。
  6. Hadoop集群工作时启动哪些进程?它们有什么作用?

    1)NameNode主服务器,管理 名称空间 和对 文件访问,保存metadate。 
    2)SecondaryNameNode提供周期检查点和清理任务。
    3)DataNode守护进程,负责管理连接到节点的存储。
    4)ResourceManager JobTracker负责调度DataNode上的工作。TaskTracker执行实际工作。
    5)NodeManager TaskTracker执行任务。
    6)DFSZKFailoverController高可用时它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态。FC也有选择谁作为Active NN的权利,因为最多只有两个节点,目前选择策略还比较简单(先到先得,轮换)。
    7)JournalNode 高可用情况下存放namenode的editlog文件.
  7. 在集群计算的时候,什么是集群的主要瓶颈

    磁盘IO
  8. 搭建Hadoop集群的xml文件有哪些?

    core-site.xml      核心配置文件,主要定义文件访问 hdfs://
    hadoop-env.sh      主要配java路径
    hdfs-site.xml       hdfs的相关配置
    mapred-site.xml    MR相关配置
    slaves               从节点
    yarm-site.xml       资源调度
  9. Hadoop的checkpoint流程

    1. 请求主节点Namenode 停⽌使⽤ edits⽂件,将新的写操作记录到新⽂件 edits.new2. 从主节点获取 fsimage 和 edits ⽂件(采⽤HTTP GET)
    3. 将 fsimage 载⼊内存,执⾏ edits 的操作,创建新 fsimage,并发回主节点(使⽤HTTP POST)
    4. 主节点将换旧的 fsimage ,⽤ edits.new 替换 edits⽂件。更新 fstime ⽂件 记录检查点执⾏的时间。
  10. Hadoop的默认块大小是多少?为什么要设置这么大?

    Hadoop 1 默认大小 64M
    Hadoop 2 之后默认大小 128M 
    为了最小化寻址开销
  11. Block划分的原因

    文件是分布式储存的,被分成块分别储存在不同的机器上。
    而多个副本,是为了安全的考虑。
  12. Hadoop常见的压缩算法?

    gzip、lzo、snappy、Bzip2
  13. Hadoop作业提交到YARN的流程?

    复制代码
    1)作业提交
    Client 调用 job.waitForCompletion 方法,向整个集群提交 MapReduce 作业, 向 ResourceManager 申请一个作业 id。
    RM 给 Client 返回该 job 资源的提交路径和作业 id。
    Client 提交 jar 包、切片信息和配置文件到指定的资源提交路径,向 RM 申请运行 MRAppMaster。
    (2)作业初始化
    当 RM 收到请求后,AppManager 将该 job 添加到容量调度器 Scheduler 中。
    空闲的 NodeManager 领取到该 Job,创建 Container,并产生 MRAppMaster,下载 Client 提交的资源到本地。 (
    3)任务分配和运行 MRAppMaster 向 RM 申请运行多个 MapTask 任务资源,
    RM 将运行 MapTask 分配给空闲的 NodeManager,使其创建容器。
    MRAppMaster 命令 NodeManager 启动 MapTask,对数据分区排序,等待执行结束。
    MRAppMaster 向 RM 申请容器,运行 ReduceTask。ReduceTask 向 MapTask 获取相应分区的数据。
    MRAppMaster 监控 Task 的运行状态 运行结束后,会向 RM 申请注销自己。
    (4
    )进度和状态更新
    YARN 中的任务将其进度和状态(包括 counter)返回给应用管理器 AppManager,
    客户端每秒(通过 mapreduce.client.progressmonitor.pollinterval 设置)
    向应用管理器请求进度更新, 展示给用户,AppManager 会监控 MRAppMaster。
    (5
    )作业完成
    复制代码
  14. Hadoop的Combiner的作用

    Combine是作为 Map任务的一部分,在执行完 Map函数后紧接着执行的。能够减少中间结果的数目,从而减少网络流量。
  15. Hadoop序列化和反序列化

    1)序列化:将 结构化对象 转换为 字节流 的过程,以便在网络上传输或写入到磁盘进行永久存储。 
    2)反序列化:将 字节流 转回一系列的 结构化对象。 
    在Hadoop中,多个节点上进程间的通信是通过“远程过程调用(RPC)”实现的。
  16. Hadoop的运行模式

    1.独立(本地)运行模式:无需任何守护进程,所有的程序都运行在同一个JVM上执行。在独立模式下调试MR程序非常高效方便。所以一般该模式主要是在学习或者开发阶段调试使用 。
    2.伪分布式模式:  Hadoop守护进程运行在本地机器上,模拟一个小规模的集群,换句话说,可以配置一台机器的Hadoop集群,伪分布式是完全分布式的一个特例。
    3.完全分布式模式:Hadoop守护进程运行在一个集群上。
  17. Hadoop小文件处理问题

    文件是许多记录组成的,可以通过调用 HDFS 的 sync() 方法(和 append 方法结合使用),每隔一定时间生成一个大文件。
    或者,可以通过写一个 MapReduce 程序来来合并这些小文件。
    MapReduce上的小文件 需要容器通过某种方式来对这些文件进行分组。
  18. Hadoop为什么要从2.x升级到3.x?

    复制代码
    1.License
    adoop 2.x - Apache 2.0,开源
    Hadoop 3.x - Apache 2.0,开源
    2.支持的最低Java版本
    Hadoop 2.x - java的最低支持版本是java 7
    Hadoop 3.x - java的最低支持版本是java 8
    3.容错
    Hadoop 2.x - 可以通过复制(浪费空间)来处理容错。
    Hadoop 3.x - 可以通过Erasure编码处理容错。
    4.数据平衡
    Hadoop 2.x - 对于数据,平衡使用HDFS平衡器。
    Hadoop 3.x - 对于数据,平衡使用Intra-data节点平衡器,该平衡器通过HDFS磁盘平衡器CLI调用。
    5.存储Scheme
    Hadoop 2.x - 使用3X副本Scheme
    Hadoop 3.x - 支持HDFS中的擦除编码。
    6.存储开销
    Hadoop 2.x - HDFS在存储空间中有200%的开销。
    Hadoop 3.x - 存储开销仅为50%。
    7.存储开销示例
    Hadoop 2.x - 如果有6个块,那么由于副本方案(Scheme),将有18个块占用空间。
    Hadoop 3.x - 如果有6个块,那么将有9个块空间,6块block,3块用于奇偶校验。
    8.YARN时间线服务
    Hadoop 2.x - 使用具有可伸缩性问题的旧时间轴服务。
    Hadoop 3.x - 改进时间线服务v2并提高时间线服务的可扩展性和可靠性。
    9.默认端口范围
    Hadoop 2.x - 在Hadoop 2.0中,一些默认端口是Linux临时端口范围。所以在启动时,他们将无法绑定。
    Hadoop 3.x - 但是在Hadoop 3.0中,这些端口已经移出了短暂的范围。
    10.工具
    Hadoop 2.x - 使用Hive,pig,Tez,Hama,Giraph和其他Hadoop工具。
    Hadoop 3.x - 可以使用Hive,pig,Tez,Hama,Giraph和其他Hadoop工具。
    11.兼容的文件系统
    Hadoop 2.x - HDFS(默认FS),FTP文件系统:它将所有数据存储在可远程访问的FTP服务器上。 Amazon S3(简单存储服务)文件系统Windows Azure存储Blob(WASB)文件系统。
    Hadoop 3.x - 它支持所有前面以及Microsoft Azure Data Lake文件系统。
    12.Datanode资源
    Hadoop 2.x - Datanode资源不专用于MapReduce,我们可以将它用于其他应用程序。
    Hadoop 3.x - 此处数据节点资源也可用于其他应用程序。
    13.MR API兼容性
    Hadoop 2.x - 与Hadoop 1.x程序兼容的MR API,可在Hadoop 2.X上执行
    Hadoop 3.x - 此处,MR API与运行Hadoop 1.x程序兼容,以便在Hadoop 3.X上执行
    14.支持Microsoft Windows
    Hadoop 2.x - 它可以部署在Windows上。
    Hadoop 3.x - 它也支持Microsoft Windows。
    15.插槽/容器
    Hadoop 2.x - Hadoop 1适用于插槽的概念,但Hadoop 2.X适用于容器的概念。通过容器,我们可以运行通用任务。
    Hadoop 3.x - 它也适用于容器的概念。
    16.单点故障
    Hadoop 2.x - 具有SPOF的功能,因此只要Namenode失败,它就会自动恢复。
    Hadoop 3.x - 具有SPOF的功能,因此只要Namenode失败,它就会自动恢复,无需人工干预就可以克服它。
    17.HDFS联盟
    Hadoop 2.x - 在Hadoop 1.0中,只有一个NameNode来管理所有Namespace,但在Hadoop 2.0中,多个NameNode用于多个Namespace。
    Hadoop 3.x - Hadoop 3.x还有多个名称空间用于多个名称空间。
    18.可扩展性
    Hadoop 2.x - 我们可以扩展到每个群集10,000个节点。
    Hadoop 3.x - 更好的可扩展性。 我们可以为每个群集扩展超过10,000个节点。
    19.更快地访问数据
    Hadoop 2.x - 由于数据节点缓存,我们可以快速访问数据。
    Hadoop 3.x - 这里也通过Datanode缓存我们可以快速访问数据。
    20.HDFS快照
    Hadoop 2.x - Hadoop 2增加了对快照的支持。 它为用户错误提供灾难恢复和保护。
    Hadoop 3.x - Hadoop 2也支持快照功能。
    21.平台
    Hadoop 2.x - 可以作为各种数据分析的平台,可以运行事件处理,流媒体和实时操作。
    Hadoop 3.x - 这里也可以在YARN的顶部运行事件处理,流媒体和实时操作。
    22.群集资源管理
    Hadoop 2.x - 对于群集资源管理,它使用YARN。 它提高了可扩展性,高可用性,多租户。
    Hadoop 3.x - 对于集群,资源管理使用具有所有功能的YARN。
    复制代码
  19. Hadoop的优缺点

  20. 复制代码
    Hadoop的优点
    1、具有 按位存储 和处理数据能力的高可靠性。
    2、通过可用的计算机 集群 分配数据,完成存储和计算任务,这些集群可以方便地扩展到数以千计的节点中,具有高扩展性。
    3、能够在节点之间进行 动态地移动数据,并保证各个节点的动态平衡,处理速度非常快,具有高效性。
    4、能够自动保存数据的 多个副本,并且能够自动将失败的任务重新分配,具有高容错性。
    
    Hadoop的缺点
    1、不适用于低延迟数据访问。
    2、不能高效存储大量小文件。
    3、不支持多用户写入并任意修改文件。
    复制代码

     

posted @   CHANG_09  阅读(235)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示