乐知付加密服务平台

如果你有资源, 平台可以帮你实现内容变现, 无需搭建知识付费服务平台。

点击访问官方网站 https://lezhifu.cc

扫码关注公众号 乐知付加密服务平台-微信公众号
Hadoop面试问的最多的100个问题和答案 | chenzuoli's blog

Hadoop面试问的最多的100个问题和答案

今天来翻译一篇hadoop的面试题相关内容,巩固一些在数据领域的专业英语词汇和语法,也复习一下hadoop相关知识,平时看中文博客比较多,今天看看老外怎么评价hadoop的。

1. Hadoop面试问题

在这篇博客文章中,我们将覆盖前100的hadoop面试问题和它们的详细答案,并且基于面试问题,给出相应的使用场景。这些问题和答案,适合初学者,也适合有经验的开发者,我们也会分享在面试中如何介绍占比比较重的hadoop项目,一些hadoop实时的面试问题,将帮助你更容易地赢得面试。
在这篇hadoop博客中,我们将会介绍最新的hadoop面试问题,并且会基于不同的hadoop生态系统组件,比如hive hbase hdfs mapreduce yarn等。

我们已经将这些hadoop的面试问题和答案按照生态系统组件进行了分类,如下:
Hadoop Interview Questions
Hadoop HDFS Interview Questions
Hadoop MapReduce Interview Questions

2. Hadoop面试问题和答案

Hadoop面试问题这一部分,我们会覆盖Hadoop的基本问题和答案,适合初学者和有经验的开发者。这部分完了之后会讲下HDFS和YARN这两部分。

Q.1 什么是Hadoop?

Hadoop作为大数据问题的解决方案出现,是Apache项目的一部分,是Apache软件基金会赞助的。它是开源的软件框架,能够实现分布式存储和分布式处理大数据集的任务,开源意味着免费,我们可以任意按照自己的需求修改源代码。Hadoop框架让几千台普通机器之间运行程序成为可能。它的分布式文件系统提供了节点之间的数据快速传输。它也支持节点宕机时继续进行处理。

Hadoop提供了:

  • 存储层:HDFS
  • 批处理引擎:MapReduce
  • 资源管理层:YARN

Q.2 我们为什么需要Hadoop?

Hadoop的出现是为了应对大数据的挑战,大数据的挑战是:

  • 存储-当数据量很大时,存储这么大量的数据是相当困难的
  • 安全-文件大小很大时,安全性也是一个挑战
  • 数据分析-在大数据领域,很多时候我们不知道正在处理的是什么类型的数据,因此分析数据变得更加困难了
  • 数据质量-在大数据领域,数据是非常混乱的,不一致的,不完全的
  • 数据挖掘-使用强大的算法很难发现其中的模型和洞察

Hadoop是开源的软件框架,支持大数据分布式存储和分布式计算,是存储和处理大数据量的最佳解决方案,原因如下:

  • 存储-Hadoop开源存储巨大的原始数据,不需要指定任何元数据
  • 高扩展性-我们可以添加任意多的节点(hadoop2<=10000,hadoop3>=10000),从而显著地提高性能
  • 可靠性-即使在节点挂掉的时候,也不会丢失数据,非常可靠
  • 高可用-在hadoop里,即使节点挂掉,数据也可以被正常访问,不管是机器挂掉或者硬件坏了,我们都能够通过另一种方式访问数据
  • 经济性-Hadoop运行在廉价的普通机器上

————-2022.03.27————-

Q.3 Hadoop有哪些核心组件

