据《福布斯》统计,全球高达 90% 的组织使用大数据分析来创建投资报告。
随着大数据的日益普及,Hadoop 的就业机会比以往任何时候都多。
因此,要成为 Hadoop 专家,您可以使用本文中整理的面试问题和答案来帮助您破解面试。
也许了解 Hadoop 和大数据职位的薪资范围等事实会激励您在面试中取得好成绩?
- 据 Indeed.com 统计,美国大数据 Hadoop 开发人员的平均薪资为 144,000 美元。
- 据itjobswatch.co.uk统计,大数据 Hadoop 开发人员的平均工资为 66,750 英镑。
- 据 Indeed.com 消息称,印度的平均工资为 1,600,000 卢比。
你不觉得有利可图吗?那么让我们来了解一下Hadoop。
什么是 Hadoop?
Hadoop 是一种用 Java 编写的流行框架,它使用编程模型来处理、存储和分析大型数据集。
默认情况下,其设计允许它从单个服务器扩展到提供本地计算和存储的多台机器。此外,Hadoop 能够检测和处理高可用服务的应用层故障,使其高度可靠。
让我们深入探讨最常见的 Hadoop 面试问题及其正确答案。
Hadoop面试题及答案


Hadoop 中的存储单元是什么?
Ans :Hadoop中的存储单元称为Hadoop分布式文件系统(HDFS)。

网络附加存储与 Hadoop 分布式文件系统有何不同?
答:HDFS 是 Hadoop 的主存储,是一个分布式文件系统,使用商用硬件来存储大文件。另一方面,NAS 是文件级计算机数据存储服务器,为异构客户端组提供数据访问。
NAS 数据存储在专用硬件上,而 HDFS 将数据块分布在 Hadoop 集群中的所有机器上。
NAS使用高端存储设备,价格相当昂贵,但HDFS使用的商品硬件性价比很高。
NAS 单独存储计算数据,因此不适合 MapReduce。相反,HDFS 的设计允许它与 MapReduce 框架一起工作。在 MapReduce 框架内,计算转移到数据,而不是从数据转移到计算。

使用 Hadoop 和 Shuffle 描述 MapReduce
回答:MapReduce 是指 Hadoop 程序执行的两项不同任务,以实现 Hadoop 集群中数百到数千台服务器的大规模可扩展性。另一方面,Shuffle将Mapper的map输出转发到MapReduce中所需的Reducer。
Apache Pig 架构一瞥

回答:Apache Pig 架构包括一个 Pig Latin 解释器,它使用 Pig Latin 脚本来处理和分析大型数据集。
Apache Pig 还包含一组数据集,在这些数据集上执行连接、加载、过滤、排序和分组等数据操作。
Pig Latin 语言使用 Grant shell、UDF 和内置函数等执行机制来创建执行所需任务的 Pig 脚本。
Pig 通过将这些编写的脚本转换为一系列 Map-Reduce 作业,使程序员的工作变得更轻松。
Apache Pig 架构组件包括:
- 解析器– 通过检查脚本语法并执行类型检查来处理 Pig 脚本。解析器的输出表示 Pig Latin 语句和逻辑运算符,称为 DAG(有向无环图)。
- 优化器——优化器在DAG上实现投影、下推等逻辑优化。
- 编译器– 将优化器的优化逻辑计划编译为一组 MapReduce 作业。
- 执行引擎——这是 MapReduce 作业最终执行到所需输出的地方。
- 执行模式——Apache Pig的执行模式主要包括本地和MapReduce。
列出本地和远程元存储之间的差异
答案:Local Metastore 中的 Metastore 服务与 Hive 运行在同一 JVM 中,但连接到在同一计算机或远程计算机上的单独进程中运行的数据库。但是,远程元存储的元存储在与 Hive 服务 JVM 不同的 JVM 中运行。
大数据的五个V是什么?
答:这五个V代表了大数据的主要特征。它们包括:
- 价值:大数据旨在为在数据运营中使用大数据的组织带来显着的收益和高投资回报率(ROI)。大数据通过洞察发现和模式识别提供这种价值,从而增强客户关系、更有效的运营和其他好处。
- 多样性:表示所收集数据类型的异质性。不同的格式包括 CSV、视频、音频等。
- 数量:定义组织管理和分析的数据的关键数量和大小。该数据呈现指数级增长。
- 速度:这是数据增长的指数速度。
- 准确性:准确性是指由于数据不完整或不一致而导致可用数据“不确定”或“不准确”的程度。
描述 Pig Latin 中的不同数据类型。
Ans : Pig Latin 数据类型包括原子数据类型和复合数据类型。
原子数据类型是所有其他语言中使用的基本数据类型。它们包括:
- Int – 此数据类型定义有符号的 32 位整数。示例:13
- Long – Long 定义 64 位整数。示例:10L
- Float – 定义有符号的 32 位浮点数。示例:2.5F
- Double – 定义有符号的 64 位浮点数。示例:23.4
- 布尔值 – 定义布尔值。包含:对/错
- 日期和时间 – 定义日期和时间值。示例:1980-01-01T00:00.00.000+00:00
复杂的数据类型包括:
- 映射 – 映射是指一组键值对。示例:[‘颜色’#’黄色’,’数字’#3]
- Bag – 元组的集合,使用“{}”符号。示例:{(亨利,32),(基蒂,47)}
- 元组——元组定义一组有序的字段。示例:(33岁)
什么是 Apache Oozie 和 Apache ZooKeeper?
答:Apache Oozie 是一个 Hadoop 调度程序,负责调度 Hadoop 作业并将它们绑定为单个逻辑工作。
另一方面,Apache Zookeeper 在分布式环境中使用各种服务。公开同步、分组、配置维护和命名等简单服务可以节省开发人员的时间。 Apache Zookeeper 还为排队和领导者选举提供开箱即用的支持。
Combiner、RecordReader 和 Partitioner 在 MapReduce 操作中的作用是什么?
答案:组合器的工作原理就像一个迷你减速器。接收并处理来自map任务的数据,并将数据的输出传递到reducer阶段。
RecordHeader与InputSplit通信,并将数据转换为键值对,以便映射器正确读取。
分区器负责确定汇总数据所需的缩减任务数量,并负责查看组合器的输出如何发送到缩减器。分区器还控制中间映射输出的键分割。
提及 Hadoop 的各种特定于供应商的发行版。
回答:扩展 Hadoop 功能的各个供应商包括:
- IBM 开放平台。
- Cloudera CDH Hadoop 发行版
- MapR Hadoop 发行版
- 亚马逊弹性MapReduce
- Hortonworks 数据平台 (HDP)
- 关键大数据套件
- 数据堆栈企业分析
- Microsoft Azure 上的 HDInsight – 基于云的 Hadoop 发行版。
为什么HDFS具有容错能力?
答:HDFS 在不同的 DataNode 之间复制数据以提高容错能力。将数据存储在另一个节点上允许在一种模式崩溃时从其他节点检索数据。
区分联合和高可用性。
答:HDFS 联邦提供容错功能,即使另一个节点崩溃,也允许一个节点上连续的数据流。另一方面,高可用性需要两台单独的计算机,并在第一台和第二台计算机上分别配置活动和辅助 NameNode。
联合允许您拥有无限数量的不相关的 NameNode,而高可用性则允许您仅拥有两个持续运行的相关 NameNode(一个活动的和一个备用的)。
联邦中的NameNode共享一个元数据池,每个NameNode都有自己的元数据池。然而,在高可用性的情况下,活动 Namenode 一次运行一个,而备用 Namenode 保持空闲状态,仅偶尔更新其元数据。
如何检查块状态和文件系统健康状况?
回答:要检查 HDFS 文件系统的健康状态,请在 root 用户级别和各个目录上使用hdfs fsck /命令。
HDFS fsck命令使用:
hdfs fsck / -files --blocks –locations> dfs-fsck.log命令说明:
- -files:打印选中的文件。
- –locations:检查时打印所有块的位置。
检查区块状态的命令:
hdfs fsck <path> -files -blocks- <path>:从这里传递的路径开始检查。
- – Blocks:检查时输出文件块。
何时使用 rmadmin-refreshNodes 和 dfsadmin-refreshNodes 命令?
回答:这两个命令对于在调试期间或节点完成调试时更新节点信息很有用。
dfsadmin-refreshNodes命令运行 HDFS 客户端并更新 NameNode 上的节点配置。另一方面, rmadmin-refreshNodes命令执行 ResourceManager 管理任务。
什么是检查点?
Ans :检查点是一种将最后的文件系统更改与最新的 FSImage 合并的操作,保持编辑日志文件足够大并加快 NameNode 启动过程。检查点发生在辅助名称节点上。
为什么对于具有大型数据集的应用程序使用 HDFS?
Ans :HDFS提供DataNode和NameNode架构来实现分布式文件系统。
这两种架构提供了对高度可扩展的 Hadoop 集群上的数据的高性能访问。 NameNode将文件系统元数据存储在RAM中,因此内存量限制了HDFS文件系统文件的数量。
“jps”命令有什么作用?
答:Java 虚拟机进程状态 (JPS) 命令检查某些 Hadoop 守护进程(例如 NodeManager、DataNode、NameNode、ResourceManager)是否正在运行。必须从 root 运行此命令以验证主机中的工作节点。
Hadoop 中的“推测执行”是什么?
答:这是一个过程,其中 Hadoop 主节点不是修复检测到的慢速任务,而是在另一个节点上启动同一任务的另一个实例作为备份任务(推测任务)。推测执行可以节省大量时间,尤其是在密集型工作负载环境中。
说出 Hadoop 可以运行的三种模式。
答: Hadoop 运行的三个主节点是:
- 独立节点是使用本地文件系统和单个 Java 进程运行 Hadoop 服务的默认模式。
- 伪分布式节点使用单个 Hadoop 部署来运行所有 Hadoop 服务。
- 完全分布式节点使用单独的节点来运行 Hadoop 主从服务。
什么是UDF?
Ans :UDF(用户定义函数)允许您编写可用于在 Impala 查询期间处理列值的自定义函数。
什么是 DistCp?
Ans :DistCp 或 Distributed Copy,简而言之,是集群间或集群内大数据复制的有用工具。 DistCp 使用 MapReduce 有效地实现大量数据的分布式副本,以及其他任务,例如错误处理、恢复和报告。
描述 Hive 的元存储。
答:Hive Metastore 是一项将 Hive 表的 Apache Hive 元数据存储在关系数据库(例如 MySQL)中的服务。提供允许访问元数据的 Metastore 服务 API。
定义 RDD。
答:RDD 代表弹性分布式数据集,Spark 中的一种数据结构,是在不同集群节点上执行计算的数据元素的不可变分布式集合。
如何在我的 YARN 作业中包含本机库?
答案:使用-Djava.library. path命令的-Djava.library. path选项或使用以下格式在 .bashrc 文件中设置LD+LIBRARY_PATH :
<property>
<name>mapreduce.map.env</name>
<value>LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/my/libs</value>
</property>
我将解释一下HBase的“WAL”。
Ans : Write Ahead Log(WAL)是一种恢复协议,它将HBase中MemStore数据的变化记录到基于文件的存储中。如果 RegionalServer 崩溃或刷新 MemStore 之前,WAL 会恢复此数据。
YARN 是 Hadoop MapReduce 的替代品吗?
答案:不,YARN 不是 Hadoop MapReduce 的替代品。相反,一种名为 Hadoop 2.0 或 MapReduce 2 的强大技术支持 MapReduce。
HIVE中ORDER BY和SORT BY有什么区别?
回答:这两个命令在 Hive 中都是以排序的方式获取数据,但是使用SORT BY结果可能只是部分排序。
此外, SORT BY需要一个缩减器来对行进行排序。最终输出可能需要多个减速器。在这种情况下,最终输出可能是部分排序的。
另一方面, ORDER BY仅需要一个减速器来对输出进行总排序。您还可以使用LIMIT关键字来减少总排序时间。
Spark 和 Hadoop 有什么区别?
Ans :Hadoop和Spark都是分布式处理框架,但主要区别在于处理方式。 Hadoop对于批处理来说是高效的,而Spark对于实时数据处理来说是高效的。
此外,Hadoop 主要在 HDFS 中读取和写入文件,而 Spark 使用弹性分布式数据集的概念来处理 RAM 中的数据。
基于延迟,Hadoop是一种高延迟计算框架,不具有交互模式来处理数据,而Spark是一种低延迟计算框架,可以交互方式处理数据。
比较 Sqoop 和 Flume。
答:Sqoop 和 Flume 是 Hadoop 工具,它们收集从各种来源收集的数据并将该数据加载到 HDFS 中。
- Sqoop(SQL 到 Hadoop)从 Teradata、MySQL 和 Oracle 等数据库中提取结构化数据。另一方面,Flume 可以帮助您从数据库源中提取非结构化数据并将其加载到 HDFS 中。
- 在事件驱动方面,Flume是事件驱动的,而Sqoop不是。
- Sqoop 使用基于连接器的架构,其中连接器知道如何连接到另一个数据源。 Flume 使用基于代理的架构,您编写的代码成为负责获取数据的代理。
- Flume 是去中心化的,可以轻松收集和聚合数据。 Sqoop 对于输出为多个文件的并行数据传输非常有用。
本节介绍布隆贴图文件。
Ans : BloomMapFile 是一个扩展了 MapFile 类的类,并使用动态布隆过滤器来快速测试关键成员资格。
列出 HiveQL 和 PigLatin 之间的差异。
Ans : HiveQL 是一种类似于 SQL 的声明性语言,而 PigLatin 是一种高级过程数据流语言。
什么是数据清洗?
答:数据清理是一个重要的过程,用于删除或纠正已识别的数据错误,例如数据集中不正确、不完整、损坏、重复或格式错误的数据。
此流程旨在提高数据质量并提供更准确、一致和可靠的信息,以便您的组织内进行高效决策。
结论💃
大数据和 Hadoop 工作目前正在蓬勃发展,因此您可能希望增加被雇用的机会。本文中的 Hadoop 面试问题和答案将帮助您在即将到来的面试中取得好成绩。
接下来,查看一些用于学习大数据和 Hadoop 的优秀资源。
祝你好运! 👍




![2021 年如何设置 Raspberry Pi Web 服务器 [指南]](https://i0.wp.com/pcmanabu.com/wp-content/uploads/2019/10/web-server-02-309x198.png?w=1200&resize=1200,0&ssl=1)

