
| 学号 | 装订线 |
本试卷满分共100分 90分钟
| 项目 | 一 | 二 | 三 | 四 | 五 | 总分 |
| 满分 | 30 | 20 | 10 | 20 | 20 | 100 |
| 得分 |
1.HDFS的体系结构主要包括__________和___________两种节点。
2. 是一个类似于GoogleGFS的开源的分布式文件系统。它提供了一个可扩展、高可靠、高可用的大规模数据分布式存储管理系统。
3.MapReduce采用__________架构,主要包括client、__________、__________和Task组件。
4.Hadoop的安装模式分为3种,分别是 、 和 。
5. 是一个可在应用程序中提供的安全通信协议。它采用_________加密体系进行加密。
6.启动Hadoop的守护进程命令是:__________________;停止Hadoop的命令是______________。
7.一个典型的HDFS集群中,有一个____________、一个SecondaryNameNode和至少一个___________。
8.reduce函数以_________和__________列表作为输入。
9.HBase主要由一个_________服务器带多个__________________服务器组成。HBase使用_______________存放集群的元数据和状态信息。
10.HBase中的列被分组为 。
11.HBase属于NoSQL数据库的典型代表,并不支持________________语言。
12.ZooKeeper的核心是__________,这个机制保证了各个server之间的同步。实现这个机制的协议成为________协议。Zab协议有两种模式,分别是__________和___________。
13.Hive有三种数据管理方式,分别是________、____________和_____________。
14.Pig为MapReduce框架提供了一套类SQL的数据处理语言,称为___________。
二、单项选择题(每题2分,共20分)
1. 下面哪个程序负责 HDFS 数据存储。 ( )
A. NameNode B.Jobtracker
C. Datanode D. secondaryNameNode
2. HDFS 中的 block 默认保存几个备份。 ( )
A. 3 份 B. 2 份
C. 1 份 D. 不确定
3. HDFS1.0 默认 Block Size大小是多少。 ( )
A. 32MB B. MB
C. 128MB D. 256MB
4. 下面哪个进程负责 MapReduce 任务调度。 ( )
A. NameNode B. Jobtracker
C. TaskTracker D. secondaryNameNode
5. Hadoop1.0默认的调度器策略是哪个。 ( )
A. 先进先出调度器 B. 计算能力调度器
C. 公平调度器 D. 优先级调度器
6. Client 端上传文件的时候下列哪项正确? ( )
A. 数据经过 NameNode 传递给 DataNode
B. Client 端将文件切分为 Block,依次上传
C. Client 只上传数据到一台 DataNode,然后由 NameNode 负责 Block 复制工作
D. 以上都不正确
7. 在实验集群的master节点使用jps命令查看进程时,终端出现以下哪项能说明Hadoop主节点启动成功? ( )
A. Namenode,Datanode, TaskTracker
B. Namenode,Datanode, secondaryNameNode
C. Namenode,Datanode, HMaster
D. Namenode,JobTracker, secondaryNameNode
8. 若不针对MapReduce编程模型中的key和value值进行特别设置,下列哪一项是MapReduce不适宜的运算。 ( )
A. Max B. Min
C. Count D. Average
9. MapReduce编程模型,键值对 A.WritableComparable B. Comparable C. Writable D. LongWritable 10. HBase数据库的BlockCache缓存的数据块中,哪一项不一定能提高效率。( ) A. –ROOT-表 B. .META.表 C. HFile index D. 普通的数据块 三、判断题(每题1分,共10分) 1. Hadoop 支持数据的随机读写。 ( ) 2. NameNode 负责管理元数据信息metadata,client 端每次读写请求,它都会从磁盘中读取或会写入 metadata 信息并反馈给 client 端。 ( ) 3. MapReduce 的 input split 一定是一个 block。 ( ) 4. MapReduce适于PB级别以上的海量数据在线处理。 ( ) 5. 链式MapReduce计算中,对任意一个MapReduce作业,Map和Reduce阶段可以有无限个Mapper,但Reducer只能有一个。 ( ) 6. MapReduce计算过程中,相同的key默认会被发送到同一个reduce task处理。( ) 7. HBase对于空(NULL)的列,不需要占用存储空间。 ( ) 8. HBase可以有列,可以没有列族(column family)。 ( ) 9. 在Hadoop中,writable接口定义了两个方法,一个是其状态输入;另一个是状态输出。 ( ) 10.pig运行模式只有本地模式。 ( ) 四、简答题(每题5分,共20分) 1.启动Hadoop系统,当使用bin/start-all.sh命令启动时,请给出集群各进程启动顺序。 2.简述HBase的主要技术特点。 3. Hive数据仓库中,创建了以下外部表,请给出对应的HQL查询语句 CREATE EXTERNAL TABLE sogou_ext ( ts STRING, uid STRING, keyword STRING, rank INT, order INT, url STRING, year INT, month INT, day INT, hour INT ) COMMENT 'This is the sogou search data of extend data' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\' STORED AS TEXTFILE LOCATION '/sogou_ext/20160508'; (1)给出uid总数的HQL语句 (2)对于keyword,给出其频度最高的20个词的HQL语句 4.Hadoop中都有哪些压缩格式? 班级: 姓名: 学号: 1. 100万个字符串,其中有些是相同的(重复),需要把重复的全部去掉,保留没有重复的字符串。请结合MapReduce编程模型给出设计思路或核心代码。 2.下面程序从HBase中读取数据写入HDFS中请在下面程序的下划线中补充完整程序(共5处)。 package com.simple; public class WriteDataToHdfs{ public static String tableName=”phoneurl”;//hbase的表名 static class HdfsSinkMapper extends TableMapper //1. map过程,相当于读取过程;key代表hbase行键;result代表一行的字段值 protected void map(IMMutableBytesWritable key,Result value,Context context) throws IOException,InterruptedException{ //获取row byte[] bytes=(1) String phone=new String(bytes); //value为url字段,属于行键baseinfo byte[] urlbytes=value.getValue(“baseinfo”.getBytes(),”url”.getBytes()); //将列值转换为string String url =new String(urlbytes); //写出一行数据 (2)} } //2.reduce,reduce是把map的数据一行行写下来 static class HdfsSinkReducer extends Reduce protected void reduce(Text key,Iterable (3)} } public statice void main(String[] args) throws Exception{ Configuration conf=HBaseConfiguration.create(); conf.set(“hbase.zookeeper.quorum”,”172.0.0.1:2181”); Job job=Job.getInstance(conf); job.setJarByClass(WriteDataToHdfs.class); Scan scan=new Scan(); //设置map TableMapReduceUtil.initTableMapperJob(tableName,scan,HdfsSinkMapper.class,Text.class,NullWritable.class,job); //设置reducer (4) //设置OutputFormat的输出路径 FileOutputFormat.setOutputPath(job,new Path(“\hbase-2.0.5\\output”);); job.setOutputKeyClass(Text.class); job.setOutputValueClass(NullWritable.class); (5)} } 班级: 姓名: 学号: 本试卷满分共100分 90分钟 1._____________ 负责HDFS数据存储。 2.HDFS中的block默认保存__________ 份。 3.________________程序通常与 NameNode 在一个节点启动。 4.hadoop运行的模式有: ___________、_____________、____________。 5.Hadoop集群搭建中常用的4个配置文件为:____________、__________、__________、____________。 6. HDFS将要存储的大文件进行_______,然后存放在既定的存储块中,并通过预先设定的优化处理,模式对存储的数据进行预处理,从而解决了大文件储存与计算的需求。 7.一个HDFS集群包括两大部分,即 namenode与datanode 。一般来说,一个集群中会有一个___________和多个___________共同工作。 8.___________是集群的主服务器,主要是用于对HDFS中所有的文件及内容数据进行维护,并不断读取记录集群中 datanode 主机情况与工作状态,并通过读取与写入镜像日志文件的方式进行存储。 9.___________在HDFS集群中担任任务具体执行角色,是集群的工作节点。文件被分成若干个相同大小的数据块,分别存储在若干个 datanode 上,datanode 会定期向集群内 namenode 发送自己的运行状态与存储内容,并根据 namnode 发送的指令进行工作。 10.block是HDFS的基本存储单元,默认大小是___________ 。 11.格式化HDFS系统的命令为:____________。 12.Hadoop集群中有三种作业调度算法,分别为____________、____________、____________。 13.通过 Zookeeper 管理两个或者多个NameNode,使一个NameNode为________状态,并且同步每个NN的元数据,如果 active 状态的NN宕机后马上启用状态为 __________状态的备用节点。 14. PigLatin程序由一系列的__________或____________组成。 15. 启动ZooKeeper的命令是:_____________,停止ZooKeeper的命令是_________。 16. Storm集群中存在两种类型的节点:运行___________服务的主节点和运行_________服务的工作节点。 17. Sqoop核心功能有两个:____________和_____________。 二、单项选择题(每题2分,共20分) 1.hadoop______中将海量数据分割于多个节点,由每个节点并行计算,将得到的结果归并到输出。 ( ) A.应用场景 B.分布式计算 C.分阶段计算 D.高效处理 2._______模式:Hadoop安装运行在多台主机上,构成一个真实的hadoop集群,在所有的节点上都安装JDK和hadoop,相互通过高速局域网连接。 ( ) A.联机 B.单机 C.虚拟分布 D.完全分布 3.HDFS结构不包括________。 ( ) A.Master体系结构 B.主从服务器 C.元数据服务器 D.存储服务器 4.下列_______通常与NameNode在一个节点启动。 ( ) A.SecondaryNameNode B.DataNode C.TaskTracker D.Jobtracker 5.下列关于MapReduce的基本思想叙述不正确的一项是_________。 ( ) A.对相互间具有计算机以来关系的大数据进行分而治之。 B.用Map和Reduce两个函数提供了高层并行编程抽象模型。 C.提供了同一框架 D.为程序员隐藏系统细节 6.下列关于HBase系统分层架构叙述不正确的一项为_______。 ( ) A.HDFS提供了HBase的顶层物理存储结构 B. Hadoop平台提供了存储基础结构:Hadoop集群及系统软件 C.客户端:提供了数据库访问接口 D. Region Server:管理多个regions并提供数据访问服务 7. HBase是分布式列式存储系统,记录按什么集中存放。 ( ) A. 列族 B. 列 C. 行 D. 不确定 8. HBase的Region组成中,必须要有以下哪一项。 ( ) A. StoreFile B. MemStore C. HFile D. MetaStore 9. 客户端首次查询HBase数据库时,首先需要从哪个表开始查找。 ( ) A. .META. B. –ROOT- C. 用户表 D. 信息表 10、设计分布式数据仓库hive的数据表时,为取样更高效,一般可以对表中的连续字段进行什么操作。 ( ) A. 分桶 B. 分区 C. 索引 D. 分表 三、判断题(每题1分,共10分) 1. Block Size 是不可以修改的。 ( ) 2. Hadoop 是 Java 开发的,所以 MapReduce 只支持 Java 语言编写。 ( ) 3. 因为 HDFS 有多个副本,所以 NameNode 是不存在单点问题的。 ( ) 4. Hadoop 支持数据的随机读写。 ( ) 5. Hadoop 默认调度器策略为 FIFO。 ( ) 6.HDFS的namenode保存了一个文件包括哪些数据块,分布在哪些数据节点上,这些信息也存储在硬盘上。 ( ) 7. Slave 节点要存储数据,所以它的磁盘越大越好。 ( ) 8. Pig数据类型分为两种,即简单数值类型和复杂数值类型。 ( ) 9. pig执行方式有三种。 ( ) 10.Hive主要用来做OLAP,而不是OLTP。 ( ) 四、简答题(每题5分,共20分) 1.简述hdfs文件写入的流程。 2.简述Hadoop中replication(复本)放置策略? 3. 请简述mapreduce中的combine和partition的作用 4.hadoop中RecordReader的作用是什么? 班级: 姓名: 学号: 1.有一个文档库,包含有大量的文档,现需要使用MapReduce编程技术对文档内容建立一个倒排索引库。要求Reduce最后输出键值对为<单词, 文件名#偏移量>,并且前后输出的相同的key所对应的文件名是字典序的。如: word1 doc1#200 word1 doc2#10 word2 doc2#10 假设在map阶段已经获取了当前split分片的文件名是 String filename。请按要求给出reduce设计思路或核心代码。 Map(){ String filename=fileSplit.getPath().getName(); String temp=new String(); String line=value.toString().toLowerCase(); StringTokenizer iter=new StringTokenizer(line); For(;itr.hasMoreTokens();){ Temp=iter.nextToken(); If(!stopwordscontains(temp)){ Text word=new Text(); Word.set(temp+”#”+fileName); Context.write(word,new IntWritable(1)); } } } 2.已知部署好的Hadoop分布式文件系统HDFS,请使用hadoop提供的 javaAPI进行文件操作,将以下程序中的共3处代码补充完整。 public class HdfsDemo { //hdfs路径 public static final String HDFS_PATH="hdfs://hadoop100:9000"; //要创建的目录 public static final String DIR_PATH="/mydir"; public static final String FILE_PATH=/mydir/hello.txt; public static void main(String[] args) throws Exception { Configuration conf=new Configuration(); //创建conf对象 URI uri=new URI(HDFS_PATH); //创建uri对象 //补充代码1:创建fileSystem对象 //补充代码2:创建mydir文件夹 //补充代码3:上传本地/root/hello.txt文件到上面新建的HDFS文件夹 } Hadoop系统搭建及项目实践期末考试试卷A答案 一 填空题 (1) namenode 、 datanode 2 (2) HDFS(Hadoop Distributed File System) 1 (3) Master/Slave、JobTracker、TaskTracker 3 (4) 单机安装、分布式安装、伪分布模式 3 (5) SSH、非对称 2 (6) start-all.sh、stop-all.sh 2 (7) NameNode、DataNode 2 (8) key、value 2 (9) HMaster、HregionServer、Zookeeper 3 (10) 列族 (11) SQL结构化查询语言 (12) 原子广播、Zab、恢复模式、广播模式 (13) CLI(命令行)方式、Web界面方式、Hive远程服务启动方式 (14) PigLatin 二、单项选择题 1-5 CABBA 6-10 BDDAD 三、判断题 错错错错对 对对错对错 四、简答题 1.答:启动顺序:namenode –> datanode -> secondarynamenode -> resourcemanager -> nodemanager 2.答:(1)列式存储 (2)表数据是稀疏的映射表 (3)读写的严格一致性 (4)提供很高的数据读写速度 (5)良好的线性可扩展性 (6)提供海量数据 (7)数据会自动分片 (8)对于数据故障,hbase是有自动的失效检测和恢复能力。 (9)提供了方便的与HDFS和MAPREDUCE集成的能力。 3.(1)给出uid总数的HQL语句 答:select count(distinct UID) from sogou_ext; (2)对于keyword,给出其频度最高的20个词的HQL语句 答:select keyword from sogou_ext group by keyword order by order desc limit 20; 4.答:HDFS常见的压缩格式为GZIP、BZIP2、LZO、Snappy和LZ4。 gzip格式是同时使用了LZ77算法和哈夫曼编码的一个无损数据压缩算法。它是一个标准压缩算法,压缩和解压缩可以在自由、通用的压缩库zlib上找到。 bzip2是Julian Seward开发并按照自由软件/开源软件协议发布的数据压缩算法及程序。bzip2比传统的gzip或者zip的压缩效率高。 LZO是Lempel-Ziv-Oberhumer的缩写。该算法是无损压缩算法,参考实现程序是线程安全的,如果LZO文件已经预处理过程中被索引了,那么LZO文件是可切分的。 LZ4是面向字节的LZ77压缩方案,是无损数据压缩算法。他的压缩率稍逊于LZO,但它的压缩速度和解压缩速度比LZO要快。 五程序设计题 1. Public static class ProjectionMapextends Mapper { Private int clo; Project void setup(Context context) throws IOException,InterruptedException{ Col=context.getConfiguration().getInt(“col”,0); } Public void map(LongWritable offset,Text line,Context context){ RelationA record=new RelationA (line.toString()); Context.write(newText(record.getCol(col)),NullWritable.get()); } } REDUCE端实现代码: Public static class ProjectionRedice extendsReducer Public void reduce(Text key,Iterable Context.write(key,NullWritable.get());} 2. (1)key.copyBytes(); (2)context.write(new text(phone+”\”+url),NullWritable.get()); (3)context.write(key,NullWritable.get()); (4)job.setReducerClass(HdfsSinkReducer.class); (5)job.waitForCompletion(true); Hadoop系统搭建及项目实践期末考试试卷B答案 一 填空题 (15) datanode (16) 3 (17) ResourceManager (18) 单机模式、分布式模式、伪分布模式 (19) core-site.xml 、hdfs-site.xml 、 mapred-site.xml 、 yarn-site.xml (20) 分割 (21) NameNode、DataNode (22) nameNode (23) DataNode (24) 128M (25) hdfs namenode –format (26) FIFO调度 , 计算能力调度 和 公平调度 (27) active \\standby (28) 操作、变换 (29) zkServer.sh start zkServer.sh.stop (30) Nimbus Supervisor (31) 导入数据、导出数据 三、单项选择题 1-5 BDADA 6-10 AABBA 三、判断题 错错错错对 错错对对对 四、简答题 1.答:1) Client向NameNode发起文件写入的请求。 2) NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。 3) Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。 2.答:(Hadoop的默认布局策略是在运行客户端的节点上放第一个复本;第二个复本放在与第一个不同且随机另外选择的机架中的节点上(离架);第三个复本与第二个复本放在同一个机架上,且随机选择另一个节点。 3.答:combiner是发生在map的最后一个阶段,其原理也是一个小型的reducer,主要作用是减少输出到reduce的个数,减少reducer的输入,提高reducer的执行效率。 Partition的主要作用就是指定输出到reduce的个数的。 4.答:RecorderReader是一个接口,主要是用来读取文件的输入键值对的,我们也可以自定义输入的key,value对的读取规则。属于split和mapper之间的一个过程,将inputsplit输出的行为一个转换记录,成为key-value的记录形式提供给mapper 五程序设计题 1. Reducer{ Private IntWritable result=newIntWritable(); Public void reduce(Text,key,Iterable IOException,InterruptedException{ Int sum=0; For(InWritable val:values){ Sum+=val.get(); } Result.set(sum); Context.write(key,result); } } 2. (1) FileSystem fileSystem=FileSystem.get(uri,conf); (2)fileSystem.mkdirs(new Path(DIR_PATH)); (3) FSDataOutputStream out=fileSystem.create(new Path(FILE_PATH)); FileInputStream in=new FileInputStream("/root/hello.txt"); IOUtils.copyBytes(in, out, 1024, true);
五、程序设计题(每题10分,共20分) 学号 装订线
Hadoop系统搭建及项目实践期末考试试卷(B) 学号 装订线
一、填空题(每空1分,共30分)项目 一 二 三 四 五 总分 满分 30 20 10 20 20 100 得分
五、程序设计题(每题10分,共20分) 学号 装订线