Hadoop是开源的软件框架,解决分布式存储和大数据集的处理的问题。核心组件是HDFS、MapReduce和YARN。

  • HDFS-Hadoop Distributed File System(HDFS)是Hadoop的主要存储系统,HDFS运行在非常普通的硬件上,存储很大的文件,它的原理就是存储少了的大文件,而不是大量的小文件,并且非常可靠,即使在节点挂掉的时候,应用程序也可以并行地高吞吐地访问它们。
  • MapReduce-MapReduce是Hadoop的处理层,你可以写一个程序处理大的结构化和非结构化的存储在HDFS上的数据。MapReduce并行地处理大数据量,它通过拆分Job为一系列的task进行处理。在Hadoop中,MapReduce把处理过程分为两个阶段:Map和Reduce,Map是处理的第一阶段,在这里编写所有的复杂逻辑,Reduce是处理的第二阶段,它负责轻量级的汇总或者集合操作。
  • YARN-YARN是Hadoop中的处理框架,它提供资源管理功能,并且允许多种数据处理引擎,比如,实时流、数据科学、批处理。

Q.4 Hadoop有哪些特点

feature

  • 开源-Hadoop是Apache开源软件框架,意味着它是免费的,并且你可以按照你的需求修改源码。
  • 分布式处理-HDFS将数据分布式存储在集群的不同机器上,MapReduce在集群的不同机器间进行并行处理。
  • 容错性-Hadoop是高容错的,默认情况下,单个机器中每个block块在集群的其他机器上都有3个备份,我们可以根据需要更改这个数量,因此如果某台机器宕机了,我们可以从其他机器上恢复,框架自动实现节点或任务的恢复。
  • 可靠性-即使机器失败了,它依然提供数据存储服务
  • 高可用性-即使节点失败,数据也是可用并且可访问的,在hadoop中,当一台机器失败或者宕机了,我们依然可用通过另一种方式访问数据。
  • 扩展性-hadoop是可扩展的,所以我们可以添加一台新的硬件机器到集群中
  • 经济性-hadoop运行在廉价的普通机器上,我们不需要为他定制机器
  • 易用性-客户端节点不需要处理分布式计算,框架考虑了所有的事情,所以使用起来很方便

————-2022.04.03————-

Q.5 对比下Hadoop和RDBMS

Hadoop是未来的数据库,因为它能够存储和处理大数据量,这是传统数据库不能实现的,Hadoop和RDBMS有以下不同点:

  • 架构-传统数据库有ACID事物特性,然而Hadoop是分布式计算处理框架,有两大核心组件HDFS和MapReduce
  • 数据验收-RDBMS只接收结构型数据,而Hadoop可以接收结构型和非结构型数据,它可以存储所有的东西,并且没有数据丢失,这是它最大的特性
  • 扩展性-RDBMS传统型数据库提供了垂直性的扩展能力,因此如果数据增长了,我们必须增加额外的系统配置来应付。然而Hadoop提供了水平扩展能力,因此我们可以添加1台或者多台机器到集群中,就可以满足额外的数据存储需求。
  • OLTP(real-time data processing)和OLAP-传统数据库支持OLTP,Hadoop不支持OLTP,Hadoop支持大批量的数据处理工作流(OLAP)
  • 开销-有软件许可证,因此需要为软件付费,但是Hadoop是完全开源的,我们不需要付任何费用

————-2022.04.05————-

针对新手的Hadoop面试问题

Q.6 Hadoop运行的几种模式

有三种模式:

  1. 本地(单机)模式:默认作为一个java进程运行在单机、非分布式的模式下。本地模式的文件输入输出操作使用的是本地文件系统,也可用于调试,不支持HDFS的使用,因此,在这种模式下,不需要修改指定的自定义配置;
  2. 伪分布式:类似单机模式,Hadoop伪分布式运行在单台机器上,不同的是,此模式下,每个后台进程都是单独的进程,需要修改至少4个配置文件,这样的话,所以进程都运行在这套机器上,Master和Slave都在这台机器上运行;
  3. 完全分布式:在这种模式下,所以的进程运行在不同的机器上,组成一个集群,因此,Master和Slave允许在不同机器上启动。

Q.7 Standalone有什么特点?

默认情况下,Hadoop运行在单节点、非分布式模式下,只有一个Java进程,本地模式使用了本地文件系统作为文件的输入输出,也可以进行调试,不支持HDFS分布式文件系统。该模式适合开发时进行测试,因此,在这个模式下,不需要自定义配置文件,配置文件如下:

