内蒙古师范大学计算机与信息工程学院

2016—2017 学年第2学期

《大数据存储与处理》试题

答题纸

题号

总分

评卷人

分数

一.选择题(30分)

Hadoop最早起源于下面哪个?B

(a)Solr

(b)Nutch

(c)Luence

(d)Elasticsearch

下面哪一个是主从结构?()B

(a)一个NameNode,一个DataNode

(b)一个NameNode,多个DataNode

(c)多个NameNode,一个DataNode

(d)多个NameNode,多个DataNode

HDFS默认Block Size()B

(a)32MB

(b)64MB

(c)128MB

(d)256MB

HDFS中的block默认保存几分?()C

(a)1份

(b)2份

(c)3份

(d)以上都不是

下面哪一个程序负责HDFS数据存储?()C

(a)NameNode

(b)JobTracker

(c)DateNode

(d)secondaryNameNode

关于SecondaryNameNode哪项是正确的?()C

(a)它是NameNode的热备份

(b)它对内存没有要求

(c)它的目的是帮助NameNode合并编辑日志,减少NameNode启动时间

(d)SecondaryNameNode应与NameNode部署到一个节点

下面的TaskTracker端心跳机制哪个是正确的?A

(a)JobTracker和TaskTracker之间的心跳模式采用“拉”的方法

(b)JobTracker和TaskTracker之间的心跳模式采用“推”的方法

(c)JobTracker主动向TaskTracker发送心跳信息

(d)JobTrackrt领取TaskTracker返回心跳包的各种命令

解压.tar.gz结尾的HBase压缩包使用Linux命令是哪个?A

A.tar -xzvf

B.tar -zx

C.tar -s

D.tar -nf

下列哪项通常是集群的最主要净瓶()C

(a)CPU

(b)网络

(c)磁盘

(d)内存

首先集群的目的是为了节省成本,用廉价的 pc 机,取代小型机及大型机。小型机和大型机有什么特点?

二.多选题(10分)

大数据的特性是什么?A,B,C,D

(a)海量存储

(b)支持快速数据访问

(c)可靠性,失效性,可扩展性

(d)分布式处理

Hadoop最核心设计是哪些?()A,B

(a)MapReduce

(b)HDFS

(c)BigTable

(d)Zookeeper

Client端上传文件的时候下列哪项正确()B

(a)数据经过NameNode传递给DataNode

(b)Client端将文件切分为Block,依次上传

(c)Client只上传数据到一台DataNode,然后由NameNode负责block复制工作。

Client 向 NameNode 发起文件写入的请求。NameNode 根据文件大小和文件块配置情况,返回给 Client 它所管理部分 DataNode 的信息。Client 将文件划分为多个 Block,根据 DataNode 的地址信息,按顺序写入到每一个DataNode 块中。具体查看HDFS 体系结构简介及优缺点。

MapReduce编程接口有哪些?

(a)Mapper

(b)Partitioner

(c)Combiner

(d)Reducer

MapReduce有哪些作业调度模式?A,B,C

(a)先进先出作业调度

(b)公平调度

(c)容量调度

(d)多级反馈队列调度

RPC框架的组成部分有哪些?A,B,C,D

(a)序列化层

(b)函数调用层

(c)网络传输层

(d)服务端框架层

下列哪些是Hadoop运行的模式()A,B,C

(a)单机版

(b)伪分布式

(c)完全分布式

下列哪些选项正确地描述了HBase特性?A,B,C,D

(a)高可用性

(b)高性能

(c)面向列

(d)可伸缩性

HBase实现二级索引的实现方式有哪些?A,B

(a)MapReduce

(b)Coprocesser

(c)Bloom Filter

(d)Filter

构建企业Hadoop安全的平台需要考虑哪些问题?()A,B,C,D

(a)认证机制

(b)授权机制

(c)设备安全

(d)隐私性差异

三.判断题(10分)

VM可以称为PSeudo。()错误

分析:它是可以被修改的Hadoop的基础配置文件是hadoop-default.xml,默认建立一个Job的时候会建立Job的Config,Config首先读入hadoop-default.xml的配置,然后再读入hadoop-site.xml的配置(这个文件初始的时候配置为空),hadoop-site.xml中主要配置需要覆盖的hadoop-default.xml的系统级配置。

Job Tracker宕掉,集群不会工作。()错误

客户端决定输入的分片。()错误

Block Size是不可以修改的。()错误

