链接:https://www.zhihu.com/question/24965053/answer/102858134
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
Hadoop的HDFS和Hadoop的面试问题
1)列出Hadoop集群的Hadoop守护进程和相关的角色。
Namenode:它运行上Master节点上,负责存储的文件和目录所有元数据。它管理文件的块信息,以及块在集群中分布的信息。
Datanode:它是一个存储实际数据的Slave节点。它定时向Namenode发送本节点上块的信息。
Secondary Namenode:它会定期通过Editlog合并NameNode的变化,从而它r的日志不会过大。它可以在NameNode的故障的情况下做为副本使用。
JobTracker:这是运行在Namenode上,负责提交和跟踪MapReduce Job的守护程序。它会向Tasktracker分配的任务。
TaskTracker:这是Datanode上运行的守护进程。它在Slave节点上负责具体任务的运行。
ResourceManager的(Hadoop的2.X):它负责YARN上运行的资源和调度。
NodeManager(Hadoop的2.X):它可以运行在Slave节点,并负责启动应用程序的容器,监测他们的资源使用情况(CPU,内存,磁盘,网络),并报告这些到ResourceManager。
JobHistoryServer(Hadoop的2.X):它维护有关的MapReduce工作中的应用终止后的信息。
2)项目所需要的大数据工作的一些Hadoop的工具。
Hive,HBase,Ambari等等。有很多的Hadoop工具的大数据。要了解更多关于这些工具,请访问大数据对基本的Hadoop工具的Edureka博客:http://www.edureka.co/blog/essential-hadoop-tools-for-big-data
3)列出的Hadoop 1和Hadoop 2之间的差异。
在Hadoop的1.x中,“Namenode”有单点问题。在Hadoop的2.x中,我们有主动和被动“Namenodes”。如果主动“的Namenode”失败,则被动“的Namenode”负责。正因为如此,高可用性可以Hadoop中2.x中来实现
此外,在Hadoop的2.X,YARN提供了一个中央资源管理器。通过YARN,你现在可以在Hadoop中运行多个应用程序,共享公共资源。 MR2是一种特殊类型的运行于YARN MapReduce框架之上的分布式应用。其他工具也可以通过YARN执行数据处理。
要了解更多关于Hadoop的2.X的优势,请阅读本博客:http://www.edureka.co/blog/introduction-to-hadoop-2-0-and-advantages-of-hadoop-2-0/
4)什么是主动和被动的“Namenodes”?
在Hadoop的2.x中,我们有两个Namenodes-主动“Namenode” 被动“Namenode”。主动“Namenode”是在集群中运行的Namenode。被动“的Namenode”是一个备用“的Namenode”,里面有主动“的Namenode”的数据。当主动“Namenode”失败,则被动“Namenode”集群中替换主动“Namenode”。因此,集群是从来不会没有“Namenode”,所以它永远不会失败。
5)怎样才能删除或Hadoop集群添加节点?
其中一个Hadoop框架的最吸引人的特点是硬件的利用率。然而,这导致了Hadoop集群频繁“DataNode”崩溃。 Hadoop框架的另一个显着特点是,根据对数据量的快速增长便于进行规模扩展。由于这两个原因,在Hadoop管理员最常见的任务之一是在Hadoop集群,委托(添加)和停用(删除)“数据节点”。
阅读这篇博客Edureka获得在调试和退役节点详细了解在Hadoop集群:http://www.edureka.co/blog/commissioning-and-decommissioning-nodes-in-a-hadoop-cluster/
6)当两个客户端尝试访问对HDFS相同的文件,会发生什么?
HDFS只支持独占写入。
当第一个客户端连接“Namenode”打开文件进行写入时,“Namenode”授予租约的客户端创建这个文件。当第二个客户端试图打开同一个文件写入时,“Namenode”会注意到该文件的租约已经授予给另一个客户端,并拒绝第二个客户端打开请求
7)为什么我们有时会得到一个“文件只能被复制到0节点,而不是1”的错误?
这是因为“的Namenode”没有任何可用的DataNodes。
8)怎样才能在HDFS关闭“安全模式”?
您可以使用命令:Hadoop dfsadmin -safemode
9)如何在HDFS定义“block”?Hadoop1和2中Hadoop块大小是多少?是否可以改变?
“块”是可被读取或写入的数据的最小量。 HDFS中的文件被分解成块大小的块,它们被存储作为独立的单元。
Hadoop的1默认块大小:64 MB
Hadoop的2默认块大小:128 MB
是,块可以被配置。该dfs.block.size参数可在HDFS-site.xml文件被用来设置一个块的大小。
10)你如何在Hadoop中定义“rack awareness”?
它是在“Namenode”上确定块放置方式,以尽量减少在同一机架内“DataNodes”之间的网络流量的方式。比方说,我们考虑复制因子3(默认),该策略是“数据的每个块,两个副本将在一个机架中,第三个副本存在于不同的机架”。这条规则被称为“副本放置策略”。
11)为什么Hadoop适用于大型数据集的应用程序,而不是具有大量的小文件的应用程序?
相较于在多个分布数据量小的文件 ,HDFS更适合在一个文件中具有大量的数据集。这是因为“Namenode”是非常昂贵的,高性能的系统中,它是不慎重的占据“Namenode”通过了为多个小文件生成的元数据的不必要量的空间。因此,当在一个单独文件中的大量的数据,“Namenode”将占据更少的空间。因此,为获得最佳的性能,HDFS支持大数据集,而不是多个小文件。
12)什么是传统的关系型数据库和Hadoop之间的基本区别?
传统的RDBMS是用于交易系统报告和存档数据,而Hadoop是存储和处理的分布式文件系统的海量数据的方法。当你想寻求大数据的一个记录RDBMS将是有益的。因此,当你在一次存储很大的文件并随后进行分析,Hadoop将是有益的。
13)解释HDFS索引过程。
Hadoop的有它自己的索引数据的方式。取决于块大小,HDFS将继续存储数据的最后部分。它还会告诉你数据的下一部分的位置。
14)什么是“speculative running”在Hadoop中?
如果一个节点出现运行一个任务较慢,主节点可以冗余另一个节点上执行同一任务的另一实例。这里,它第一个完成任务的将被接受,而另一个被杀死。这个过程被称为“speculative running”。
15)你如何在Hadoop集群中实现HA(高可用性)?
您可以设置HA两种不同的方式;使用Quorum Jounal Manager(QJM),或NFS共享存储。为了详细了解这种情况,请阅读本Edureka博客:http://www.edureka.co/blog/how-to-set-up-hadoop-cluster-with-hdfs-high-availability/
16)为什么在HDFS,“读”是并行的,但“写”不是?
使用的MapReduce程序,该文件可以通过分割成块被读取。不过,写入时MapReduce并行 不能适用。
17)我怎样才能重新启动“Namenode”?
点击stop-all.sh,然后点击start-all.sh OR
18)如果您在尝试访问HDFS或者其相应的文件得到一个“连接被拒绝Java异常'的错误会发生什么?
这可能意味着“Namenode”不工作了。“Namenode”可能是在“安全模式”或“Namenode”的IP地址可能改变了。
19)什么是“商品硬件”?是否包括内存?
“商品硬件”是一个不具有高品质和高可用性非昂贵的系统。 Hadoop的可安装在任何一般硬件上。我们不需要超级电脑或高端的硬件来让Hadoop工作。是的,商品硬件包括RAM,因为有些服务可能仍然在RAM运行内存。
20)什么是“HDFS块”和“输入分片”之间的区别?
“HDFS块”是数据的基本物理单元,而“输入分割”是数据的逻辑划分。
21)什么是“全分布式”模式的特点是什么?
“全分布式”模式,在生产环境中使用,在那里我们有形成Hadoop集群的机器'N'号。 Hadoop守护进程在计算机集群上运行。有一些“的Namenode”运行一台主机,另一台主机上“Datanode”运行,然后有一些“TaskTracker /NodeManager”运行的机器。我们有独立的主机和从机在这种分布的。
22)Hadoop可以运行在三种模式。
在其中的Hadoop可以运行三种模式为:
1.独立(本地)模式
2.伪分布式模式
3.完全分布式模式
23)“zookeeper”在Hadoop集群中的作用?
“zookeeper”的目的是集群管理。 “zookeeper”将帮助你实现的Hadoop节点之间的协调。 也有助于:
管理跨节点配置
实现可靠的消息传递
实现冗余服务
同步流程执行
围绕MapReduce的Hadoop面试问题
24)什么是“MapReduce的”?
它是一个框架或用于通过使用分布式编程的计算机的集群处理大型数据集的编程模型。
25)什么是运行“MapReduce的”程序的语法?
Hadoop jar file.jar / input_path / output_path
26)你会如何调试Hadoop的代码?
有许多方法来调试Hadoop的代码,但最普遍的方法是:
使用计数器。
利用Hadoop框架所提供的Web界面。
27)“MapReduce的”计划的主要配置参数?
在“MapReduce的”架构,用户需要指定这些参数:
在分布式文件系统作业的输入位置
在分布式文件系统作业的输出位置
输入格式
输出格式
包含“map”功能类
包含“reduce”功能类
28)什么是“MapReduce的”默认的输入类型/格式?
默认情况下,MapReduce的类型输入类型是“文本”。
29)为什么我们不能在一个映射器进行“聚合”(加法)的原因是什么?我们为什么需要这个了“reduce”?
因为排序不在“mapper”中发生。排序仅在reducer侧发生。在“mapper”的方法初始化取决于每个输入。在“聚合”时,我们将失去以前的实例的值。对于每一行,一个新的“mapper”将得到初始化。对于每一行,input split再次被分为“mapper”。因此,我们不能跟踪前一行的值。
30)Hadoop中“RecordReader”的目的是什么?
在“InputSplit”定义工作片,但并没有描述如何访问它。的“RecordReader”级从其源加载数据,并将其转换成适合于“mapper”读的(键,值)对。“RecordReader”实例是由“输入格式”中定义。
31)在“MapReduce框架”解释“分布式缓存”
“分布式缓存”,是由“MapReduce框架”提供了一个重要特征。当你想在Hadoop集群共享跨多个节点的文件,“分布式缓存”便会被用到。这些文件可以以可执行的“jar”文件或简单的“属性”文件驻留。
看看这个Edureka博客网络研讨会记录与MapReduce的分布式缓存:http://www.edureka.co/blog/distributed-cache-with-mapreduce
32)“Hadoop框架”提供应用程序的运行时同步在“分配缓存”所做的更改时采取什么样的策略?
这是一个棘手的问题。不存在这样的机制。 “分布式缓存”的设计是在作业执行时间“只读”。
33)“reducer”之间如何互相沟通?
这又是一个棘手的问题。在“MapReduce的”编程模型不允许“reducer”相互沟通。 “reducer”单独运行。
加入数据是Hadoop的最有吸引力的方面之一。组织数据与“减少不良加入”微风。要了解更多信息,做检查出这个博客Edureka以“减少不良网络研讨会录音加盟的MapReduce:http://www.edureka.co/blog/reduce-side-joins-with-mapreduce
34)什么是一个“MapReduce的分区”?
“MapReduce的分区”可以确保同一个key的所有值去到同一个“reducer”,从而允许“reducer”对应的map输出的平均分布。它通过确定哪个“reducer”是负责该特定键从而把map输出重定向给reducer。
35)什么是“combiner”?
“combiner”是一个小型的“reducer”,执行本地的“reduce”任务。它接收从一个特定的“节点”上的map输入并把输出发送到“reducer”。通过减少所需发送到reducer的数据量增强“MapReduce的”效率。
36)你知道什么关于“SequenceFileInputFormat”?
“SequenceFileInputFormat”是序列文件内读取输入格式。键和值是用户定义的。它是被一个“MapReduce的”作业的输出之间传递数据到一些其他的“MapReduce的”作业的输入优化的特定压缩二进制文件格式。
围绕Hadoop的Pig面试问题
37)什么是“Bag”?
Bag是“Pig”的数据模型之一。这是可能出现的重复元组的无序集合。 “包”在分组时用于存储集合。 Bag的大小是本地磁盘大小,这意味着“bag”的大小是有限的大小。当一个“bag”是满的,“Pig”将这个“bag”放到本地磁盘,只保留“bag”的某些部分在内存中。这是没有必要的完整“bag”装配到存储器。我们代表用“{}”代表bag。
38)什么是“FOREACH”?
“FOREACH”用于转换数据,并产生新的数据项。名称本身表示为数据“bag”的各要素,将执行相应的动作。
语法:FOREACH bagname GENERATE表达式,表达式,... ..
这句话的意思是,经过提到的表达式“生成”将应用于数据“bag”当前记录。
39)为什么我们需要在“pig”规划“的MapReduce”?
“pig”是一个高层次的平台,Hadoop的数据分析问题,更容易执行。我们使用这个平台的语言是“pig拉丁”。写在“pig拉丁”程序就像是写在SQL,这里我们需要执行引擎来执行查询的查询。所以,当一个程序是用“隐语”,“pig编译器”可将程序转换成“MapReduce的”工作。在这里,“MapReduce的”充当执行引擎。
40)pig中的co-group是什么?
“co-group”通过分组来连接数据。这组需要他们有共同的域的元素,然后返回一组包含两个独立的“bag”的记录。第一个“bag”包括从第一数据与公共数据集记录集,而第二个“bag”包括从所述第二数据集与公共数据集设定记录。
41)什么是“猪拉丁”不同的关系操作?
他们是:
i. for each
ii. order by
iii. filters
iv. group
v. distinct
vi. join
vii. limit
Hive相关Hadoop的面试问题
42)什么是Hive中的“SERDE”?
通过“SERDE”你可以让“Hive”来处理记录。“SERDE”是一种“串行”和一个“解串器”的组合。 “hive”使用“SERDE”(和“FILEFORMAT”)来读取和写入表行。
43)可以默认的hive Metastore”被多个用户(进程)在同一时间使用?
“Derby数据库”是默认的“hive Metastore”。多个用户(进程)不能在同一时间访问它。它主要用于执行单元测试。
44)“hive”存储表中的数据的默认位置是?
HDFS://NameNode/用户/hive/warehouse
45)Hive中什么是通用的UDF?
这是使用Java程序来服务一些具体根据现行的功能不需要覆盖“hive”创建UDF。它可以通过编程方式检测输入参数的类型,并提供适当的响应。
围绕Hadoop的Oozie的面试问题
46)你如何配置Hadoop的一个“Oozie的”工作?
“Oozie的”集成了Hadoop的堆栈支持多种类型的Hadoop作业,如“Java的MapReduce的”,“流MapReduce”,“pig”,“hive”和“Sqoop”中的其余部分。要了解“Oozie的”在细节和了解如何配置AM“Oozie的”工作,做检查出这个博客Edureka:http://www.edureka.co/blog/brief-introduction-to-oozie/
围绕Hadoop的Sqoop面试问题
47)解释在Hadoop中“Sqoop”。
“Sqoop”是用于一个RDBMS并在Hadoop HDFS之间传送数据的一种工具。使用“Sqoop”,数据可以从一个RDBMS(如MySQL或Oracle)插入HDFS以及从HDFS文件RDBMS出口数据传输。
围绕Hadoop的HBase的面试问题
48)解释hbase中的“WAL”和“Hlog”
“WAL”(预写日志)是类似于“MySQL的BIN”登录;它记录中发生的数据的所有更改。它是Hadoop中“HLogkeys”标准序列文件。这些密钥由一个序列号,以及实际数据,并用于重播尚未在服务器崩溃后保留的数据。所以,在服务器发生故障的情况下,“WAL”作品作为生命线和检索丢失的数据。
49)提起“HBase的”和“关系型数据库”之间的区别是什么?
HBase的和关系型的数据库-TOP-50-Hadoop的采访,问题
围绕spark Hadoop的面试问题
50)你能在任何特定的Hadoop版本和hbase建立spark吗?
是的,你可以建立“spark”为特定的Hadoop版本。看看这个Edureka博客了解详情:http://www.edureka.co/blog/yarn-hive-get-electrified-by-spark/