1)文件写入
Client 向 NameNode 发起文件写入的请求。
NameNode 根据文件大小和文件块配置情况,返回给 Client 它所管理部分 DataNode 的信息。
Client 将文件划分为多个 Block,根据 DataNode 的地址信息,按顺序写入到每一个DataNode 块中。
2)文件读取
Client 向 NameNode 发起文件读取的请求。
9、NameNode 本地磁盘保存了 Block 的位置信息。
个人认为正确,欢迎提出其它意见
此题分析:DataNode是文件存储的基本单元,它将Block存储在本地文件系统中,保存了Block的Meta-data,同时周期性地将所有存在的Block信息发送给NameNode。NameNode返回文件存储的DataNode的信息。Client读取文件信息。
10、DataNode 通过长连接与 NameNode 保持通信。
这个有分歧:具体正在找这方面的有利资料。下面提供资料可参考。
首先明确一下概念:
(1)长连接
Client方与Server方先建立通讯连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在,此种方式常用于点对点通讯。
(2)短连接
Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点通讯,比如多个Client连接一个Server.
11、Hadoop 自身具有严格的权限管理和安全措施保障集群正常运行。
错误
此题分析:hadoop只能阻止好人犯错,但是不能阻止坏人干坏事。
12、Slave 节点要存储数据,所以它的磁盘越大越好。
错误
此题分析:一旦Slave节点宕机,数据恢复是一个难题。
13、hadoop dfsadmin –report 命令用于检测 HDFS 损坏块。
错误
14、 Hadoop 默认调度器策略为 FIFO
正确
15、 集群内每个节点都应该配 RAID,这样避免单磁盘损坏,影响整个节点运行。
错误
此题分析:首先明白什么是RAID,可以参考百科磁盘阵列。这句话错误的地方在于太绝对,具体情况具体分析。题目不是重点,知识才是最重要的。因为hadoop本身就具有冗余能力,所以如果不是很严格不需要都配备RAID。具体参考第二题。
16、因为 HDFS 有多个副本,所以 NameNode 是不存在单点问题的。
错误
17、每个 map 槽就是一个线程。
错误
此题分析:首先我们知道什么是map 槽,map 槽->map slotmap slot 只是一个逻辑值 ( org.apache.hadoop.mapred.TaskTracker.TaskLauncher.numFreeSlots ),而不是对应着一个线程或者进程。
18、Mapreduce 的 input split 就是一个 block。
错误
19、NameNode 的 Web UI 端口是 50030,它通过 jetty 启动的 Web 服务。
错误
20、Hadoop 环境变量中的 HADOOP_HEAPSIZE 用于设置所有 Hadoop 守护线程的内存。它默认是 200 GB。
错误
此题分析:hadoop为各个守护进程(namenode, secondarynamenode, jobtracker, datanode, tasktracker)统一分配的内存在hadoop-env.sh中设置,参数为HADOOP_HEAPSIZE,默认为1000M。
21、DataNode 首次加入 cluster 的时候,如果 log 中报告不兼容文件版本,那需要 NameNode执行“Hadoop namenode -format”操作格式化磁盘。
错误
此题分析:
首先明白介绍,什么ClusterID。
ClusterID
添加了一个新的标识符ClusterID用于标识集群中所有的节点。当格式化一个Namenode,需要提供这个标识符或者自动生成。这个ID可以被用来格式化加入集群的其他Namenode。
二次整理
有的同学问题的重点不是上面分析内容,内容如下:
这个报错是说明 DataNode 所装的Hadoop版本和其它节点不一致,应该检查DataNode的Hadoop版本