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