1
2
3
4
core-site.xml
hfds-site.xml
mapred-site.xml
yarn-default.xml

Q.8 伪分布式有什么特点?

运行在单个机器上,区别是每个Hadoop后台进程均运行在不同的Java进程里,需要修改至少4个配置文件,所有进程均运行在单节点上,Master和Slave也是。
伪分布式适合开发和测试。

Q.9 完全分布式有什么特点?

在这个模式下,所以进程均运行在不同节点上,组成一个集群,Master和Slave允许在不同的节点上。
主要在生产环境使用这种模式,n台机器组成一个集群,Hadoop进程运行在一组机器上,一台机器作为NameNode节点运行,其他机器作为DataNode节点运行,因此,NodeManager在跟每一个DataNode在一起,并且在每台DataNode节点上负责任务的执行。
ResourceManager负责管理这些NodeManager,ResourceManager接收这些NodeManager的请求,然后根据这些NodeManager的请求发送对应的响应。

————-2022.04.10————-

Q.10 Hadoop的配置文件有哪些?

  • core-site.xml-包含Hadoop的核心配置,比如IO HDFS MapReduce,它用hostname和port,最经常用的端口是9000.

    1
    2
    3
    4
    5
    6
    <configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
    </property>
    </configuration>
  • hdfs-site.xml-包含HDFS后台进程的配置,也有指定hdfs默认block块副本和权限的检查。

    1
    2
    3
    4
    5
    6
    <configuration>
    <property>
    <name>dfs.replication</name>
    <value>1</value>
    </property>
    </configuration>
  • mapred-site.xml-这个文件,我们说它是专门为MapReduce框架服务的。我们可以通过mapreduce.framework.name指定框架的名称。

    1
    2
    3
    4
    5
    6
    <configuration>
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
    </configuration>
  • yarn-site.xml-这个文件是配置ResourceManager和NodeManager的

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <configuration>
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    <property>
    <name>yarn.nodemanager.env-whitelist</name> <value>
    JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property>
    </configuration>

Q.12 Hadoop的限制是啥?

各种限制如下:

1.小文件问题

  • Hadoop不适合小文件
    在Hdfs系统中最大的问题就是小文件,小文件明显小于Hdfs的block块大小(默认128M),如果你存储大量的这类小文件,Hdfs不能处理这么多的小文件,hdfs的工作方式就是存储少量的大文件,而不是大量的小文件,如果有人存储巨量的小文件,这将给NameNode带来很大的负担,让它处于过载状态。NameNode存储Hdfs的命名空间,Har文件,Sequence文件,因此Hbase克服了这个问题。

  • 处理速度
    由于有并行和分布式算法,MapReduce可以处理大量数据,MapReduce有2个阶段task:Map和Reduce,MapReduce需要许多时间处理这些task,因此增加了延迟,由于数据是分布式的,在整个集群内处理,因此这需要时间来降低处理速度。

  • 仅支持批处理
    仅支持批处理,不能处理流式数据,因此性能方面会慢一点,MapReduce框架没有最大限度地利用集群的内存资源

  • 迭代处理
    Hadoop处理迭代任务是不高效的,不支持循环处理类数据流,它采用stage的链条处理方式,前一个stage的数据,即是下一个stage的输入。

  • 天生易受攻击-Hadoop完全是由java写的,java是世界上最受欢迎的语言之一,因此,java被网络犯罪分子利用得最为严重,因此也有许多安全漏洞

  • 安全-Hadoop正在挑战管理复杂的应用程序,缺少在存储和网络方面的加密方案,这也是大家最关心的一点,Hadoop支持Kerberos认证,但是很难去管理。

这篇文章太长,翻译下来需要时间,我会不定期更新,敬请关注。


Keep reading, Keep writing, Keep coding.

欢迎关注我的微信公众号,比较喜欢分享知识,也喜欢宠物,所以做了这2个公众号:
程序员写书

欢迎交流,这是我的微信:
wechat

一起学习,一起进步。

-------------本文结束感谢您的阅读-------------