分布式计算—-期末复习题(仅供参考)

  • Post author:
  • Post category:其他


一.单选题,每个2分

1.Hadoop

之父

是下面的哪一位?(B)

A. James Gosling


B.Doug Cutting


C.Matei Zaharia   D.Linus Benedict Torvalds

2.Hadoop中,用于

处理或者分析海量数据

的组件是哪一个?(  B   )

A.HDFS


B.MapReduce


C.Yarn   D.以上选项都不是

3.HDFS中

存储和管理元数据

的是哪一项?(C)

A.ResourceManager      B.NodeManager



C.NameNode


D.DataNode

4.用户自己编写Hadoop的MapReduce算法,可以

不用实现哪个阶段

?      (    B   )

A.MapB


.Shuffle


C.ReduceD.main函数

5.在HDFS的/hive/hadoop目录下创建data01目录,正确的一项是 (    B   )

A.mkdir /hive/hadoop/data01



B.hdfs dfs -mkdir /hive/hadoop/data01

C.hdfs dfs -mkdir  /data01

D.hdfs fs -cat /hive/hadoop/data01

6.关于Hadoop的MapReduce的描述,说法正确的一项是? (   C    )

A.可以用来存储大数据

B.用于管理大数据资源



C.是一个分布式计算框架

D.可以做实时数据分析

7、Hive表中的

数据存储

在什么地方? (  D     )

A. MySQL             B. Oracle

C. MapReduce


D. HDFS

8、在MapReduce中,如果将reducer数设置为0会发生怎样的情形  (  b     )

A.仅有Reduce作业发生


B. 仅有Map作业发生

C. Reducer输出会成为           D .MapReduce无法

9、在MapReduce中,哪个将会对数据按 key 进行分区和排序  (    a   )



A.Shuffle


B.Reducer

C.Mapper和Reducer      D.Mapper

10、在Hadoop的MapReduce中,Map的数量取决于什么  (    d   )

A.存储数据         B.任务数         C.输出数据


D.输入数据

11、在MapReduce,哪个阶段能够减少网络中数据量传输   (   c    )

A. Shuffle

B. Reduce



C. Combiner

D. Map和Sort

12.格式化NameNode的命令是哪一项              (    a    )



A.hdfs namenode  –formatB


.hdfs format

C.hdfs datanode -format               D.hadoop jar format

13.在Hadoop中,DataNode的作用是什么?     (  b    )

A.提供WEB端服务器



B.存储数据

C.提供统一的命名服务

D.NameNode提供整个HDFS文件系统的NameSpace管理,块管理等服务

14.Hive的

基础架构组件

不包括下列那些?           (    b   )

A.客户端


B.Tez


C.解析器     D.元数据

二.多选题,每个4分

1.常规的大数据项目通常采用的流程包括?    ( ABCD     )



A.数据的采集 B.数据的存储 C.数据的分析 D.可视化

2.有关Hadoop的MapReduce,下面哪个说法是错误的  (   ABC    )



A. 它提供了资源管理能力



B. 它是开源数据仓库系统,主要用于存储海量数据。



C. 它不能用来处理海量数据

D. 它可以用于海量数据的离线分析。

3.下面关于Hadoop的描述,正确有哪些? ( ABCD      )



A. HDFS可以用来存储海量数据



B. Yarn是Hadoop2.0起推出的一款资源管理系统



C. Hadoop的MapReduce是一个分布式的计算框架,可以用来处理大数据



D. Hadoop生态适合海量离线数据处理

4.Hadoop一般有三种安装模式,分别是?   (  BCD     )

A.Hadoop Smart模式B


.伪分布模式



C.完全分布模式D.本地模式

5.Hadoop的基础组件(三大组件)有哪些? (   ABC    )



A.MapReduce  B.HDFS   C.Yarn


D.Derby

6.MapReduce的应用场景有哪些?(  ABCD     )



A.单词统计



B.简单的数据统计



C.统计搜索词频率,帮助优化搜索词提示



D.可以进行极大值.极小值统计

7.Hive的架构中Driver有哪些组件?     (  ABCD     )



A.编译器     B.优化器C.执行器D.解析器

8.自定义Writable接口,需要实现下列那些的? (BCD   )

A.toString


B.readFields   C.compareTo     D.write

9.Hadoop中资源调度的方式有哪几种?             ( ABC     )



A.FIFO调度器  B.Capacity调度器   C.Fair 调度器


D.延时调度

三.Java代码走读,并解释其含义

1.

(1)Configuration conf = new Configuration();

(1)Job job = Job.getInstance(conf);



1>(1)配置信息及封装任务

(2)job.setJarByClass(FlowDriver.class);



2>(2)设置jar加载路径

(3)job.setMapperClass(MyMapper.class);

(3)job.setReducerClass(MyReducer.class);



3>(3)设置要运行的map和reduce的类

(4)job.setMapOutputKeyClass(FlowBean.class);

(4)job.setMapOutputValueClass(NullWritable.class);



4>(4)答案:设置map的输出

(5)job.setOutputKeyClass(FlowBean.class);

(5)job.setOutputValueClass(NullWritable.class);



5>(5)设置最终输出的kv类型

2、

