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. 编写独立应用程序实现求平均值问题

四、实验总结:(实验中遇到的问题及解决方法,心得体会等)

通过本章的学习,我感受到了和前面两章的明显差别,那就是越来越抽象,越来越难以理解,如果一节课不听,后面的基本上就不太理解。课后还需要自己补课,在网上找一些视频,可能这也正是大数据的魅力所在。


本文标签: 文件 应用程序 统计 程序 词频