本帖最后由 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问题和答案。
我们根据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的特点包括:
- 开源 - 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。
-
- <configuration>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://localhost:9000</value>
- </property>
- </configuration>
-
复制代码
hdfs-site.xml - 此文件包含HDFS守护程序的配置设置。 hdfs-site.xml还指定HDFS上的默认块复制和权限检查。
-
- <configuration>
- <property>
- <name>dfs.replication</name>
- <value>1</value>
- </property>
- </configuration>
-
复制代码
mapred-site.xml - 在此文件中,我们为MapReduce指定框架名称。 我们可以通过设置mapreduce.framework.name来指定。- <configuration>
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- </configuration>
复制代码
yarn-site.xml - 此文件提供NodeManager和ResourceManager的配置设置。- <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>
复制代码
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中的数据本地性?
由于数据量巨大,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访问一些文件,那么我们将把该文件放到分布式缓存中。
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运行。 文件系统检查可以在整个文件系统上运行,也可以在文件的子集上运行。
用法:
- hdfs fsck <path>
- [-list-corruptfileblocks |
- [-move | -delete | -openforwrite]
- [-files [-blocks [-locations | -racks]]]
- [-includeSnapshots]
- Path- Start checking from this path
- -delete- Delete corrupted files.
- -files- Print out the checked files.
- -files –blocks- Print out the block report.
- -files –blocks –locations- Print out locations for every block.
- -files –blocks –rack- Print out network topology for data-node locations
- -includeSnapshots- Include snapshot data if the given path indicates or include snapshottable directory.
- -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等任何可执行文件创建/运行作业。
例如:
- hadoop jar hadoop-streaming-3.0.jar \
- - input myInputDirs \
- -output myOutputDir \
- -mapper / bin / cat \
- -reducer / usr / bin / wc
复制代码
在该示例中,Mapper和reducer都是可执行文件。 从stdin读取输入(逐行)并将输出发送到stdout。 该实用程序允许创建/提交Map / Reduce作业到适当的集群。 它还会监视作业的进度,直到完成为止。 Hadoop Streaming使用流命令选项以及通用命令选项。 务必在流式传输之前放置通用选项。 否则,命令将失败。
一般行语法如下所示:
- 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守护进程的不同命令有哪些?
•要启动所有hadoop守护进程,请使用:./ sbin / start-all.sh。
然后,要停止所有Hadoop守护进程使用:./ sbin / stop-all.sh
•还可以使用./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。
•最后,最后一种方法是单独启动所有守护进程。 然后,单独停止它们:
./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数据进行最高温度分析。 然后,我们可以按如下方式设置输入:
- MultipleInputs.addInputPath(job,ncdcInputPath,TextInputFormat.class,MaxTemperatureMapper.class);
- MultipleInputs.addInputPath(job,metofficeInputPath,TextInputFormat.class, MetofficeMaxTemperatureMapper.class);
-
复制代码
上面的代码替换了对FileInputFormat.addInputPath()和job.setmapperClass()的常规调用。 气象局和NCDC数据都是基于文本的。 因此,我们为每个使用TextInputFormat。 并且,我们将使用两个不同的mapper,因为两个数据源具有不同的行格式。 MaxTemperatureMapperr读取NCDC输入数据并提取年份和温度字段。 MetofficeMaxTemperatureMappers读取Met Office输入数据。 然后,提取年份和温度字段。
32.是否可以在多个目录中输出hadoop作业? 如果有,如何做?
是的,可以通过以下方法使用:
a. 使用MultipleOutputs类 -
该类简化了将输出数据写入多个输出。
- MultipleOutputs.addNamedOutput(job,”OutputFileName”,OutputFormatClass,keyClass,valueClass);
- [code]API提供了两种重载的写入方法来实现此目的
-
- [code]MultipleOutput.write(‘OutputFileName”, new Text (key), new Text(value));
复制代码
然后,我们需要使用重载的write方法,并为基本输出路径提供额外的参数。 这将允许将输出文件写入单独的输出目录。
- 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 |