我想验证以下示例问题的答案
使用hadoop fs -put命令将sales.txt添加到HDFS。此文件足够小,可以放入单个块中,该块将复制到群集中的三个节点。在其中一个节点发生故障后,集群何时以及如何处理复制?
一个。群集不会尝试重新复制此块
B.此块将立即重新复制,群集上的所有其他HDFS操作将在此过程中暂停
C.该块将保持不足,直到管理员手动删除并重新创建该文件
D.在NameNode根据从DataNodes收到的块报告确定文件未被复制后,文件将自动重新复制。
我认为答案是 D
您需要编写代码来执行需要几个步骤的复杂计算。您已决定将这些作业链接在一起,并为存储中间计算结果的键开发自定义复合类。该密钥必须实现哪个接口?
一个。可写
B.可转让的
C. CompositeSortable
D. WritableComparable
我认为答案是 D
您正在开发一个使用密钥年份的应用程序。哪个Hadoop提供的数据类型最适合代表一年的密钥?
一个。文字
B. IntWritable
C. NullWritable
D. BytesWritable
E.这些都不合适。您需要实现自定义密钥。
我相信答案是 B
答案 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。