Hadoop的基础配置文件是hadoop-default.xml,默认建立一个Job的时候会建立Job的Config,Config首先读入hadoop-default.xml的配置,然后再读入hadoop-site.xml的配置(这个文件初始的时候配置为空),hadoop-site.xml中主要配置需要覆盖的hadoop-default.xml的系统级配置。具体配置可以参考下

  1. <property>
  2. <name>dfs.block.size</name>//block的大小,单位字节,后面会提到用处,必须是512的倍数,因为采用crc作文件完整性校验,默认配置512是checksum的最小单元。
  3. <value>5120000</value>
  4. <description>The default block size for new files.</description>
  5. </property>

NameNode意外终止,SecondaryNameNode会接替它使集群继续工作。()

SecondaryNameNode是帮助恢复,而不是替代,如何恢复,可以查看
hadoop 根据SecondaryNameNode恢复Namenode

Hadoop dfsadmin -report命令用于检测HDFS损坏块。()错误

用这个命令可以快速定位出哪些节点down掉了,HDFS的容量以及使用了多少,以及每个节点的硬盘使用情况。

 当然NameNode有个http页面也可以查询,但是这个命令的输出更适合我们的脚本监控dfs的使用状况

用这个命令可以快速定位出哪些节点down掉了,HDFS的容量以及使用了多少,以及每个节点的硬盘使用情况。

当然NameNode有个http页面也可以查询,但是这个命令的输出更适合我们的脚本监控dfs的使用状况

Hadoop是Java开发的,所以MapReduce只支持Java语言编写。()错误

分析:rhadoop是用R语言开发的,MapReduce是一个框架,可以理解是一种思想,可以使用其他语言开发。

NameNode负责管理metadata,Client每次读写请求,它都会从磁盘中读取或者会写入到metadata信息并反馈Client端。()错误

此题分析:

NameNode 不需要从磁盘读取 metadata,所有数据都在内存中,硬盘上的只是序列化的结果,只有每次 namenode 启动的时候才会读取。
1)文件写入
Client向NameNode发起文件写入的请求。
NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。
Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。

2)文件读取
Client向NameNode发起文件读取的请求。

Hadoop默认调度器策略为FIFO()正确

Hadoop-env.sh是用来提供Hadoop中JAVA-HOME的运行环境。()正确

四.编程题(20分)

1.MapReduce实现wordcount,并进行优化。(10分)

Class NewParititioner extends HashPartitioner<K,V>{

getPartition(K key,V value,int numReduceTasks)

{term=key.toString().split(“:”)[0];

super.getPartition(t,value,numReduceTasks);}}

Job.setPartitionClass(NewPartitioner)

public static class NewCombiner extends Reducer<Text,IntWritable,>{

public void reduce(Text key,Iterable<IntWritable>values,Context context)

{context.write(key,new IntWritable(1));}}

Job.setPartitionerClass(NewPartitioner)

2.HBase实现数据导入(10分)

Configuration config = HBaseConfiguration.create();

// 配置hbase.zookeeper.quorum: 后接zookeeper集群的机器列表

config.set("hbase.zookeeper.quorum", "master”);

// 配置hbase.zookeeper.property.clientPort: zookeeper集群的服务端口

config.set("hbase.zookeeper.property.clientPort", "2181");

HTable htable = null;

try {

/ 配置hbase的具体表名

htable = new HTable(config, "hbase_table");

// 设置rowkey的值

Put put = new Put(Bytes.toBytes("rowkey:1001"));

// 设置family:qualifier:value

put.add(Bytes.toBytes("family"), Bytes.toBytes("qualifier"), Bytes.toBytes("value"));

// 使用put类, 写入hbase对应的表中

htable.put(put);

} catch (Exception e) {

e.printStackTrace();

} finally {

if (htable != null) {

try {

htable.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

五.简答题

1.简单描述如何安装配置一个apache开源版Hadoop,只描述即可,无需列出完整步骤,能列出步骤更好。(5分)

1) 安装JDK并配置环境变量(/etc/profile)

2) 关闭防火墙

3) 配置hosts文件,方便hadoop通过主机名访问(/etc/hosts)

4) 设置ssh免密码登录

5) 解压缩hadoop安装包,并配置环境变量

6) 修改配置文件($HADOOP_HOME/conf)

hadoop-env.sh  core-site.xml  hdfs-site.xml  mapred-site.xml

7) 格式化hdfs文件系统 (hadoop namenode -format)

8) 启动hadoop ($HADOOP_HOME/bin/start-all.sh)

9) 使用jps查看进程

2.请列出正常的Hadoop集群中需要启动哪些进程,他们的作用分别是什么?(5分)

