2

我想验证以下示例问题的答案

问题 1

您使用 hadoop fs -put 命令将 sales.txt 添加到 HDFS。该文件足够小,可以放入单个块中,该块被复制到集群中的三个节点。在这些节点之一发生故障后,集群何时以及如何处理复制?

A. 集群不会尝试重新复制这个块。
B. 此块将立即重新复制,并且在此过程中集群上的所有其他 HDFS 操作将停止。
C. 在管理员手动删除并重新创建文件之前,该块将保持复制不足。
D. NameNode 根据从 DataNode 收到的块报告确定文件复制不足后,将自动重新复制文件。

我相信答案是D

问题2

您需要编写代码来执行需要几个步骤的复杂计算。您已决定将这些作业链接在一起,并为存储中间计算结果的键开发自定义复合类。该键必须实现哪个接口?

A. 可写
B. 可转移
C. CompositeSortable
D. WritableComparable

我相信答案是D

问题 3

您正在开发一个使用一年作为密钥的应用程序。哪种 Hadoop 提供的数据类型最适合代表一年的键?

A. 文本
B. IntWritable
C. NullWritable
D. BytesWritable
E. 这些都不合适。您需要实现一个自定义键。

我相信答案是B

4

3 回答 3

7

1 - 正确,您可以在任何描述 HDFS 容错的文献中找到这一点。Hadoop的第 3 章:权威指南中有一节描述了客户端将数据写入 HDFS 的过程,并描述了这个失败过程是如何进行的。

2 - 正确,键必须是可写可比较的,以便它们不属于可能包括数组和其他不可比较类型的其他类别。

3 - 正确,一年是一个数值,所以在所有这些中,最合适的选项是可写的。

于 2013-04-11T01:50:11.620 回答
0

Q3 可能非常棘手,但很可能是 B。

最好使用的一个是ShortWritable因为它需要 2 个字节,数字范围从-32000 ~ +32000. 因此可以使用BytesWritable并且只分配 2 个字节。需要 4 个字节,IntWritable范围从-2 billion to +2 billion,这只是浪费额外的 2 个字节。

即使您使用Text,它的字节大小(4 个字节,因为它有 4 个字符)与IntWritable. 但是,如果您正在Int使用 Key 进行任何相关操作,那么我认为IntWritable会更好。

我认为答案是 B 的唯一原因是许多 Java 开发人员总是使用 Int 而不管数字范围如何,并且很少使用Short。所以这个问题是“取决于”。如果我没有对键执行任何与整数相关的操作,那么我将使用Bytes,否则我将使用IntWritable。如果我必须选择一个答案,那么 B.

于 2013-09-17T21:28:29.963 回答
0

对于 Q 1 和 2,答案 D 是正确的,但对于 Q 3,我认为是 D,我可能错了。

于 2013-04-11T01:56:32.550 回答