Hadoop面试必须知道的那些事儿

来源:知乎 作者:呼呼

1:Hadoop VS Spark


2. Hadoop实时应用有哪些?

Hadoop,众所周知的Apache Hadoop,是一个开放源代码软件平台,用于大容量数据的可扩展和分布式计算。它提供对数字平台和企业内部生成的结构化和非结构化数据的快速,高性能和成本效益的分析。它如今几乎应用在所有部门 。比如:

?交通管理

?流处理

?内容管理和电子邮件存档

?使用Hadoop计算集群处理大鼠脑神经元信号

?欺诈检测和预防

?广告定向平台正在使用Hadoop捕获和分析点击流,事务,视频和社交媒体数据

?在社交媒体平台上管理内容,信息,图片和视频

?实时分析客户数据,以提高业务绩效

?公共部门领域,如情报,国防,网络安全和科学研究

?金融机构正在使用大数据Hadoop来降低风险,分析欺诈模式,识别流氓交易者,更精确地根据客户细分定位营销活动,并提高客户满意度

?访问非结构化数据,例如医疗设备输出,医生笔记,实验室结果,成像报告,医疗通信,临床数据和财务数据。

3. Hadoop与其它计算系统的不同?

Hadoop是一个分布式文件系统,它允许您在云计算机上存储和处理大量数据,尤其是处理冗余数据。通过这个HDFS内容来了解分布式文件系统的工作原理。 这样最主要好处是,由于数据存储在几个节点中,因此最好以分布式方式处理。 每个节点可以处理存储在其上的数据,省去在网络上移来移去的时间。

相反,在关系数据库计算系统中,你可以实时查询数据,但是当数据庞大时,数据存储并不高效。

Hadoop还提供了一个使用Hadoop HBase构建列数据库的方案,用于对行运行查询。

4. Hadoop可以运行在哪些模式中?

Hadoop可以以三种模式运行:

1.独立模式:Hadoop的默认模式,它使用本地文件系统进行输入和输出操作。 此模式主要用于调试目的,不支持使用HDFS。 此外,在此模式下,不存在mapred-site.xml,core-site.xml,hdfs-site.xml文件所需的自定义配置。 比其他模式更快。

2.伪分布模式(单节点群集):在这种模式下,需要配置上述所有三个文件,所有守护程序都在一个节点上运行,因此,主节点和从节点是相同的。

3.完全分布式模式(多个集群节点):这是Hadoop的生产阶段,其中数据被使用并分布在Hadoop集群上的多个节点上。 单独的节点分配为主服务器和从服务器。

5 HDFS Block和Input Split之间的主要区别

简单来说,“block”是数据的物理表示,而split是block中存在的数据的逻辑表示。分割作用是block和mapper之间的中介。假设我们有两个block:

block 1:iintteell

block 2:Ii ppaatt

现在,考虑到映射,它将从第一个block读到ll,但不知道如何同时处理第二个block。此时split将发挥它的作用,它将形成逻辑组,即将Block1和Block2的作为一个整块处理。然后使用输入格式和记录读取器形成键值对,并发送映射以进行进一步处理使用输入拆分,如果资源有限,则可以增加拆分大小以限制映射数量。例如,如果有10块640MB(每个64MB)并且资源有限,可以将“分割大小”指定为128MB。这将形成一个128MB的逻辑组,每次只执行5个映射。

然而,如果”分割大小”属性设置为false,整个文件将形成一个输入拆分,并由单个映射处理,当文件较大时,消耗更多的时间。

6.什么是分布式缓存,它有什么好处?

Hadoop中的分布式缓存是Map-Reduce框架在需要缓存文件时的服务。 点击这里了解MapReduce课程信息。 一旦为指定作业缓存文件,hadoop将使其在系统和内存中的每个数据节点上可用,其中map和reduce任务正在执行。然后,可以轻松访问和读取缓存文件并在编码中填充任何集合,比如数组,哈希映射。

使用分布式缓存的好处是:

?它分发简单的只读文本/数据文件和/或复杂类型,如jar,存档和其他。 这些存档然后在从节点处被归档。

?分布式缓存跟踪缓存文件的修改时间,通知正在正确执行作业之前不应修改文件。

7. NameNode,Checkpoint NameNode和BackupNode之间的区别