1) NameNode: HDFS的守护进程,负责记录文件是如何分割成数据块,以及这些数据块分别被存储到那些数据节点上,它的主要功能是对内存及IO进行集中管理

2) Secondary NameNode:辅助后台程序,与NameNode进行通信,以便定期保存HDFS元数据的快照。

3) DataNode:负责把HDFS数据块读写到本地的文件系统。

4) JobTracker:负责分配task,并监控所有运行的task。

5) TaskTracker:负责执行具体的task,并与JobTracker进行交互。

3.HBase的rowkey怎么创建比较好,列族怎么创建比较好?(5分)

rowkey,我们知道rowkey是行的主键,而且hbase只能用个rowkey,或者一个rowkey范围即scan来查找数据。所以 rowkey的设计是至关重要的,关系到你应用层的查询效率。我们知道,rowkey是以字典顺序排序的。而存储的字节码,字典排序,我们知道,如果是字 母,那就是字母的顺序,比如,有两个rowkey,rowkey1:aaa222,rowkey2:bbb111,那么rowkey1是排在 rowkey2前面的,因为按字典,a排在b前面,如果rowkey2的第一位也是a,那么就根据第二位来比较,如果还相同,则比较第三为,后面同样。这 个理解了,我们在根据rowkey范围查询的时候,我们一般是知道startRowkey,如果我们通过scan只传startRowKey : d开头的,那么查询的是所有比d大的都查了,而我们只需要d开头的数据,那就要通过endRowKey来限制。我们可以通过设定endRowKey为:d 开头,后面的根据你的rowkey组合来设定,一般是加比startKey大一位。比如说rowkey设计为:用户ID-日期,那么查某个用户某天的数 据,startKEY为3231-20121212,endKey为:3231+201213,那么你查到的就是用户为3231在20121212这一天 的数据。

4.HBase数据合并(5分)

多索引(多表)的join场景中,主要有两种参考方案:

1,按索引的种类扫描各自独立的单索引表,最后将扫描结果merge。
这个方案的特点是简单,但是如果多个索引扫描结果数据量比较大的话,merge就会遇到瓶颈。

比如,现在有一张1亿的用户信息表,建有出生地和年龄两个索引,我想得到一个条件是在杭州出生,年龄为20岁的按用户id正序排列前10个的用户列表。
有一种方案是,系统先扫描出生地为杭州的索引,得到一个用户id结果集,这个集合的规模假设是10万。
然后扫描年龄,规模是5万,最后merge这些用户id,去重,排序得到结果。

这明显有问题,如何改良?
保证出生地和年龄的结果是排过序的,可以减少merge的数据量?但Hbase是按row key排序,value是不能排序的。
变通一下 – 将用户id冗余到row key里?OK,这是一种解决方案了,这个方案的图示如下:

merge时提取交集就是所需要的列表,顺序是靠索引增加了_id,以字典序保证的。

 

5.如果需要你设计一个分布式系统,你如何设计?(10分)

转载于:https://www.cnblogs.com/think90/p/7061623.html

