| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 想要面试大数据工作的50道必看题 -> 正文阅读 |
|
[大数据]想要面试大数据工作的50道必看题 |
摘要:是否对面试官在 Hadoop 面试中可能会问的所有问题感到不知所措?现在是时候通过一系列涵盖 Hadoop 框架不同方面的 Hadoop 面试问题了。 本文分享自华为云社区《2021 年你必须准备的 50 大 Hadoop 面试问题》,作者:Donglian Lin 。 在本文中,我们将涵盖所有常见问题,这些问题将帮助您通过最佳解决方案在面试中胜出。但在此之前,让我告诉您对大数据和 Hadoop 专家的需求是如何持续增长的。
我想提请您注意大数据革命。早些时候,组织只关心运营数据,不到整体数据的 20%。后来,他们意识到分析整个数据会给他们更好的业务洞察力和决策能力。那是雅虎、Facebook、谷歌等巨头开始采用 Hadoop 和大数据相关技术的时候。事实上,现在五分之一的公司正在转向大数据分析。因此,对大数据 Hadoop 工作的需求正在上升。因此,如果您想提升自己的职业生涯,Hadoop 和 Spark 正是您需要的技术。无论是新人还是有经验的人,这总是会给您一个良好的开端。 准备好这些顶级 Hadoop 面试问题,以便在新兴的大数据市场中占据优势,全球和本地企业,无论大小,都在寻找优质的大数据和 Hadoop 专家。这份 Hadoop 顶级面试问题的权威列表将带您了解有关Hadoop 集群、?HDFS、 MapReduce、Pig、Hive、HBase的问题和答案 。这个博客是通往下一个 Hadoop 工作的门户。
如果您在 Hadoop 面试中遇到一些困难的问题,并且仍然对最佳答案感到困惑,请将这些问题放在下面的评论部分。我们很乐意回答他们。 1、关系型数据库和HDFS的基本区别是什么?以下是 HDFS 和关系数据库之间的主要区别: 2. 解释“大数据”,大数据的五个 V 是什么?“大数据”是大量复杂数据集的术语,这使得使用关系数据库管理工具或传统数据处理应用程序难以处理。捕获、管理、存储、搜索、共享、传输、分析和可视化大数据很困难。大数据已成为企业的机遇。现在,他们可以成功地从数据中获取价值,并且凭借增强的业务决策能力,将比竞争对手具有明显的优势。 ? 提示:在此类问题中谈论 5V 将是一个好主意,无论是否专门询问!
3.什么是Hadoop及其组件。当“大数据”成为一个问题时,Apache Hadoop 演变为它的解决方案。Apache Hadoop 是一个框架,它为我们提供各种服务或工具来存储和处理大数据。它有助于分析大数据并从中做出业务决策,这是使用传统系统无法高效和有效地完成的。 ? 提示:现在,在讲解Hadoop的同时,还要讲解一下Hadoop的主要组成部分,即:
4. 什么是 HDFS 和 YARN?HDFS(Hadoop分布式文件系统)是Hadoop的存储单元。它负责在分布式环境中将不同类型的数据存储为块。它遵循主从拓扑。 ? 提示:建议对HDFS组件也进行说明即
YARN(Yet Another Resource Negotiator)是 Hadoop 中的处理框架,它管理资源并为进程提供执行环境。 ? 提示:同理,就像我们在 HDFS 中所做的那样,我们也应该解释一下 YARN 的两个组件:
5. 告诉我各种 Hadoop 守护进程及其在 Hadoop 集群中的作用。通常通过首先解释 HDFS 守护程序,即 NameNode、DataNode 和辅助 NameNode,然后转到 YARN 守护程序,即 ResorceManager 和 NodeManager,最后解释 JobHistoryServer 来解决这个问题。
Hadoop HDFS 面试问题6. 将 HDFS 与网络附加存储 (NAS) 进行比较。本题先解释一下NAS和HDFS,然后比较它们的特点如下:
7. 列出 Hadoop 1 和 Hadoop 2 的区别。这是一个重要的问题,在回答这个问题时,我们必须主要关注两点,即被动 NameNode 和 YARN 架构。
8. 什么是主动和被动“NameNodes”?在 HA(高可用性)架构中,我们有两个 NameNode——主动“NameNode”和被动“NameNode”。
当主动“NameNode”出现故障时,被动“NameNode”会替换集群中的主动“NameNode”。因此,集群永远不会没有“NameNode”,因此它永远不会失败。 9. 为什么在Hadoop集群中频繁删除或添加节点?Hadoop 框架最吸引人的特性之一是它对商品硬件的利用。然而,这会导致 Hadoop 集群中频繁出现“DataNode”崩溃。Hadoop 框架的另一个显着特点是随着数据量的快速增长而易于扩展。由于这两个原因,Hadoop 管理员最常见的任务之一就是在 Hadoop 集群中启用(添加)和停用(移除)“数据节点”。 10. 当两个客户端试图访问 HDFS 中的同一个文件时会发生什么?HDFS 仅支持独占写入。 当第一个客户端联系“NameNode”打开文件进行写入时,“NameNode”授予客户端创建该文件的租约。当第二个客户端尝试打开同一个文件进行写入时,“NameNode”会注意到该文件的租用已经授予另一个客户端,并拒绝第二个客户端的打开请求。 11. NameNode 如何处理 DataNode 故障?NameNode 定期从集群中的每个 DataNode 接收心跳(信号),这意味着 DataNode 运行正常。 块报告包含 DataNode 上所有块的列表。如果一个 DataNode 发送心跳消息失败,则在特定时间段后将其标记为死亡。 NameNode 使用之前创建的副本将死节点的块复制到另一个 DataNode。 12. NameNode宕机了怎么办?NameNode 恢复过程包括以下步骤来启动和运行 Hadoop 集群:
而在大型 Hadoop 集群上,NameNode 恢复过程可能会消耗大量时间,这在日常维护的情况下成为更大的挑战。 13. 什么是检查点?简而言之,“Checkpointing”是一个获取 FsImage 的过程,编辑日志并将它们压缩到一个新的 FsImage 中。因此,NameNode 可以直接从 FsImage 加载最终的内存状态,而不是重放编辑日志。这是一种更有效的操作,并减少了 NameNode 的启动时间。检查点由辅助 NameNode 执行。 14、HDFS如何容错?当数据存储在 HDFS 上时,NameNode 将数据复制到多个 DataNode。默认复制因子为 3。您可以根据需要更改配置因子。如果 DataNode 出现故障,NameNode 会自动将数据从副本复制到另一个节点并使数据可用。这在 HDFS 中提供了容错能力。 15. NameNode 和 DataNode 可以是商品硬件吗?这个问题的明智答案是,DataNodes 是像个人计算机和笔记本电脑一样的商品硬件,因为它存储数据并且需要大量使用。但是根据您的经验,您可以看出,NameNode 是主节点,它存储有关存储在 HDFS 中的所有块的元数据。它需要高内存(RAM)空间,因此NameNode需要是具有良好内存空间的高端机器。 16. 为什么我们在有大量数据集的应用程序中使用 HDFS 而不是在有很多小文件时?与分布在多个文件中的少量数据相比,HDFS 更适合单个文件中的大量数据集。如您所知,NameNode 将有关文件系统的元数据信息存储在 RAM 中。因此,内存量会限制我的 HDFS 文件系统中的文件数量。换句话说,过多的文件会导致生成过多的元数据。而且,将这些元数据存储在 RAM 中将成为一项挑战。根据经验,文件、块或目录的元数据需要 150 个字节。 17.在HDFS中如何定义“块”?Hadoop 1 和 Hadoop 2 中的默认块大小是多少?可以改变吗?块只是硬盘驱动器上存储数据的最小连续位置。HDFS 将每个存储为块,并将其分布在整个 Hadoop 集群中。HDFS 中的文件被分解为块大小的块,这些块作为独立的单元存储。
是的,可以配置块。可以在 hdfs-site.xml 文件中使用 dfs.block.size 参数来设置 Hadoop 环境中块的大小。 18. 'jps' 命令有什么作用?'jps' 命令帮助我们检查 Hadoop 守护进程是否正在运行。它显示了机器上运行的所有 Hadoop 守护进程,即 namenode、datanode、resourcemanager、nodemanager 等。 19. 你如何定义 Hadoop 中的“机架感知”?机架感知是“NameNode”根据机架定义决定如何放置块及其副本的算法,以最大限度地减少同一机架内“DataNode”之间的网络流量。假设我们考虑复制因子 3(默认),策略是“对于每个数据块,一个机架中将存在两个副本,另一个机架中将存在第三个副本”。此规则称为“副本放置策略”。 20. Hadoop 中的“推测执行”是什么?如果某个节点似乎执行任务的速度较慢,则主节点可以在另一个节点上冗余地执行同一任务的另一个实例。然后,首先完成的任务将被接受,另一个被杀死。这个过程称为“推测执行”。 21. 如何重启“NameNode”或Hadoop中的所有守护进程?这个问题可以有两个答案,我们将讨论这两个答案。我们可以通过以下方法重启NameNode:
这些脚本文件位于 Hadoop 目录内的 sbin 目录中。 22. “HDFS Block”和“Input Split”有什么区别?“HDFS Block”是数据的物理划分,而“Input Split”是数据的逻辑划分。HDFS 将数据划分为块以将块存储在一起,而对于处理,MapReduce 将数据划分为输入拆分并将其分配给映射器函数。 23. 说出 Hadoop 可以运行的三种模式。Hadoop可以运行的三种模式如下:
Hadoop MapReduce 面试题24.什么是“MapReduce”?运行“MapReduce”程序的语法是什么?它是一种框架/编程模型,用于使用并行编程在计算机集群上处理大型数据集。运行 MapReduce 程序的语法是hadoop_jar_file.jar /input_path /output_path。 如果你对 MapReduce 有任何疑问或想修改你的概念,你可以参考这个MapReduce 教程。 25. “MapReduce”程序的主要配置参数是什么?“MapReduce”框架中用户需要指定的主要配置参数有:
26. 说明我们不能在mapper中进行“聚合”(加法)的原因?为什么我们需要“减速器”呢?这个答案包括很多点,所以我们将依次进行。
27、Hadoop中“RecordReader”的作用是什么?“InputSplit”定义了一个工作片段,但没有描述如何访问它。“RecordReader”类从其源加载数据并将其转换为适合“Mapper”任务读取的(键、值)对。“RecordReader”实例由“输入格式”定义。 28. 解释“MapReduce 框架”中的“分布式缓存”。分布式缓存可以解释为,MapReduce 框架提供的一种工具,用于缓存应用程序所需的文件。一旦你为你的工作缓存了一个文件,Hadoop 框架就会让它在你运行 map/reduce 任务的每个数据节点上可用。然后,您可以在 Mapper 或 Reducer 作业中将缓存文件作为本地文件访问。 29、“reducers”之间是如何通信的?这是一个棘手的问题。“MapReduce”编程模型不允许“reducer”相互通信。“减速器”是孤立运行的。 30. “MapReduce Partitioner”有什么作用?“MapReduce Partitioner”确保单个键的所有值都进入同一个“reducer”,从而允许在“reducer”上均匀分布地图输出。它通过确定哪个“reducer”负责特定键,将“mapper”输出重定向到“reducer”。 31. 你将如何编写自定义分区器?可以按照以下步骤轻松编写 Hadoop 作业的自定义分区器:
32、什么是“合路器”?“Combiner”是一个执行本地“reduce”任务的迷你“reducer”。它从特定“节点”上的“映射器”接收输入,并将输出发送到“减速器”。“组合器”通过减少需要发送到“减速器”的数据量来帮助提高“MapReduce”的效率。 33. 你对“SequenceFileInputFormat”了解多少?“SequenceFileInputFormat”是用于在序列文件中读取的输入格式。它是一种特定的压缩二进制文件格式,经过优化,可将一个“MapReduce”作业的输出之间的数据传递到其他“MapReduce”作业的输入。 序列文件可以作为其他 MapReduce 任务的输出生成,并且是从一个 MapReduce 作业传递到另一个 MapReduce 作业的数据的有效中间表示。 Apache Pig 面试问题34. Apache Pig 相对于 MapReduce 有哪些优势?Apache Pig 是一个平台,用于分析将它们表示为雅虎开发的数据流的大型数据集。它旨在提供对 MapReduce 的抽象,降低编写 MapReduce 程序的复杂性。
35. Pig Latin 中有哪些不同的数据类型?Pig Latin 可以处理原子数据类型(如 int、float、long、double 等)和复杂数据类型(如 tuple、bag 和 map)。 原子数据类型:原子或标量数据类型是所有语言中使用的基本数据类型,如字符串、整数、浮点、长、双、char[]、byte[]。 复杂数据类型:复杂数据类型有元组、映射和包。 36. 你合作过的“Pig Latin”中有哪些不同的关系运算?不同的关系运算符是:
37.什么是UDF?如果某些函数在内置运算符中不可用,我们可以通过编程方式创建用户定义函数 (UDF),以使用其他语言(如 Java、Python、Ruby 等)引入这些功能,并将其嵌入到 Script 文件中。 Apache Hive 面试问题38.“蜂巢”中的“SerDe”是什么?Apache Hive 是一个建立在 Hadoop 之上的数据仓库系统,用于分析 Facebook 开发的结构化和半结构化数据。Hive 抽象了 Hadoop MapReduce 的复杂性。 “SerDe”接口允许您指示“Hive”如何处理记录。“SerDe”是“Serializer”和“Deserializer”的组合。“Hive”使用“SerDe”(和“FileFormat”)来读取和写入表的行。 39、默认的“Hive Metastore”可以被多个用户(进程)同时使用吗?“Derby 数据库”是默认的“Hive Metastore”。多个用户(进程)不能同时访问它。它主要用于执行单元测试。 40. “Hive”存储表数据的默认位置是什么?Hive 存储表数据的默认位置在 /user/hive/warehouse 中的 HDFS 内。 Apache HBase 面试题41.什么是Apache HBase?HBase 是一个开源、多维、分布式、可扩展和用 Java 编写的 NoSQL 数据库。HBase 运行在 HDFS(Hadoop 分布式文件系统)之上,并为 Hadoop 提供类似 BigTable (Google) 的功能。它旨在提供一种容错方式来存储大量稀疏数据集。HBase 通过在庞大的数据集上提供更快的读/写访问来实现高吞吐量和低延迟。 42. Apache HBase 有哪些组件?HBase 包含三个主要组件,即 HMaster Server、HBase RegionServer 和 Zookeeper。
43、Region Server有哪些组成部分?区域服务器的组件是:
44.解释HBase中的“WAL”?Write Ahead Log (WAL) 是附加到分布式环境中每个 Region Server 的文件。WAL 存储尚未持久化或提交到永久存储的新数据。它用于恢复数据集失败的情况。 45. 提到“HBase”和“关系数据库”之间的区别?HBase 是一个开源、多维、分布式、可扩展和用 Java 编写的 NoSQL 数据库。HBase 运行在 HDFS 之上,并为 Hadoop 提供类似 BigTable 的功能。让我们看看 HBase 和关系数据库之间的区别。 Apache Spark 面试问题46.什么是Apache Spark?这个问题的答案是,Apache Spark 是一个在分布式计算环境中进行实时数据分析的框架。它执行内存计算以提高数据处理速度。 通过利用内存计算和其他优化进行大规模数据处理,它比 MapReduce 快 100 倍。 47. 你能用任何特定的 Hadoop 版本构建“Spark”吗?是的,可以为特定的 Hadoop 版本构建“Spark”。 48. 定义 RDD。RDD 是弹性分布数据集的首字母缩写词 - 并行运行的操作元素的容错集合。RDD 中的分区数据是不可变的和分布式的,这是 Apache Spark 的一个关键组件。 Oozie 和 ZooKeeper 面试问题49. Apache ZooKeeper 和 Apache Oozie 是什么?Apache ZooKeeper 协调分布式环境中的各种服务。它通过执行同步、配置维护、分组和命名节省了大量时间。 Apache Oozie 是一个调度程序,它调度 Hadoop 作业并将它们作为一个逻辑工作绑定在一起。有两种 Oozie 作业:
50. 如何在 Hadoop 中配置“Oozie”作业?“Oozie”与 Hadoop 堆栈的其余部分集成,支持多种类型的 Hadoop 作业,例如“Java MapReduce”、“Streaming MapReduce”、“Pig”、“Hive”和“Sqoop”。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 3:12:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |