分享

2018大数据面试专题1:Hadoop系列【分类新手及老司机面试题】

本帖最后由 pig2 于 2018-9-10 17:01 编辑

问题导读

1.Hadoop三个模式的作用是什么?
2.Hadoop开发,是否本地需要搭建集群?
3.Hadoop有什么特点?
4.Hadoop配置文件的作用都是什么?

关注最新经典文章,欢迎关注公众号


1.概述
在Hadoop面试问题和解答,我们将介绍前100个Hadoop面试问题及其答案。 这里介绍基于Hadoop场景的面试问题,针对新手的Hadoop面试问题以及针对经验丰富的Hadoop面试问题和答案。  Hadoop面试问题和新手的答案 - 问题编号 - 5 -11。
Hadoop面试有工作经验问题和答案 - 问题编号 - 12-32。

在这篇Hadoop文章中,我们将根据Hadoop生态系统的不同组件(如HDFS,MapReduce,YARN,Hive,HBase等)解释最新的Hadoop问题和答案。

TOP-100-Hadoop-Interview-Questions-and-Answers.jpg

我们根据Hadoop生态系统组件对所有这些Hadoop问题和答案进行了分类 -
  • Hadoop面试问题
  • HDFS Hadoop面试问题
  • MapReduce Hadoop面试问题

在Hadoop面试问题的这一部分中,我们将介绍有关新手和经验丰富的基本Hadoop面试问题和答案。 在这个一般的Hadoop面试问题部分之后,我们将在HDFS和MapReduce的Hadoop面试问题上有不同的部分。

2. Hadoop面试问题与解答
1.什么是Apache Hadoop?
Hadoop成为解决“大数据”问题的解决方案。 它是Apache Software Foundation(Apache软件基金会)赞助的Apache项目的一部分。 它是一个用于分布式存储和大型数据集分布式处理的开源软件框架。 开源意味着它是免费提供的,甚至我们可以根据我们的要求更改其源代码。 Apache Hadoop使得可以在具有数千个商用硬件节点的系统上运行应用程序。 它的分布式文件系统在节点之间提供了快速的数据传输速率。 它还允许系统在节点发生故障时继续运行。 Apache Hadoop提供:
  • 存储层 - HDFS
  • 批处理引擎 - MapReduce
  • 资源管理层 - YARN

2.为什么我们需要Hadoop?
大数据面临的挑战是 -
  • 存储 - 由于数据非常大,因此存储如此大量的数据非常困难。
  • 安全性 - 由于数据量巨大,保持安全是另一项挑战。
  • 分析 - 在大数据中,大多数时候我们都不知道我们正在处理的数据类型。 因此,分析这些数据更加困难。
  • 数据质量 - 在大数据的情况下,数据非常混乱,不一致和不完整。
  • 发现 - 使用强大的算法来查找模式和见解非常困难。

Hadoop是一个开源软件框架,支持大型数据集的存储和处理。 Apache Hadoop是存储和处理大数据的解决方案,因为:
  • Hadoop存储大量文件(原始文件)而不指定任何模式。
  • 高可扩展性 - 我们可以添加任意数量的节点,从而显着提高性能。
  • 可靠 - 尽管机器出现故障,它仍可在集群中可靠地存储数据。
  • 高可用性 - 尽管硬件出现故障,Hadoop数据仍然可用。 如果机器或硬件崩溃,那么我们可以从另一个路径访问数据。
  • 经济 - Hadoop运行在一个商品硬件集群上,并不是很昂贵

3. Hadoop的核心组件是什么?
Hadoop是一个开源软件框架,用于分布式存储和处理大型数据集。 Apache Hadoop核心组件是HDFS,MapReduce和YARN。

  • HDFS-Hadoop分布式文件系统(HDFS)是Hadoop的主要存储系统。 HDFS存储在商用硬件集群上运行的非常大的文件。 它的工作原理是存储较少数量的大文件而不是大量的小文件。 即使在硬件故障的情况下,HDFS也可以可靠地存储数据。 它通过并行访问提供对应用程序的高吞吐量访问。
  • MapReduce- MapReduce是Hadoop的数据处理层。 它编写了一个处理存储在HDFS中的大型结构化和非结构化数据的应用程序。 MapReduce并行处理大量数据。 它通过将作业(提交的作业)划分为一组独立任务(子作业)来完成此操作。 在Hadoop中,MapReduce通过将处理分为几个阶段来工作:Map和Reduce。 Map是处理的第一阶段,我们在其中指定所有复杂的逻辑代码。 减少是处理的第二阶段。 在这里,我们指定轻量级处理,如聚合/求和。
  • YARN-YARN是Hadoop中的处理框架。 它提供资源管理并允许多个数据处理引擎。 例如,实时流和批处理。


4. Hadoop的特点是什么?

Hadoop-Features-01.jpg

Hadoop的特点包括:
  • 开源 - Apache Hadoop是一个开源软件框架。开源意味着它是免费提供的,甚至我们可以根据我们的要求更改其源代码。
  • 分布式处理 - 由于HDFS以分布式方式在整个群集中存储数据。 MapReduce在节点集群上并行处理数据。
  • 容错 - Apache Hadoop具有高度容错能力。默认情况下,每个块在整个群集中创建3个副本,我们可以根据需要更改它。因此,如果任何节点出现故障,我们可以从另一个节点恢复该节点上的数据。框架自动恢复节点或任务的故障。
  • 可靠性 - 尽管机器出现故障,它仍可在集群中可靠地存储数
  • 高可用性 - 尽管硬件故障,数据仍具有高可用性和可访问性在Hadoop中,当机器或硬件崩溃时,我们可以从另一个路径访问数据。
  • 可扩展性 - Hadoop具有高度可扩展性,因为可以将新硬件添加到节点中。
  • 经济 - Hadoop运行在一个商品硬件集群上,并不是很昂贵。我们不需要任何专门的机器。
  • 易于使用 - 无需客户端处理分布式计算,框架可以处理所有事情。所以很容易使用。

5.比较Hadoop和RDBMS?
Apache Hadoop是数据库的未来,因为它存储和处理大量数据。 使用传统数据库是不可能的。 Hadoop和RDBMS之间存在一些差异,如下所示:

  • 架构 - 传统RDBMS具有ACID属性。而Hadoop是一个分布式计算框架,具有两个主要组件:分布式文件系统(HDFS)和MapReduce。
  • 数据接受 - RDBMS仅接受结构化数据。虽然Hadoop可以接受结构化数据和非结构化数据。这是Hadoop的一个很棒的功能,因为我们可以将所有内容存储在我们的数据库中,并且不会丢失任何数据。
  • 可伸缩性 - RDBMS是一个提供垂直可伸缩性的传统数据库。因此,如果存储的数据增加,那么我们必须增加特定的系统配置。而Hadoop提供了横向可伸缩性。因此,如果需要增加数据,我们只需要向集群添加一个或多个节点。
  • OLTP(实时数据处理)和OLAP - 传统RDMS支持OLTP(实时数据处理)。 Apache Hadoop不支持OLTP。 Apache Hadoop支持大规模批处理工作负载(OLAP)。
  • 成本 - 许可软件,因此我们必须为软件付费。 Hadoop是开源框架,因此我们不需要为软件付费。

3.针对新手的Hadoop面试问题
以下Hadoop面试问题适用于新手和学生

6.Hadoop运行的模式有哪些?
Apache Hadoop以三种模式运行:

  • 本地(独立)模式 - 默认情况下,Hadoop以单节点非分布式模式运行,作为单个Java进程运行。 本地模式使用本地文件系统进行输入和输出操作。 它也用于调试目的,它不支持使用HDFS。 此外,在此模式下,配置文件不需要自定义配置。
  • 伪分布式模式 - 就像独立模式一样,Hadoop也以伪分布式模式在单节点上运行。 不同之处在于,每个守护程序都在此模式下的单独Java进程中运行。 在伪分布式模式下,我们需要配置上面提到的所有四个文件。 在这种情况下,所有守护进程都在一个节点上运行,因此,主节点和从节点都是相同的。
  • 完全分布式模式 - 在此模式下,所有守护程序在形成多节点群集的单独节点中执行。 因此,它允许Master和Slave的单独节点。
【说明】
对于这个问题,很多新手有些疑问,如果是本地开发的话,是否需要搭建环境,其实是没有必要的,我们可以直接远程连接集群。上面只是我们在比较独立的情况下使用,比如学生,根本没有集群,如果你想开发,可以采用如本地模式

7.独立(本地)模式有哪些功能?
默认情况下,Hadoop作为单个Java进程以单节点非分布式模式运行。 本地模式使用本地文件系统进行输入和输出操作。 人们也可以将它用于调试目的。 它不支持使用HDFS。 独立模式仅适用于在开发期间运行程序以进行测试。 此外,在此模式下,配置文件不需要自定义配置。 配置文件是:

  • core-site.xml
  • hdfs-site.xml
  • mapred-site.xml
  • yarn-default.xml

8.伪模式有哪些特点?
就像独立模式一样,Hadoop也可以在此模式下在单节点上运行。 不同之处在于,每个Hadoop守护程序都在此模式下的单独Java进程中运行。 在伪分布式模式下,我们需要配置上面提到的所有四个文件。 在这种情况下,所有守护进程都在一个节点上运行,因此,主节点和从节点都是相同的。

伪模式适用于开发和测试环境。 在Pseudo模式下,所有守护进程都在同一台机器上运行。

9.全分布式模式有哪些功能?
在此模式下,所有守护程序在形成多节点集群的单独节点中执行。 因此,我们允许Master和Slave的单独节点。

我们在生产环境中使用此模式,其中'n'个机器形成一个集群。 Hadoop守护程序在一组计算机上运行。 有一个运行NameNode的主机和运行DataNode的其他主机。 因此,NodeManager安装在每个DataNode上。 它还负责在每个DataNode上执行任务。

ResourceManager管理所有这些NodeManager。 ResourceManager接收处理请求。 之后,它会相应地将请求的各个部分传递给相应的NodeManager。

10. Hadoop中的配置文件是什么?

Core-site.xml - 它包含Hadoop核心的配置设置,例如HDFS和MapReduce常用的I / O设置。 它使用主机名和端口。最常用的端口是9000。
  1. <configuration>
  2. <property>
  3. <name>fs.defaultFS</name>
  4. <value>hdfs://localhost:9000</value>
  5. </property>
  6. </configuration>
复制代码


hdfs-site.xml - 此文件包含HDFS守护程序的配置设置。 hdfs-site.xml还指定HDFS上的默认块复制和权限检查。
  1. <configuration>
  2. <property>
  3. <name>dfs.replication</name>
  4. <value>1</value>
  5. </property>
  6. </configuration>
复制代码


mapred-site.xml - 在此文件中,我们为MapReduce指定框架名称。 我们可以通过设置mapreduce.framework.name来指定。
  1. <configuration>
  2. <property>
  3. <name>mapreduce.framework.name</name>
  4. <value>yarn</value>
  5. </property>
  6. </configuration>
复制代码


yarn-site.xml - 此文件提供NodeManager和ResourceManager的配置设置。
  1. <configuration>
  2. <property>
  3. <name>yarn.nodemanager.aux-services</name>
  4. <value>mapreduce_shuffle</value>
  5. </property>
  6. <property>
  7. <name>yarn.nodemanager.env-whitelist</name> <value>
  8. JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property>
  9. </configuration>
复制代码


11. Hadoop有哪些限制?
Hadoop的各种限制是:
  • 小文件问题 - Hadoop不适合小文件。小文件是HDFS中的主要问题。小文件明显小于HDFS块大小(默认为128MB)。如果要存储这些大量的小文件,HDFS无法处理这些大量文件。由于HDFS使用少量大文件来存储数据集而不是大量的小文件。如果一个人使用大量的小文件,那么这将使namenode超载。由于namenode存储HDFS的命名空间。
  • HAR文件,序列化文件和Hbase克服了小文件问题。
  • 处理速度 - 使用并行和分布式算法,MapReduce处理大型数据集。 MapReduce执行任务:Map和Reduce。 MapReduce需要大量时间来执行这些任务,从而增加延迟。在MapReduce中通过集群分发和处理数据。因此,它会增加时间并降低处理速度。
  • 仅支持批处理 - Hadoop仅支持批处理。它不处理流数据,因此整体性能较慢。 MapReduce框架不会最大限度地利用集群的内存。
  • 迭代处理 - Hadoop对迭代处理效率不高。由于hadoop不支持循环数据流。这是下一阶段的输入是前一阶段输出的阶段链。
  • 本质上易受攻击 - Hadoop完全用Java编写,这是一种使用最广泛的语言。因此,java被网络犯罪分子利用最多。因此,它涉及许多安全漏洞。
  • 安全性 - Hadoop在管理复杂应用程序方面具有挑战性。 Hadoop在存储和网络级别缺少加密,这是一个值得关注的主要问题。 Hadoop支持Kerberos身份验证,这很难管理。


关注最新经典文章,欢迎关注公众号


4. Hadoop经验丰富的面试问题
Hadoop面试问题适用于有经验的人,但是新手和学生也可以阅读和推荐,以获得高级理解

12.比较Hadoop 2和Hadoop 3?
  • 在Hadoop 2中,Java的最低支持版本是Java 7,而在Hadoop 3中则是Java 8。
  • Hadoop 2,通过副本处理容错(这是浪费空间)。 Hadoop 3通过Erasure编码处理它。
  • 对于数据平衡,Hadoop 2使用HDFS平衡器。 而Hadoop 3使用Intra-data节点平衡器。
  • 在Hadoop 2中,一些默认端口是Linux临时端口范围。 所以在启动时,他们将无法绑定。 但是在Hadoop 3中,这些端口已经移出了短暂的范围。
  • 在hadoop 2中,HDFS在存储空间中有200%的开销。 虽然Hadoop 3在存储空间中有50%的开销。
  • Hadoop 2具有克服SPOF(单点故障)的功能。 因此,只要NameNode失败,它就会自动恢复。 Hadoop 3自动恢复SPOF,无需手动干预即可克服它。


13.解释Hadoop中的数据本地性?
Data-Locality-01.jpg

由于数据量巨大,Hadoop的主要缺点是交叉网络流量。 为了克服这个缺点,数据局部性出现了。 它指的是将计算移动到接近实际数据驻留在节点上的位置的能力,而不是将大数据移动到计算中。 数据位置增加了系统的总吞吐量。

在Hadoop中,HDFS存储数据集。 数据集分为块,并存储在Hadoop集群中的数据节点上。 当用户运行MapReduce作业时,NameNode会将此MapReduce代码发送到与MapReduce作业相关的数据可用的数据节点。

数据本地性有三类:

  • 数据本地 - 在此类别中,数据与处理数据的mapr任务位于同一节点上。 在这种情况下,数据的接近度更接近计算。 这是最优选的方案。
  • Intra-Rack-在这种情况下,数据与map任务在不同节点上运行,但在同一机架上运行。 由于约束,并不总是可以在同一个datanode上执行map任务。
  • 机架间 - 在这种情况下,数据与map任务在不同的机架上运行。 由于资源限制,无法在同一机架中的不同节点上执行map任务。


