文档介绍:大数据试题
一、填空题〔将正确的答案写入答题纸中。每空1分,共20分〕
1、HDFS有 _ NameNode__ _,_ DataNode__ _和_ SecondaryNameNode__ _组成;
2、Hadoop集群可以层使用〔A〕实现。
A MapReduce
B Hive
C Coprocessor
D Bloom Filter
三、简答题〔将正确的答案写入答题纸中。每题5分,共20分〕
1、简述下HDFS 数据读流程;
答:步骤如下,能大致描述清楚流程,没有关键错误即可
1、跟namenode通信查询元数据〔block所在的datanode节点〕,找到文件块所在的datanode效劳
器
2、挑选一台datanode〔就近原那么,然后随机〕效劳器,请求建立socket流
3、datanode开始发送数据〔从磁盘里面读取数据放入流,以packet为单位来做校验〕
4、客户端以packet为单位接收,先在本地缓存,然后写入目标文件,后面的block块就相当于是append到前面的block块最后合成最终需要的文件。
2、如何查看hadoop 进程并列出hadoop的几个进程名
答:使 用jps命令可查看hadoop进程。 Namenode, SecondaryNameNode,Datanode ,ResourceManager, NodeManager
3、请简述MapReduce中combiner、partition的作用
答:
combiner:
有时一个map可能会产生大量的输出,combiner的作用是在map端对输出先做一次合并,以减少网络传输到reducer的数量。
注意:mapper的输出为combiner的输入,reducer的输入为combiner的输出。
partition:
把map任务输出的中间结果按照key的范围划分成R份(R是预先定义的reduce任务的个数),划分时通常使用hash函数,如:hash(key) mod R
这样可以保证一段范围内的key,一定会由一个reduce任务来处理。
4、HBase的检索支持3种方式是哪些?
答:
〔1〕 通过单个Rowkey访问,即按照某个Rowkey键值进行get操作,这样获取唯一一条记录;
〔2〕 通过Rowkey的range进行scan,即通过设置startRowKey和endRowKey,在这个范围内进行扫描。这样可以按指定的条件获取一批记录;
〔3〕 全表扫描,即直接扫描整张表中所有行记录。
四、程序题〔将正确的答案写入答题纸中。每题10分,共20分〕
1、以一段文本作为输入对象,写一个WordCount程序。
例如文本数据的情况如下
统计出文本中每个单词出现的次数,输出结果如下面例子所示
答:
public class WordCount {
public static class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable> {
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(());
while (()) {
(());
(word, one);
}
}
}
public static class IntSumReducer
extends Reducer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable();
public void reduce(Text key, Iterable<IntWritab