0


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

一.单选题,每个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.NameNodeD.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)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)

标签: hadoop 大数据 hdfs

本文转载自: https://blog.csdn.net/qq_58476985/article/details/128356312
版权归原作者 墨染盛夏呀 所有, 如有侵权,请联系我们删除。

“分布式计算----期末复习题(仅供参考)”的评论:

还没有评论