14.什么是Hadoop中的安全模式?
Apache Hadoop中的Safemode是NameNode的维护状态。在此期间NameNode不允许对文件系统进行任何修改。在Safemode期间,HDFS群集处于只读状态,不会复制或删除块。在NameNode启动时:

  • 它将文件系统命名空间从上次保存的FsImage加载到其主内存和编辑日志文件中。
  • 合并在FsImage上编辑日志文件并生成新的文件系统名称空间。
  • 然后,它从所有数据节点接收包含有关块位置信息的块报告。

在SafeMode NameNode中,从数据节点执行块报告的集合。 NameNode在启动期间自动进入安全模式。在DataNode报告大多数块可用之后,NameNode将保留Safemode。使用命令:

hadoop dfsadmin -safemode get:了解Safemode的状态
bin / hadoop dfsadmin -safemode enter:输入Safemode
hadoop dfsadmin -safemode leave:走出Safemode
NameNode首页显示安全模式是打开还是关闭。

15.Hadoop中的小文件有什么问题?
Hadoop不适合小数据。 Hadoop HDFS缺乏支持随机读取小文件的能力。 HDFS中的小文件小于HDFS块大小(默认为128 MB)。如果我们存储这些大量的小文件,HDFS就无法处理这些文件。 HDFS使用少量大文件来存储大型数据集。它不适合大量的小文件。大量的许多小文件会重载NameNode,因为它存储了HDFS的命名空间。

回答:
HAR(Hadoop Archive)文件处理小文件问题。 HAR在HDFS之上引入了一个层,它为文件访问提供了接口。使用Hadoop archive命令,我们可以创建HAR文件。这些文件运行MapReduce作业,将存档文件打包为较少数量的HDFS文件。以HAR读取文件并不比读取HDFS中的文件更有效。由于每个HAR文件访问需要读取两个索引文件以及要读取的数据文件,因此这会使其变慢。

Sequence Files处理小文件问题。在此,我们使用文件名作为键,文件内容作为值。如果我们有10,000个100 KB的文件,我们可以编写一个程序将它们放入一个序列文件中。然后我们可以以流方式处理它们。

16.什么是Apache Hadoop中的“分布式缓存”?
在Hadoop中,数据块使用用户编写的程序在DataNode之间并行处理。 如果我们想要从所有DataNode访问一些文件,那么我们将把该文件放到分布式缓存中。

Distributed-Cache-01.jpg

MapReduce框架提供分布式缓存来缓存应用程序所需的文件。 它可以缓存只读文本文件,存档,jar文件等。

一旦我们为我们的job缓存了一个文件。 然后,Hadoop将在运行map / reduce任务的每个datanode上使其可用。 然后,在我们所以的map和reduce job中可以访问datanode的所有文件

需要使用分布式缓存的应用程序应确保文件在URL上可用。 URL可以是hdfs://或http://。 现在,如果文件出现在提到的URL上。 用户提到它是缓存文件到分布式缓存。 在这些节点上启动任务之前,此框架将复制所有节点上的缓存文件。 默认情况下,分布式缓存的大小为10 GB。 我们可以使用local.cache.size调整分布式缓存的大小。

17.如何在Hadoop中实现安全性?
Apache Hadoop使用Kerberos实现安全性。

在较高级别,客户端在使用Kerberos时必须采取三个步骤来访问服务。 因此,每个都涉及与服务器的消息交换。

  • 身份验证 - 客户端向身份验证服务器验证自身。 然后,接收带时间戳的票证授予票证(TGT)。
  • 授权 - 客户端使用TGT从票证授予服务器请求服务票证。
  • 服务请求 - 客户端使用服务票证向服务器验证自身。



18.为什么经常在Hadoop集群中删除或添加节点?
Hadoop最重要的功能是普通硬件。 但是,这会导致Hadoop集群中频繁的Datanode崩溃。
Hadoop的另一个显着特点是数据量的快速增长使得易于扩展。
因此,由于上述原因,管理员在Hadoop集群中添加/删除DataNode。