内蒙古师范大学计算机与信息工程学院--《大数据存储与处理》期末考试试卷...相关推荐

  1. 内师大计算机专业在哪个学院,内蒙古师范大学计算机与信息工程学院介绍

    内蒙古师范大学计算机与信息工程学院成立于 2003 年 12 月,其前身是内蒙古师范大学计算中心(1986年)和内蒙古师范大学计算机科学与技术系(1992年). 计算机与信息工程学院现有计算机科学与技 ...

  2. 内蒙古师范大学计算机与科学,内蒙古师范大学计算机与信息工程学院

    内蒙古师范大学计算机与信息工程学院成立于 2003 年 12 月,其前身是内蒙古师范大学计算中心(1986年)和内蒙古师范大学计算机科学与技术系(1992年). 计算机与信息工程学院现有计算机科学与技 ...

  3. 南宁师范大学计算机与信息工程学院研究生,南宁师范大学计算机与信息工程学院(专业学位)职业技术教育保研...

    考研真题资料优惠价原价选择 南宁师范大学计算机与信息工程学院(专业学位)职业技术教育保研信息,是考研之前需要获取相应的考研信息,比如考试大纲.招考专业.招考目录等等基本信息,这些内容是进行考研前期工作 ...

  4. 天津师范大学计算机与信息工程学院研究生院,天津师范大学计算机与信息工程学院2020考研调剂信息...

    考研调剂是考研考生在第一志愿没有通过自己报考学校考试,但初试成绩符合复试调剂基本分数要求但在原报考单位没有复试资格,可以申请调剂.2020考研国家线已公布,2020考研调剂系统5月20日已开通,考研成 ...

  5. 内蒙古农业大学计算机学院,内蒙古农业大学计算机与信息工程学院介绍

    内蒙古农业大学计算机与信息工程学院于1999年7月由原内蒙古农牧学院计算机系和原内蒙古林学院基础部计算机教研室合并组建而成.原内蒙古农牧学院计算机系是在原内蒙古农牧学院计算中心的基础上成立的,于199 ...

  6. 【调剂】天津师范大学计算机与信息工程学院2020年硕士研究生调剂

    点击文末的阅读原文或者公众号界面左下角的调剂信息或者公众号回复"调剂"是计算机/软件等专业的所有调剂信息集合,会一直更新的. 天津师范大学计算机与信息工程学院2020年硕士研究生复 ...

  7. 【调剂】广西师范大学计算机与信息工程学院 陈明教授课题组招收计算机与自动化方向调剂生3名...

    点击文末的阅读原文或者公众号界面左下角的调剂信息或者公众号回复"调剂"是计算机/软件等专业的所有调剂信息集合,会一直更新的. 广西师范大学计算机与信息工程学院 陈明教授课题组招收计 ...

  8. 内蒙古农业大学计算机学院老师黑名单,内蒙古农业大学计算机与信息工程学院2020年考研调剂信息...

    内蒙古农业大学计算机与信息工程学院调剂相关事宜通知 各位同学: 2020年研究生复试的国家线已出,我院081203计算机应用技术和085400电子信息均接受调剂.请总分和单科均上线,有调剂意向的同学, ...

  9. 内蒙古农业大学的计算机专业怎样,内蒙古农业大学计算机与信息工程学院

    内蒙古农业大学计算机与信息工程学院于1999年4月由原内蒙古农牧学院计算机系和原内蒙古林学院基础部计算机教研室合并组建而成.原内蒙古农牧学院计算机系是在原内蒙古农牧学院计算中心的基础上成立的,于199 ...

  10. 哈工大《大数据计算基础》期末考试2021

    哈工大<大数据计算基础>期末考试2021 去年学长的链接2020年大数据基础 判断 10道,基本都比较简单 比如: 大数据就是1T以上的数据 大数据技术框架是否都是并行计算的 简答:4 x ...

最新文章

  1. oracle分区交换速度,oracle交换分区对数据的加载提速案例
  2. 机器学习从入门到精通系列之BP神经网络理论知识详解
  3. jvm性能调优 - 22JVM GC回顾
  4. Knative Serving 进阶: Knative Serving SDK
  5. ​Golang 并发编程指南
  6. 基于ASP.NET Core 3.0的ABP v0.21已发布
  7. P2922-[USACO08DEC]秘密消息Secret Message【Trie,字符串】
  8. 转-Android Studio *.jar 与 *.aar 的生成与*.aar导入项目方法
  9. cad渐变线怎么画_怎么画压力线和支撑线
  10. 当CodeSmith不在时……
  11. android frida 检测_Android 逆向 | Frida 是万能的吗? 检测 Frida 的几种办法
  12. 使用C++实现克拉默法则(Cramer‘s law)
  13. 替换文本框文字html,js替换选中的文字,兼容所有浏览器
  14. excel多个窗口独立显示_办公软件操作技巧060:如何快速切换excel工作簿
  15. 图解QQ空间日志爬虫的全部日志获取与日志实际地址分析.
  16. 【转】一生必看的成功学书(转载)
  17. 相机光学传递函数MTF
  18. 简单概括 文明进化的各个阶段 (39)
  19. 基于android的手机掌上购物
  20. 统计学笔记——统计基础(协方差,相关系数,决定系数)

热门文章

  1. python常用内置模块,执行系统命令的模块
  2. Chrome插件之一键保存网页为PDF1.1发布
  3. 应用程序虚拟化,序列化实验 Microsoft Desktop Optimization Pack 实现一个应用程
  4. 锐捷认证客户端常见问题解决及简介
  5. teched2004视频资料下载,又加了5段,全是开发类的
  6. Android来电铃声默认设置的实现方法与怎么设置语音来电的默认铃声
  7. Linux 抄袭 Unix ?今日终有定论!
  8. 三年无bug,提升代码质量的秘诀
  9. 几种简单的负载均衡算法及其 Java 代码实现
  10. 加精!大型互联网应用基于CAS的SSO架构