实验1:HADOOP实验-HDFS与MAPREDUCE操作
云计算技术与应用 石家庄铁道大学信息学院
实验1:HADOOP实验-HDFS与MAPREDUCE操作
本次实验属于验证型实验,通过本次实验学生将掌握以下内容:
1、利用虚拟机搭建集群部署hadoop
2、HDFS文件操作以及文件接口编程;
3、MAPREDUCE并行程序开发、发布与调用。
[实验任务]:
一、虚拟机集群搭建部署hadoop
利用VMware、centOS-7、Xshell(secureCrt)等软件搭建集群部署hadoop,具体操作参照
https://www.bilibili.com/video/BV1Kf4y1z7Nw?p=1
可使用官网下载:
二、HDFS文件操作
在分布式文件系统上验证HDFS文件命令,如下。
hadoop [-ls [-lsr [-du [-dus [-count [-mv [-cp [-rm [-rmr [-expunge] [-put [-copyFromLocal [-moveFromLocal [-get [-getmerge [-cat [-text [-copyToLocal [-moveToLocal [-mkidr [-setrep [-touchz [-test [-stat [-tail [-chmod [-chown [-chgrp [-help |
2.1 HDFS接口编程
调用HDFS文件接口实现对分布式文件系统中文件的访问,如创建、修改、删除等。
参考代码:
三、MAPREDUCE并行程序开发
3.1 求每年最高气温
原始数据如下:
|
参考代码
|
将程序发布为jar包,并上传到hadoop平台运行。
3.2 词频统计
maven建立quick-start工程。
pom.xml
<project
<groupId>cn.edu.bupt.wcy</groupId> <packaging>jar</packaging>
<name>wordcount</name>
<properties> </properties>
<dependencies> <dependency> <groupId>junit</groupId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> </dependency> <dependency> <version>2.7.1</version> </dependency> <dependency> </dependency> </dependencies> </project> |
3个java代码,mapper、reducer、runner主类:
mapper:
package
import
import import import import
public
@Override protected void map(LongWritable key, throws IOException, // //super.map(key, //String[] String[] words = for(String {
} } } |
reducer:
package
import
import import import
public
@Override protected void reduce(Text arg0, Reducer<Text, LongWritable, Text, // //super.reduce(arg0, int for(LongWritable { sum += num.get();
} context.write(arg0,new
} } |
runner:
package
import
import import
import import import import import import import
public
public static void main(String[] args) Configuration }
} |
打包成jar包后,放到集群上运行。先在集群上新建一个文件夹:
hdfs dfs -mkdir
/input_wordcount 再放入单词文件,比如:
hello world
I like playing
basketball
hello java。。。
运行hadoop jar WordCount.jar(jar包) WordCountRunner(主类) /input_wordcount
/output_wordcount
运行完成后,查看:
hdfs dfs -ls
/output_wordcount。已经生成了结果,在cat一下查看内容即可。
实验总结
这次实验,我完成了客户机与HDFS交互,更进一步了解了Hadoop 的日常操作,同时对于MapReduce和 HDFS的功能也有了了解。其中遇到了Input path does not exist报错,结果是没有提前建立文件,导致找不到相应的文件。