《大数据技术》MapReduce和Spark实验报告
一、实验目的: 1.通过实验掌握基本的MapReduce编程方法; 2.掌握用MapReduce解决一些常见数据处理问题的方法; 3.掌握使用Spark访问本地文件和HDFS文件的方法。 4.掌握Spark应用程序的编写、编译和运行方法。 二、实验平台: 1.操作系统:Ubuntu18.04(或Ubuntu16.04)。 2.Hadoop版本:3.1.3。 3. Spark版本:2.4.0。 4.JDK版本:1.8; 5.Java 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”目录下的hadoop-common-3.1.3.jar和haoop-nfs-3.1.3.jar; (b)“/usr/local/hadoop/share/hadoop/common/lib”目录下的所有JAR包; (c)“/usr/local/hadoop/share/hadoop/mapreduce”目录下的所有JAR包,但是,不包括jdiff、lib、lib-examples和sources目录。 (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”目录),这样确保后面程序运行不会出现问题。 (二)Spark的基本操作 1. Spark读取文件系统的数据 (1)在spark-shell中读取Linux系统本地文件“/usr/local/spark/README.md”,然后统计出文件的行数; (2)在spark-shell中读取HDFS系统文件“/usr/local/spark/README.—评论【··md”然后统计出文件中含spark单词的行数; (3)编写独立应用程序(推荐使用Scala语言),读取HDFS系统文件“/usr/local/spark/README.md”,然后统计出文件中的词频统计;通过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 hadoop安装与使用实验报告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/README.md”,然后统计出文件的行数; (2)在spark-shell中读取HDFS系统文件“/usr/local/spark/README.—评论【··md”然后统计出文件中含spark单词的行数; (3)编写独立应用程序(推荐使用Scala语言),读取HDFS系统文件“/usr/local/spark/README.md”,然后统计出文件中的词频统计;通过sbt工具将整个应用程序编译打包成 JAR包,并将生成的JAR包通过 spark-submit 提交到 Spark 中运行命令。 2. 编写独立应用程序实现数据去重 3. 编写独立应用程序实现求平均值问题 |
四、实验总结:(实验中遇到的问题及解决方法,心得体会等) 通过本章的学习,我感受到了和前面两章的明显差别,那就是越来越抽象,越来越难以理解,如果一节课不听,后面的基本上就不太理解。课后还需要自己补课,在网上一些视频,可能这也正是大数据的魅力所在。 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论