NameNode是管理元数据HDFS的核心 - 什么文件映射到什么块位置的信息以及什么块存储在什么datanode上。简单来说,它是关于存储数据的数据。 NameNode支持由Hadoop集群上HDFS中存在的所有文件组成的目录树状结构。它使用以下文件命名空间:

fsimage file-它跟踪命名空间的最新Checkpoint。

Edit file - 它是对命名空间从Checkpoint以后所做的更改的日志。

Checkpoint NameNode具有与NameNode相同的目录结构,并通过下载fsimage和edits文件并在本地目录中进行边距限定,以定期间隔为命名空间创建Checkpoint。合并后的新映像将上传到NameNode。

有一个类似的节点像Checkpoint,通常称为辅助节点,但它不支持“上传到NameNode”功能。

BackupNode提供与Checkpoint类似的功能,执行与NameNode的同步。它维护文件系统命名空间的最新内存副本,并且不需要在固定时间间隔后保存更改。BackupNode需要将内存中的当前状态保存到映像文件以创建新的checkpoint。

8. Hadoop中最常见的输入格式是什么?

在Hadoop中有三种最常见的输入格式:

?文本输入格式:Hadoop中的默认输入格式。

?键值输入格式:用于纯文本文件,其中文件被分成行

?顺序文件输入格式:用于顺序读取文件

9. DataNode 定义,NameNode如何处理DataNode故障?

DataNode(数据节点)将数据存储在HDFS中; 它是实际数据驻留在文件系统中的节点。 每个数据节点发送实时消息,以示其活跃状态。 如果namenode确实没有接收到来自datanode的消息10分钟,则它认为它已死或不在位,并开始复制在该数据节点上托管的块,以便将它们托管在某些其他数据节点上. A BlockReport 包含DataNode上所有block的列表。 现在,系统开始复制存储在死DataNode中的内容。

NameNode管理从一个DataNode到另一个DataNode的数据块的复制。 在此过程中,复制数据直接在DataNode之间传输,以使数据永远不会通过NameNode。

10. Reducer的核心方法是什么?

Reducer的三个核心方法是:

1. setup():此方法用于配置各种参数,如输入数据大小,分布式缓存。

public void set(context)

2. reduce():reducer的心脏总是每个键调用一次,关联的减少任务

public void reduce(Key,Value,context)

3. cleanup():这个方法被调用来清理临时文件,只有一次在任务结束

public void cleanup(context)

11.Hadoop中的Sequence File(序列文件) 是什么?

在MapReduce I / O格式中广泛使用,Sequence File是一个包含二进制键/值对的平面文件。 映射输出在内部存储为SequenceF ile。 它提供了Reader,Writer和Sorter类。 三个Sequence File格式是:

1.未压缩的键/值记录。

2.记录压缩的键/值记录 - 这里只压缩“值”。

3.块压缩键/值记录 - 键和值都分别在“块”中收集和压缩。 “块”的大小是可配置的。

12.Hordoop中的Job Tracker(作业跟踪器)角色是什么?

Job Tracker的主要功能是资源管理(管理任务跟踪器),跟踪资源可用性和任务生命周期管理(跟踪任务进度和容错)。

?它是一个在单独的节点上运行的进程,而不是经常在DataNode上运行

?作业跟踪器与NameNode通信以标识数据位置

?找到最佳的任务跟踪节点以在指定节点上执行任务

?监视单个任务跟踪器,并将整个作业提交给客户端。

?它跟踪从节点本地的MapReduce工作负载的执行。

13. Hadoop中 Record Reader的作用

由于Hadoop将数据拆分为各种块,因此使用RecordReader将拆分数据读取到单个记录中。 例如,如果我们的输入数据被拆分为:

Row1:欢迎来到

Row2:Bit Tiger

它将使用RecordReader读为“欢迎来到太阁”。

14. 什么是Hadoop中的投机执行?

Hadoop的一个限制是,通过在多个节点上分配任务,很少有慢节点限制程序的其余部分。有很多原因导致任务缓慢,有时不容易检测到。 Hadoop不是识别和修复慢速运行的任务,而是尝试检测任务何时运行速度低于预期,然后启动其他等效任务作为备份。 Hadoop中的此备份机制就是投机执行。