public static void myHadoop01() throws Exception {

String uri = “hdfs://HadoopMaster:9000”;

Configuration conf = new Configuration();

(1)conf.set(“fs.defaultFS”,uri );

(2)FileSystem system = FileSystem.get(conf);

(3)FileStatus[] fileStatus = system.listStatus(new Path(uri));

(4)for (FileStatus fs : fileStatus) {

if(fs.isFile()) {

System.out.println(“file:” + fs.getPath().toString());

}else {

System.out.println(“directory:” + fs.getPath().toString());

}

}

}



代码解释:



(1)设置NameNode的通讯地址



(2)获取FileSystem对象



(3)获取HDFS根目录下的所有文件或者目录



(4)循环打印出HDFS根目录下的所有文件或者目录

3、

public class MyReducerTest extends Reducer<Text, FlowBean, Text, FlowBean> {

FlowBean v = new FlowBean();

@Override

(1)public void reduce(Text key, Iterable<FlowBean> values, Context context) throws IOException, InterruptedException {

long totalUp = 0;

long totalDown = 0;

(2)for (FlowBean value: values) {

(2)    totalUp += value.getUpFlow();

(2)   totalDown +=value.getDownFlow();}

(3)v.set(totalUp, totalDown);

(4)context.write(key, v);

}

}



代码解释:



(1)子类重写父类的reduce方法



(2)遍历每个values, 将其中的上行流量和下行流量进行累加



(3)封装输出的v



(4)输出k,v 键值对

四.程序设计题

实验(九):开发MapReduce算法,实现单词统计分析

请自己总结,每一段代码大概是什么意思,请同学们自己再看一看。

/**

Map阶段

*/

public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> {

@Override

public void map(LongWritable key, Text value,Context context) throws lOException, InterruptedException {

//拿到- -行文本内容,转换成String

String line = value.toString0;

//将这行文本切分成单词

String0 words=line.split(","); I

//输出<单词,1>

for(String word:words){

context.write(new Text(word), new IntWritable(1));

}}}
/**

Reduce阶段

public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable> {

@Override

public void reduce(Text key, Iterable <IntWritable> values,Context context) throws lOException, InterruptedException {

//定义一个计数器

int count = 0;

//通过value这个迭代器,遍历这一组kv中所有的value, 进行累加

for(IntWritable value:values){

count+=value.get0;

//输出这个单词的统计结果

context.write(key, new IntWritable(count);

}}
/**

Main方法

*/

public class WordCountJobSubmitter {

public static void main(String] args) throws lOException, ClassNotFoundException, InterruptedException {

Configuration conf = new Configuration0;

Job wordCountJob = Job.getInstance(conf);

//指定本job所在的jar包

wordCountlob. setJarByClass(WordCountJobSubmitter.class);

//设置wordCountJob所用的mapper逻辑类为哪个类

wordCountJob.setMapperClass(WordCountMapper.class);

//设置wordCountJob所用的reducer逻辑类为哪个类

wordCountJob. setReducerClass(WordCountReducer.class);

//设置map阶段输出的kv数据类型

wordCountJob. setMapOutputKeyClass(Text.class);

wordCountob.setMapOutputValueClass(IntWritable.class);

//设置最终输出的kv数据类型

wordCountJob. setOutputKeyClass(Text.class);

wordCountJob.setMapOutputValueClass(IntWritable.class);

//设置最终输出的kv数据类型

wordCountJob.setOutputKeyClass(Text.class);

wordCountJob.setOutputValueClass(IntWritable.class);t

//设置要处理的文本数据所存放的路径

FileInputFormat setInputPaths(wordCountJob, "hdfs://IP:9000/mapreduce/mydata";

FileOutputFormat. setOutputPath(wordCountJob, new Path"hdfs://IP:9000/mapreduce/output/1);

//提交job给hadoop集群

wordCountJob.waitForCompletion(true);

}}

五.思考题

1.在Hadoop集群中,单独启动hdfs的脚本是哪一个?以Hadoop2.x或者Hadoop3.0为例,HDFS启动成功以后,会有哪些进程,它们分别是什么?




start-dfs.sh。查看进程:NameNode,secondary namenode(前2是主节点出现)、DataNode(从节点出现)。


2.在Hadoop集群中,单独启动yarn的脚本是哪一个?Yarn启动成功以后,会有哪些进程,分别是什么?




单独看yarn的进程:start-yarn.sh ,出现resourcemanager(主节点),nodemanager(从节点)。


3.如果你使用的是Hadoop3.x版本,HDFS的页面访问端口是多少?Yarn的页面访问端口又是多少?


(hdfs端口:9870。yarn端口:8088)

4.根据你对Hive的使用和练习,Hive的数据存放在哪里?Hive底层默认的计算引擎(计算框架)是什么?hive



数据信息放在MySQL上。hive底层的计算框架:MapReduce。


其他补充:




1》hdfs默认的副本数3份,指定的进程能起来,文件的作用:




(1) hadoop -env.sh作用: 用于Hadoop运行环境的配置



(2) hdfs -site.xml作用:配置DataNode的数据块冗余度



(3) core- site.xml作用: 配置NameNode的所在主机或者通讯地址及NameNode格式化后的目录的路径



(4) mapper-site.xml 作用: 配置mapreduce运行框架yarn容器



(5) yarn-site.xml.作用: 配置ResourceManager所在 主机及MapReduce的shuffle方式



(6) Works(Slaves)



版权声明:本文为qq_58476985原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。