19.Hadoop中的吞吐量是多少?
单位时间内完成的工作量是吞吐量。由于下面的原因,HDFS提供了良好的吞吐量:
  • HDFS写入一次,读取多次这个模型。简化了数据一致性问题,因为数据写入一次,不能修改它。因此,提供高吞吐量的数据访问。
  • Hadoop工作在数据本地性原则上。这一原理将计算移到数据而不是数据到计算。这减少了网络拥塞,从而提高了整个系统的吞吐量。



20.如何在Hadoop中重新启动NAMENODE或所有守护进程?
通过以下方法,我们可以重新启动NameNode:

  • 可以使用/sbin/hadoop-daemon.sh stop namenode命令单独停止NameNode。 然后使用/sbin/hadoop-daemon.sh start namenode启动NameNode。
  • 使用/sbin/stop-all.sh并使用/sbin/start-all.sh命令,它将首先停止所有进程。 然后启动所有守护进程。

Hadoop目录中的sbin目录存储这些脚本文件。


21.jps命令在Hadoop中做了什么?
jps命令帮助我们检查Hadoop守护进程是否正在运行。 因此,它显示了在计算机上运行的所有Hadoop守护程序。 守护进程是Namenode,Datanode,ResourceManager,NodeManager等。

22.主要的hdfs-site.xml属性是什么?
hdfs-site.xml - 此文件包含HDFS守护程序的配置设置。 hdfs-site.xml还指定HDFS上的默认块副本和权限检查。
三个主要的hdfs-site.xml属性是:

  • dfs.name.dir为您提供NameNode存储元数据的位置(FsImage和编辑日志)。 并且还指定DFS应该位于的位置 - 磁盘上或远程目录中。
  • dfs.data.dir给出DataNodes存储数据的位置。
  • fs.checkpoint.dir是文件系统上的目录。 在哪个辅助NameNode存储edits日志的临时映像。 然后这个EditLogs和FsImage将合并进行备份。



23.什么是fsck?
fsck是文件系统检查[File System Check]。 Hadoop HDFS使用fsck(文件系统检查)命令来检查各种不一致性。 它还报告了HDFS中文件的问题。 例如,丢失文件或未复制块的块。 它与原生文件系统的传统fsck实用程序不同。 因此,它不会更正它检测到的错误。

通常,NameNode会自动更正大多数可恢复的故障。 文件系统检查也会忽略打开的文件。 但它提供了在报告期间选择所有文件的选项。 HDFS fsck命令不是Hadoop shell命令。 它也可以作为bin / hdfs fsck运行。 文件系统检查可以在整个文件系统上运行,也可以在文件的子集上运行。

