admin 管理员组文章数量: 887021
2024年2月20日发(作者:linux安装sqlmap)
《大数据技术》MapReduce和Spark实验报告
一、实验目的:
1.通过实验掌握基本的MapReduce编程方法;
2.掌握用MapReduce解决一些常见数据处理问题的方法;
3.掌握使用Spark访问本地文件和HDFS文件的方法。
4.掌握Spark应用程序的编写、编译和运行方法。
二、实验平台:
1.操作系统:Ubuntu18.04(或Ubuntu16.04)。
版本:3.1.3。
3. Spark版本:2.4.0。
版本:1.8;
IDE:Eclipse。
二、 实验内容:
(一) MapReduce的基本操作
1.词频统计任务要求:
首先,在Linux系统本地创建两个文件,即文件和。在实际应用中,这两个文件可能会非常大,会被分布存储到多个节点上。但是,为了简化任务,这里的两个文件只包含几行简单的内容。需要说明的是,针对这两个小数据集样本编写的MapReduce词频统计程序,不作任何修改,就可以用来处理大规模数据集的词频统计。
文件的内容如下:
I love Spark
I love Hadoop
文件的内容如下:
Hadoop is good
Spark is fast
假设HDFS中有一个/user/hadoop/input文件夹,并且文件夹为空,请把文件和上传到HDFS中的input文件夹下。现在需要设计一个词频统计程序,统计input文件夹下所有文件中每个单词的出现次数,也就是说,程序应该输出如下形式的结果:
2.编写Java API应用程序实现以上任务
(1)创建名为WordCount的Java项目:
为了编写一个MapReduce程序,一般需要向Java工程中添加以下JAR包:
(a)“/usr/local/hadoop/share/hadoop/common”目录下的和;
(b)“/usr/local/hadoop/share/hadoop/common/lib”目录下的所有JAR包;
(c)“/usr/local/hadoop/share/hadoop/mapreduce”目录下的所有JAR包,但是,不包括jdiff、lib、lib-examples和sources目录。
(2)在项目中添加名为的应用程序,在该文件中输入完整的词频统计程序代码
(3)编译打包程序
(a)运行java应用程序
(b)把Java应用程序打包生成JAR包,部署到Hadoop平台上运行。可以把词频统计程序放在“/usr/local/hadoop/myapp”目录下。
(c)运行程序
在运行程序之前,需要启动Hadoop,在启动Hadoop之后,需要首先删除HDFS中与当前Linux用户hadoop对应的input和output目录(即HDFS中的“/user/hadoop/input”和“/user/hadoop/output”目录),这样确保后面程序运行不会出现问题。
(二) Spark的基本操作
1. Spark读取文件系统的数据
(1)在spark-shell中读取Linux系统本地文件“/usr/local/spark/”,然后统计出文件的行数;
(2)在spark-shell中读取HDFS系统文件“/usr/local/spark/README.—评论【··md”然后统计出文件中含spark单词的行数;
(3)编写独立应用程序(推荐使用Scala语言),读取HDFS系统文件“/usr/local/spark/”,然后统计出文件中的词频统计;通过sbt工具将整个应用程序编译打包成 JAR包,并将生成的JAR包通过 spark-submit 提交到 Spark 中运行命令。
2. 编写独立应用程序实现数据去重
对于两个输入文件A和B,编写Spark独立应用程序(推荐使用Scala语言),对两个文件进行合并,并剔除其中重复的内容,得到一个新文件C。下面是输入文件和输出文件的一个样例,供参考。
输入文件A的样例如下:
20170101 x
20170102 y
20170103 x
20170104 y
20170105 z
20170106 z
输入文件B的样例如下:
20170101 y
20170102 y
20170103 x
20170104 z
20170105 y
根据输入的文件A和B合并得到的输出文件C的样例如下:
20170101 x
20170101 y
20170102 y
20170103 x
20170104 y
20170104 z
20170105 y
20170105 z
20170106 z
3. 编写独立应用程序实现求平均值问题
每个输入文件表示班级学生某个学科的成绩,每行内容由两个字段组成,第一个是学生名字,第二个是学生的成绩;编写Spark独立应用程序求出所有学生的平均成绩,并输出到一个新文件中。下面是输入文件和输出文件的一个样例,供参考。
Algorithm成绩:
小明 92
小红 87
小新 82
小丽 90
Database成绩:
小明 95
小红 81
小新 89
小丽 85
Python成绩:
小明 82
小红 83
小新 94
小丽 91
平均成绩如下:
(小红,83.67)
(小新,88.33)
(小明,89.67)
(小丽,88.67)
三、 实验过程与结论:(经调试正确的源程序(核心部分)和程序的运行结果)
(一)词频统计
(1)在Linux系统本地创建两个文件,即文件和,内容如下:
(2)创建名为WordCount的Java项目,并在该文件中输入完整的词频统计程序代码
(3)编译打包程序
(a)运行java应用程序
(b)把Java应用程序打包生成JAR包,部署到Hadoop平台上运行。可以把词频统计程序放在“/usr/local/hadoop/myapp”目录下。
(c)运行程序
在运行程序之前,需要启动Hadoop,在启动Hadoop之后,需要首先删除HDFS中与当前Linux用户hadoop对应的input和output目录(即HDFS中的“/user/hadoop/input”和“/user/hadoop/output”目录),这样确保后面程序运行不会出现问题。
(4) 得到结果
(二)Spark的基本操作
1. Spark读取文件系统的数据
(1)在spark-shell中读取Linux系统本地文件“/usr/local/spark/”,然后统计出文件的行数;
(2)在spark-shell中读取HDFS系统文件“/usr/local/spark/README.—评论【··md”然后统计出文件中含spark单词的行数;
(3)编写独立应用程序(推荐使用Scala语言),读取HDFS系统文件“/usr/local/spark/”,然后统计出文件中的词频统计;通过sbt工具将整个应用程序编译打包成 JAR包,并将生成的JAR包通过 spark-submit 提交到 Spark 中运行命令。
2. 编写独立应用程序实现数据去重
3. 编写独立应用程序实现求平均值问题
四、实验总结:(实验中遇到的问题及解决方法,心得体会等)
通过本章的学习,我感受到了和前面两章的明显差别,那就是越来越抽象,越来越难以理解,如果一节课不听,后面的基本上就不太理解。课后还需要自己补课,在网上找一些视频,可能这也正是大数据的魅力所在。
版权声明:本文标题:《大数据技术》MapReduce和Spark实验报告 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1708400881h522780.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论