1、1、配置Hadoop时,JAVA_HOME包含在哪一个配置文件中(B) A hadoop-default.xml B hadoop-env.sh C hadoop-site.xml D configuration.xs2、下面哪个程序负责 HDFS 数据存储。(C)A)NameNodeB)JobtrackerC)DatanodeD)secondaryNameNode3、下列关于Hadoop API的说法错误的是(A) A Hadoop的文件API不是通用的,只用于HDFS文件系统 B Configuration类的默认实例化方法是以HDFS系统的资源配置为基础的 C FileStatus对象存
2、储文件和目录的元数据 D FSDataInputStream是java.io.DataInputStream的子类4、HDfS 中的 block 默认保存几份? (A)A)3 份 B)2 份 C)1 份 D)不确定5、为销售报表展示开发一个MapReduce作业,Mapper输入数据的Key是年份(IntWritable),Value表示商品标识(Text)。下列哪一项决定该Mapper的数据类型?(D) A. JobConf.setMapInputKeyClass与JobConf.setMapInputValuesClass B. HADOOP_MAP_DATATYPES环境变量 C. 随作
3、业一起提交的mapper-specification.xml文件 (B) FAT32(C) GFS(D) EXT39 、HDFS的是基于流数据模式访问和处理超大文件的需求而开发的,默认的最基本的存储单位是64M,具有高容错、高可靠性、高可扩展性、高吞吐率等特征,适合的读写任务是(C) A一次写入,少次读写 B多次写入,少次读写 C一次写入,多次读写 D多次写入,多次读写10、HBase中的批量加载底层使用(A)实现。A MapReduceB HiveC CoprocessorD Bloom Filter三、简答题(将正确的答案写入答题纸中。每题5分,共20分)1、简述下HDFS 数据读流程;答
4、:步骤如下,能大致描述清楚流程,没有关键错误即可1、跟namenode通信查询元数据(block所在的datanode节点),找到文件块所在的datanode服务器 2、挑选一台datanode(就近原则,然后随机)服务器,请求建立socket流 3、datanode开始发送数据(从磁盘里面读取数据放入流,以packet为单位来做校验) 4、客户端以packet为单位接收,先在本地缓存,然后写入目标文件,后面的block块就相当于是append到前面的block块最后合成最终需要的文件。2、如何查看hadoop 进程并列出hadoop的几个进程名使 用jps命令可查看hadoop进程。 Nam
5、enode, SecondaryNameNode,Datanode ,ResourceManager, NodeManager 3、请简述MapReduce中combiner、partition的作用 答: combiner:有时一个map可能会产生大量的输出,combiner的作用是在map端对输出先做一次合并,以减少网络传输到reducer的数量。注意:mapper的输出为combiner的输入,reducer的输入为combiner的输出。partition:把map任务输出的中间结果按照key的范围划分成R份(R是预先定义的reduce任务的个数),划分时通常使用hash函数,如:ha
6、sh(key) mod R这样可以保证一段范围内的key,一定会由一个reduce任务来处理。4、HBase的检索支持3种方式是哪些?(1) 通过单个Rowkey访问,即按照某个Rowkey键值进行get操作,这样获取唯一一条记录;(2) 通过Rowkey的range进行scan,即通过设置startRowKey和endRowKey,在这个范围内进行扫描。这样可以按指定的条件获取一批记录;(3) 全表扫描,即直接扫描整张表中所有行记录。四、程序题(将正确的答案写入答题纸中。每题10分,共20分)1、以一段文本作为输入对象,写一个WordCount程序。例如文本数据的情况如下统计出文本中每个单词
7、出现的次数,输出结果如下面例子所示public class WordCount public static class TokenizerMapper extends Mapper 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
8、 = new StringTokenizer(value.toString(); while (itr.hasMoreTokens() word.set(itr.nextToken(); context.write(word, one); public static class IntSumReducer extends Reducer private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable values, Context context int sum = 0; for (In
9、tWritable val : values) sum += val.get(); result.set(sum); context.write(key, result); public static void main(String args) throws Exception Configuration conf = new Configuration(); Job job = Job.getInstance(conf, word count); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.c
10、lass); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args0); FileOutputFormat.setOutputPath(job, new Path(args1); System.exit(job.waitForCo
11、mpletion(true) ? 0 : 1);2、写一段代码,利用Java api操作HDFS文件系统,实现文件的上传和下载,Hadoop文件系统地址为 hdfs:/hadoop:8020 ,将本地hadoop.txt文件上传至根目录下的hadoop文件夹中,将HDFS中hadoop文件中的hadoop1.txt 下载到本地public class App public static final String HDFS_PATH = hdfs:8020; /创建FileSystem Configuration configuration = new Configuration(); File
12、System fileSystem = FileSystem.get(new URI(HDFS_PATH), configuration, hadoop /文件上传 Path localPath = new Path(hadoop.txt Path hdfsPath = new Path(/hadoop fileSystem.copyFromLocalFile(localPath, hdfsPath); /文件下载 hdfsPath = new Path(/hadoop/hadoop1.txt localPath = new Path(hadoop1.txt fileSystem.copyToLocalFile(hdfsPath, localPath);五、分析题(将正确的答案写入答题纸中。每题20分,共20分)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1