用法:
  1. hdfs fsck <path>
  2. [-list-corruptfileblocks |
  3. [-move | -delete | -openforwrite]
  4. [-files [-blocks [-locations | -racks]]]
  5. [-includeSnapshots]
  6. Path- Start checking from this path
  7. -delete- Delete corrupted files.
  8. -files- Print out the checked files.
  9. -files –blocks- Print out the block report.
  10. -files –blocks –locations- Print out locations for every block.
  11. -files –blocks –rack- Print out network topology for data-node locations
  12. -includeSnapshots- Include snapshot data if the given path indicates or include snapshottable directory.
  13. -list -corruptfileblocks- Print the list of missing files and blocks they belong to.
复制代码



24.如何调试Hadoop代码?
首先,检查当前运行的MapReduce作业列表。 然后,检查作业是否正在运行; 如果是,则需要确定RM日志的位置。

  • 首先,运行:“ps -ef | grep -I ResourceManager“然后,在显示的结果中查找日志目录。 从显示的列表中找出job-id。 然后检查是否与该作业关联的错误消息。
  • 现在,在RM日志的基础上,识别涉及执行任务的工作节点。
  • 现在,登录到该节点并运行 - “ps -ef | grep -I NodeManager“
  • 检查NodeManager日志。
  • 大多数错误来自每个amp-reduce作业的用户级日志。



25.解释Hadoop streaming?
Hadoop发行版提供了通用的应用程序编程接口(API)。 这允许以任何所需的编程语言编写Map和Reduce作业。 该实用程序允许使用Mapper / Reducer等任何可执行文件创建/运行作业。
例如:
  1. hadoop jar hadoop-streaming-3.0.jar \
  2. - input myInputDirs \
  3. -output myOutputDir \
  4. -mapper / bin / cat \
  5. -reducer / usr / bin / wc
复制代码


在该示例中,Mapper和reducer都是可执行文件。 从stdin读取输入(逐行)并将输出发送到stdout。 该实用程序允许创建/提交Map / Reduce作业到适当的集群。 它还会监视作业的进度,直到完成为止。 Hadoop Streaming使用流命令选项以及通用命令选项。 务必在流式传输之前放置通用选项。 否则,命令将失败。

一般行语法如下所示:

  1. Hadoop command [genericOptions] [streamingOptions]
复制代码



26.hadoop-metrics.properties文件有什么作用?
Hadoop守护程序公开的统计信息是Metrics。 Hadoop框架使用它进行监视,性能调整和调试。

默认情况下,有许多指标可用。 因此,它们对于故障排除非常有用。

Hadoop框架使用hadoop-metrics.properties来实现“性能报告”。 它还控制Hadoop的报告。 API提供了抽象,因此我们可以在各种度量客户端库之上实现。 客户端库的选择是一个配置选项。 并且同一应用程序中的不同模块可以使用不同的度量实现库。该文件存在于/ etc / hadoop中。


27.Hadoop的CLASSPATH如何在启动或停止Hadoop守护进程中发挥重要作用?
CLASSPATH包含启动/停止Hadoop守护程序所需的包含jar文件的所有目录。

例如,HADOOP_HOME / share / hadoop / common / lib包含所有实用程序jar文件。 如果我们不设置CLASSPATH,我们无法启动/停止Hadoop守护进程。

我们可以在/etc/hadoop/hadoop-env.sh文件中设置CLASSPATH。 下次运行hadoop时,CLASSPATH将自动添加。 也就是说,每次运行时都不需要在参数中添加CLASSPATH。


28.用于启动和关闭Hadoop守护进程的不同命令有哪些?

&#8226;要启动所有hadoop守护进程,请使用:./ sbin / start-all.sh。
然后,要停止所有Hadoop守护进程使用:./ sbin / stop-all.sh

&#8226;还可以使用./sbin/start-dfs.sh一起启动所有dfs守护程序。 使用./sbin/start-yarn.sh一起使用Yarn守护进程。 MR作业历史记录服务器使用/sbin/mr-jobhistory-daemon.sh启动历史记录服务器。 然后,为了停止这些守护进程,我们可以使用
./sbin/stop-dfs.sh
./sbin/stop-yarn.sh
/sbin/mr-jobhistory-daemon.sh stop historyserver。

&#8226;最后,最后一种方法是单独启动所有守护进程。 然后,单独停止它们:
./sbin/hadoop-daemon.sh启动namenode
./sbin/hadoop-daemon.sh启动datanode
./sbin/yarn-daemon.sh启动resourcemanager
./sbin/yarn-daemon.sh启动nodemanager
./sbin/mr-jobhistory-daemon.sh启动历史服务器


29./ etc / hosts中配置了什么以及它在设置Hadoop集群时的作用是什么?
./etc/hosts文件包含该主机的主机名及其IP地址。 它还将IP地址映射到主机名。 在hadoop集群中,我们将所有主机名(主服务器和从服务器)的IP地址存储在./etc/hosts中。 因此,我们可以轻松使用主机名而不是IP地址。

30.如何在Hadoop框架中调用文件拆分?
输入Hadoop MapReduce任务的文件存储数据,这些文件通常存储在HDFS中。 InputFormat定义这些输入文件如何拆分和读取。 它还负责创建InputSplit,它是数据的逻辑表示。 InputFormat还将拆分为记录。 然后,mapper将处理每个记录(这是一个键值对)。 Hadoop框架通过运行getInputSplit()方法调用文件的拆分。 此方法属于用户定义的InputFormat类(如FileInputFormat)。

31.是否可以为Hadoop提供多个输入? 如果是,如何做?
是的,可以使用MultipleInputs类。
例如:
如果我们有来自英国气象局的气象数据。 我们希望结合NCDC数据进行最高温度分析。 然后,我们可以按如下方式设置输入:

  1. MultipleInputs.addInputPath(job,ncdcInputPath,TextInputFormat.class,MaxTemperatureMapper.class);
  2. MultipleInputs.addInputPath(job,metofficeInputPath,TextInputFormat.class, MetofficeMaxTemperatureMapper.class);
复制代码
上面的代码替换了对FileInputFormat.addInputPath()和job.setmapperClass()的常规调用。 气象局和NCDC数据都是基于文本的。 因此,我们为每个使用TextInputFormat。 并且,我们将使用两个不同的mapper,因为两个数据源具有不同的行格式。 MaxTemperatureMapperr读取NCDC输入数据并提取年份和温度字段。 MetofficeMaxTemperatureMappers读取Met Office输入数据。 然后,提取年份和温度字段。

32.是否可以在多个目录中输出hadoop作业? 如果有,如何做?
是的,可以通过以下方法使用:
a. 使用MultipleOutputs类 -
该类简化了将输出数据写入多个输出。

  1. MultipleOutputs.addNamedOutput(job,”OutputFileName”,OutputFormatClass,keyClass,valueClass);
  2. [code]API提供了两种重载的写入方法来实现此目的
  3. [code]MultipleOutput.write(‘OutputFileName”, new Text (key), new Text(value));
复制代码

然后,我们需要使用重载的write方法,并为基本输出路径提供额外的参数。 这将允许将输出文件写入单独的输出目录。
  1. MultipleOutput.write(‘OutputFileName”, new Text (key), new Text(value), baseOutputPath);
复制代码

然后,我们需要在每个实现中更改baseOutputpath。

b.在驱动程序类中重命名/移动文件 -
这是将输出写入多个目录的最简单方法。 因此,我们可以使用MultipleOutputs并将所有输出文件写入单个目录。 但是每个类别的文件名需要不同。

我们已经为Hadoop开发人员,Hadoop管理员,Hadoop架构师等为新手以及经验丰富的候选人分类了上述基于Hadoop场景的面试问题。




下一篇:
2018大数据面试专题2:Spark系列【分类新手机老司机面试题】
http://www.aboutyun.com/forum.php?mod=viewthread&tid=25206



转载注明本文链接
http://www.aboutyun.com/forum.php?mod=viewthread&tid=25195

已有(8)人评论

跳转到指定楼层
yeying213 发表于 2018-9-6 10:10:50
整理得挺好
回复

使用道具 举报

wke_summer 发表于 2018-9-6 10:43:36
感谢楼主的整理
回复

使用道具 举报

xuliang123789 发表于 2018-9-6 12:25:05
万分感谢楼主,赞~~
回复

使用道具 举报

美丽天空 发表于 2018-9-6 15:06:37
来学习了,感谢总结
回复

使用道具 举报

jiangzi 发表于 2018-9-8 11:04:49
Hadoop系列【分类新手及老司机面试题】~~~
回复

使用道具 举报

神罗天征 发表于 2019-3-22 10:20:10
好贴子啊,学习了
回复

使用道具 举报

神罗天征 发表于 2019-3-22 10:21:30
终于可以收藏了
回复

使用道具 举报

梦蝶大数据 发表于 2019-4-4 14:50:58
感谢楼主,资源不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条