它在另一个磁盘上创建一个重复的任务。相同的输入可以并行处理多次。当作业中的大多数任务完成时,推测执行机制在当前可用的节点上调度剩余任务的副本(其速度较慢)。当这些任务完成后,它被告知JobTracker。如果其他副本以推测方式执行,Hadoop会通知TaskTracker退出这些任务并拒绝其输出。

在Hadoop中,投机执行默认为true。要禁用,请设置mapred.map.tasks.speculative.execution和mapred.reduce.tasks.speculative.execution

JobConf选项为false。

15.如果尝试运行具有已存在的输出目录的Hadoop作业,会发生什么情况?

它会抛出异常,说输出文件目录已经存在。 要运行MapReduce作业,需要确保HDFS中以前不存在输出目录。 要在运行作业之前删除目录,可以使用shell:Hadoop fs -rmr / path / to / your / output /或通过Java API:FileSystem.getlocal(conf).delete(outputDir,true)

16. 你怎么调试Hadoop代码?

首先,检查当前运行的MapReduce作业的列表。 接下来,我们需要看到没有孤立的作业运行; 如果有,需要确定RM日志的位置。

1.执行命令ps -ef | grep -I ResourceManager

并在显示的结果中查找日志目录。 从显示的列表中查找job-id,并检查是否有与该作业相关的任何错误消息。

2.根据RM日志,标识参与执行任务的工作节点。

3.现在,登录到该节点并运行 - “ps -ef | grep -iNodeManager“

4.检查节点管理器日志。 大多数错误来自每个map-reduce作业的用户级日志。

17.如何在HDFS中配置复制因子?

hdfs-site.xml用于配置HDFS。 更改hdfs-site.xml中的dfs.replication属性将更改放置在HDFS中的所有文件的默认复制。

还可以使用Hadoop FS Shell修改基于每个文件的复制因子:[training @ localhost?] $ hadoopfs -setrep -w 3 / my / file。此外,还可以更改所有文件的复制因子 目录。

[training @ localhost?] $ hadoopfs -setrep -w 3 -R / my / dir

18.如何压缩映射器输出,而不是reducer输出?

要实现此压缩,应该设置:

conf.set(‘mapreduce.map.output.compress’ ,true)

conf.set(‘mapreduce.output.fileoutputformat.compress’,false)

19. Map Side join和Reduce Side Join有什么区别?

映射侧连接在映射侧执行数据到达映射区。 需要一个严格的结构来定义映射侧连接。 另一方面,缩减侧连接(Repartitioned Join)比映射侧连接更简单,因为输入数据集不需要结构化。 然而,它的效率较低,因为它必须经历排序和随机相位,伴随而来的是网络开销。

20.如何将数据从Hive传输到HDFS?

通过编写查询:hive> insert overwrite directory'/'select * from emp;

可以将要从Hive导入的数据的查询写入HDFS。 接收的输出将存储在指定HDFS路径中的部分文件中。


相关文档推荐

SRE Copilot大语言模型智能运维框架.PDF

1741936996 王宁 5.04MB 24页 积分6

2024智算运维发展研究报告.PDF

1740033222  1.71MB 30页 积分5

腾讯大数据基于StarRocks的向量检索探索.PDF

1737425434 赵裕隆 3.48MB 34页 积分6

B站一站式大数据集群管理平台.PDF

1737421412 刘明刚 1.37MB 30页 积分6

StarRocks在爱奇艺大数据场景的实践.PDF

1737365327 林豪 3.57MB 27页 积分5

智算平台运维运营技术研究报告.PDF

1736479643  3.95MB 66页 积分5

农业农村大数据平台互联互通规范.PDF

1736163860  0.49MB 11页 积分5

工业大数据管理与治理智能制造的基座.PDF

1733702095 王宏志 3.83MB 54页 积分6

相关文章推荐

运维指标体系在银行业务的应用实践

CIO之家的朋友 CIO之家的朋友 

面向业务应用交易的IT运维监控思路

CIO之家的朋友们 张晓丹 

云计算的成本与价值概要分析

数字地平线 8小时coding 

运维85条军规

CIO之家的朋友们 ANZHIHE 

AIOps之前,运维层面能做什么

嘉为蓝鲸? 赵海兵