hadoop问题

时间:2013-04-10 18:38:31

标签: hadoop

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

问题1

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

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

我认为答案是 D

问题2

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

一个。可写
B.可转让的 C. CompositeSortable
D. WritableComparable

我认为答案是 D

问题3

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

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

我相信答案是 B

3 个答案:

答案 0 :(得分:7)

1 - 正确,你可以在任何描述HDFS容错的文献中找到它。 Hadoop:The Definitive Guide 的第3章中有一节描述了客户端向HDFS写入数据的过程,并描述了这种失败过程如何发挥作用。

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

3 - 正确,一年是一个数字值,所以这些 most appriprate 选项都是可以写入的。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

Q3可能非常棘手但很可能是B.

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

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

我认为答案是B的唯一原因是许多java开发人员总是使用Int,无论数字范围如何,很少使用Short。所以这个问题是“依赖”。如果我没有对密钥执行任何与整数相关的操作,那么我将使用Bytes,否则我将使用IntWritabl e。如果我必须选择答案,那么B。