分析:它是可以被修改的Hadoop的基础配置文件是hadoop-default.xml,默认建立一个Job的时候会建立Job的Config,Config首先读入hadoop-default.xml的配置,然后再读入hadoop-site.xml的配置(这个文件初始的时候配置为空),hadoop-site.xml中主要配置需要覆盖的hadoop-default.xml的系统级配置。
15.Nagios不可以监控Hadoop集群,因为它不提供Hadoop支持。(错误)
分析:Nagios是集群监控工具,而且是云计算三大利器之一
16.如果NameNode意外终止,SecondaryNameNode会接替它使集群继续工作。(错误)
分析:SecondaryNameNode是帮助恢复,而不是替代,如何恢复,可以查看
17.ClouderaCDH是需要付费使用的。(错误)
分析:第一套付费产品是ClouderaEnterpris,ClouderaEnterprise在美国加州举行的Hadoop大会(HadoopSummit)上公开,以若干私有管理、监控、运作工具加强Hadoop的功能。收费采取合约订购方式,价格随用的Hadoop叢集大小变动。
18.Hadoop是Java开发的,所以MapReduce只支持Java语言编写。(错误)
分析:rhadoop是用R语言开发的,MapReduce是一个框架,可以理解是一种思想,可以使用其他语言开发。
19.Hadoop支持数据的随机读写。(错)
分析:lucene是支持随机读写的,而hdfs只支持随机读。但是HBase可以来补救。HBase提供随机读写,来解决Hadoop不能处理的问题。HBase自底层设计开始即聚焦于各种可伸缩性问题:表可以很“高”,有数十亿个数据行;也可以很“宽”,有数百万个列;水平分区并在上千个普通商用机节点上自动复制。表的模式是物理存储的直接反映,使系统有可能提高高效的数据结构的序列化、存储和检索。
20.NameNode负责管理metadata,client端每次读写请求,它都会从磁盘中读取或则会写入metadata信息并反馈client端。(错误)
此题分析:
NameNode不需要从磁盘读取metadata,所有数据都在内存中,硬盘上的只是序列化的结果,只有每次namenode启动的时候才会读取。
1)文件写入
Client向NameNode发起文件写入的请求。
NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。
Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。
2)文件读取
Client向NameNode发起文件读取的请求。
21.NameNode本地磁盘保存了Block的位置信息。(个人认为正确,欢迎提出其它意见)
分析:DataNode是文件存储的基本单元,它将Block存储在本地文件系统中,保存了Block的Meta-data,同时周期性地将所有存在的Block信息发送给NameNode。NameNode返回文件存储的DataNode的信息。
Client读取文件信息。
22.DataNode通过长连接与NameNode保持通信。()
这个有分歧:具体正在找这方面的有利资料。下面提供资料可参考。
首先明确一下概念:
(1).长连接
Client方与Server方先建立通讯连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在,此种方式常用于点对点通讯。
(2).短连接
Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点通讯,比如多个Client连接一个Server.
23.Hadoop自身具有严格的权限管理和安全措施保障集群正常运行。(错误)
hadoop只能阻止好人犯错,但是不能阻止坏人干坏事
24.Slave节点要存储数据,所以它的磁盘越大越好。(错误)
分析:一旦Slave节点宕机,数据恢复是一个难题
25.hadoopdfsadmin–report命令用于检测HDFS损坏块。(错误)
26.Hadoop默认调度器策略为FIFO(正确)
27.集群内每个节点都应该配RAID,这样避免单磁盘损坏,影响整个节点运行。(错误)
分析:首先明白什么是RAID,可以参考百科磁盘阵列。这句话错误的地方在于太绝对,具体情况具体分析。题目不是重点,知识才是最重要的。因为hadoop本身就具有冗余能力,所以如果不是很严格不需要都配备RAID。具体参考第二题。
28.因为HDFS有多个副本,所以NameNode是不存在单点问题的。(错误)
29.每个map槽就是一个线程。(错误)
分析:首先我们知道什么是map槽,map槽->mapslotmapslot只是一个逻辑值(org.apache.hadoop.mapred.TaskTracker.TaskLauncher.numFreeSlots),而不是对应着一个线程或者进程
30.Mapreduce的inputsplit就是一个block。(错误)
31.NameNode的WebUI端口是50030,它通过jetty启动的Web服务。(错误)
32.Hadoop环境变量中的HADOOP_HEAPSIZE用于设置所有Hadoop守护线程的内存。它默认是200GB。(错误)
hadoop为各个守护进程(namenode,secondarynamenode,jobtracker,datanode,tasktracker)统一分配的内存在hadoop-env.sh中设置,参数为HADOOP_HEAPSIZE,默认为1000M。
33.DataNode首次加入cluster的时候,如果log中报告不兼容文件版本,那需要NameNode执行“Hadoopnamenode-format”操作格式化磁盘。(错误)
分析:
首先明白介绍,什么ClusterID
ClusterID
添加了一个新的标识符ClusterID用于标识集群中所有的节点。当格式化一个Namenode,需要提供这个标识符或者自动生成。这个ID可以被用来格式化加入集群的其他Namenode。
二次整理
有的同学问题的重点不是上面分析内容:内容如下:
这个报错是说明DataNode所装的Hadoop版本和其它节点不一致,应该检查DataNode的Hadoop版本