基于Hadoop的云计算与大数据处理技术

这篇具有很好参考价值的文章主要介绍了基于Hadoop的云计算与大数据处理技术。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实验目的

1.了解Scala语言的基本语法

2.了解Spark Scala开发的原理

3.了解Spark Java API的使用

4.了解Spark的Scala API及Java API对数据处理的不同点

二、实验内容 

某电商网站记录了大量用户对商品的收藏数据,并将数据存储在名为buyer_favorite1的文件中,数据格式以及数据内容如下:

用户ID(buyer_id),商品ID(goods_id),收藏日期(dt)

view plain copy

  1. 用户id   商品id    收藏日期  
  2. 10181   1000481   2010-04-04 16:54:31  
  3. 20001   1001597   2010-04-07 15:07:52  
  4. 20001   1001560   2010-04-07 15:08:27  
  5. 20042   1001368   2010-04-08 08:20:30  
  6. 20067   1002061   2010-04-08 16:45:33  
  7. 20056   1003289   2010-04-12 10:50:55  
  8. 20056   1003290   2010-04-12 11:57:35  
  9. 20056   1003292   2010-04-12 12:05:29  
  10. 20054   1002420   2010-04-14 15:24:12  
  11. 20055   1001679   2010-04-14 19:46:04  
  12. 20054   1010675   2010-04-14 15:23:53  
  13. 20054   1002429   2010-04-14 17:52:45  
  14. 20076   1002427   2010-04-14 19:35:39  
  15. 20054   1003326   2010-04-20 12:54:44  
  16. 20056   1002420   2010-04-15 11:24:49  
  17. 20064   1002422   2010-04-15 11:35:54  
  18. 20056   1003066   2010-04-15 11:43:01  
  19. 20056   1003055   2010-04-15 11:43:06  
  20. 20056   1010183   2010-04-15 11:45:24  
  21. 20056   1002422   2010-04-15 11:45:49  
  22. 20056   1003100   2010-04-15 11:45:54  
  23. 20056   1003094   2010-04-15 11:45:57  
  24. 20056   1003064   2010-04-15 11:46:04  
  25. 20056   1010178   2010-04-15 16:15:20  
  26. 20076   1003101   2010-04-15 16:37:27  
  27. 20076   1003103   2010-04-15 16:37:05  
  28. 20076   1003100   2010-04-15 16:37:18  
  29. 20076   1003066   2010-04-15 16:37:31  
  30. 20054   1003103   2010-04-15 16:40:14  
  31. 20054   1003100   2010-04-15 16:40:16  

现分别使用Spark Scala API及Spark Java API对用户收藏数据,进行wordcount操作,统计每个用户收藏商品数量。

三、实验原理或流程

Spark的核心就是RDD,所有在RDD上的操作会被运行在Cluster上,Driver程序启动很多Workers,Workers在(分布式)文件系统中读取数据后转化为RDD(弹性分布式数据集),然后对RDD在内存中进行缓存和计算。

对于Spark中的API来说,它支持的语言有Scala、Java和Python,由于Scala是Spark的原生语言,各种新特性肯定是Scala最先支持的,Scala语言的优势在于语法丰富且代码简洁,开发效率高。缺点在于Scala的API符号标记复杂,某些语法太过复杂,不易上手。对Java开发者而言,也可以使用Spark Java API。

RDD有两种类型的操作 ,分别是Action(返回values)和Transformations(返回一个新的RDD)。

四、实验过程及源代码

1.在Linux上创建/data/spark4目录,用于存储实验所需的数据。

view plain copy

  1. mkdir -p /data/spark4  

切换到/data/spark4目录下,并从http://172.16.103.12:60000/allfiles/spark4/下载实验数据buyer_favorite1及spark-assembly-1.6.0-hadoop2.6.0.jar。

view plain copy

  1. cd /data/spark4  
  2. wget http://172.16.103.12:60000/allfiles/spark4/buyer_favorite1  
  3. wget http://172.16.103.12:60000/allfiles/spark4/spark-assembly-1.6.0-hadoop2.6.0.jar  

2.使用jps查看Hadoop以及Spark的相关进程是否已经启动,若未启动则执行启动命令。

view plain copy

  1. jps  
  2. /apps/hadoop/sbin/start-all.sh  

view plain copy

  1. /apps/spark/sbin/start-all.sh  

将Linux本地/data/spark4/buyer_favorite文件,上传到HDFS上的/myspark4目录下。若HDFS上/myspark4目录不存在则创建。

view plain copy

  1. hadoop fs -mkdir -p /myspark4  
  2. hadoop fs -put /data/spark4/buyer_favorite1 /myspark4  

3.打开已安装完Scala插件的Eclipse,新建一个Scala项目。

将项目命名为spark4。

在spark4项目下新建包名,命名为my.scala。

右键点击包名, 新建scala Object。

将scala object命名为ScalaWordCount。

4.右键项目,创建一个文件夹,名为lib。

将Linux上的/data/spark4/spark-assembly-1.6.0-hadoop2.6.0.jar文件,拷贝到lib目录下。右键jar包,点击Build Path=>Add to Build Path。

5.在Eclipse中,打开ScalaWordCount.scala文件。编写Scala语句,并统计用户收藏数据中,每个用户收藏商品数量。

view plain copy

  1. package my.scala  
  2. import org.apache.spark.SparkConf  
  3. import org.apache.spark.SparkContext  
  4. object ScalaWordCount {  
  5.     def main(args: Array[String]) {  
  6.         val conf = new SparkConf()  
  7.         conf.setMaster("local")  
  8.             .setAppName("scalawordcount")  
  9.         val sc = new SparkContext(conf)  
  10.         val rdd = sc.textFile("hdfs://localhost:9000/myspark4/buyer_favorite1")  
  11.         rdd.map(line => (line.split("\t")(0), 1))  
  12.            .reduceByKey(_ + _)  
  13.            .collect()  
  14.            .foreach(println)  
  15.         sc.stop()  
  16.     }  
  17. }  

第一步:创建Spark的配置对象sparkConf,设置Spark程序运行时的配置信息;

第二步:创建SparkContext对象,SparkContext是Spark程序所有功能的唯一入口,无论采用Scala、Java还是Python都必须有一个SparkContext;

第三步:根据具体的数据来源,通过SparkContext来创建RDD;

第四步:对初始的RDD进行Transformation级别的处理。(首先将每一行的字符串拆分成单个的单词,然后在单词拆分的基础上对每个单词实例计数为1;最后,在每个单词实例计数为1的基础上统计每个单词在文件出现的总次数)。

6.在Eclipse中执行代码

在控制界面console中查看的输出结果。

view plain copy

  1. (用户id 收藏商品数量)  
  2. (20042,1)  
  3. (20054,6)  
  4. (20055,1)  
  5. (20064,1)  
  6. (20001,2)  
  7. (10181,1)  
  8. (20067,1)  
  9. (20056,12)  
  10. (20076,5)  

7.再次右键点击项目名,新建package,将包命名为my.java 。

右键点击包my.java,新建Class,命名为JavaWordCount。

8.打开JavaWordCount.java文件,编写Java代码,统计用户收藏数据中,每个用户收藏商品数量。

view plain copy

  1. package my.java;  
  2. import org.apache.spark.SparkConf;  
  3. import org.apache.spark.api.java.JavaPairRDD;  
  4. import org.apache.spark.api.java.JavaRDD;  
  5. import org.apache.spark.api.java.JavaSparkContext;  
  6. import org.apache.spark.api.java.function.FlatMapFunction;  
  7. import org.apache.spark.api.java.function.Function2;  
  8. import org.apache.spark.api.java.function.PairFunction;  
  9. import scala.Tuple2;  
  10. import java.util.Arrays;  
  11. import java.util.List;  
  12. import java.util.regex.Pattern;  
  13. public final class JavaWordCount {  
  14.  private static final Pattern SPACE = Pattern.compile("\t");  
  15.  public static void main(String[] args) throws Exception {  
  16.    SparkConf sparkConf = new SparkConf().setMaster("local").setAppName("JavaWordCount");  
  17.    JavaSparkContext ctx = new JavaSparkContext(sparkConf);  
  18.    JavaRDD<String> lines = ctx.textFile("hdfs://localhost:9000/myspark4/buyer_favorite1");  
  19.     JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {  
  20.         @Override  
  21.         public Iterable<String> call(String s) {  
  22.             String word[]=s.split("\t",2);  
  23.             return Arrays.asList(word[0]);  
  24.             }  
  25.             });  
  26.             JavaPairRDD<String, Integer> ones = words.mapToPair(new PairFunction<String, String, Integer>() {  
  27.             @Override  
  28.             public Tuple2<String, Integer> call(String s) {  
  29.             return new Tuple2<String, Integer>(s, 1);  
  30.             }  
  31.             });  
  32.             JavaPairRDD<String, Integer> counts = ones.reduceByKey(new Function2<Integer, Integer, Integer>() {  
  33.             @Override  
  34.             public Integer call(Integer i1, Integer i2) {  
  35.             return i1 + i2;  
  36.             }  
  37.             });  
  38.             List<Tuple2<String, Integer>> output = counts.collect();  
  39.             System.out.println(counts.collect());  
  40.             counts.saveAsTextFile("hdfs://localhost:9000/myspark4/out");  
  41.             ctx.stop();  
  42.             }  
  43.             }  

9.在Eclipse上执行Java代码,并在Java代码指定输出目录下查看实验结果。

view plain copy

  1. hadoop fs -ls /myspark4/out  
  2. hadoop fs -cat /myspark4/out/part-00000  

五、实验结论及心得

通过这个实验,我们可以得出以下结论和心得:

Scala语言具有丰富的语法和简洁的代码,可以提高开发效率。但对于初学者来说,Scala的符号标记可能比较复杂,需要一定的学习成本。

Spark的工作原理是基于RDD的分布式计算,它充分利用了内存进行缓存和计算,提高了效率。了解这个原理有助于我们更好地使用Spark进行开发。

对于熟悉Java的开发者来说,Spark的Java API是一个很好的选择。它提供了与Scala相似的功能,但是更接近Java的语法和习惯。

在选择使用Spark的Scala API还是Java API时,需要根据项目需求和开发者的熟悉程度进行权衡。两者都有各自的优势和适用场景。

总的来说,掌握Scala语言和Spark的开发原理对于进行大数据处理和分析是非常重要的。通过实验我们对这些内容有了更深入的了解,为以后的开发工作打下了基础。文章来源地址https://www.toymoban.com/news/detail-764246.html

到了这里,关于基于Hadoop的云计算与大数据处理技术的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 数据建模的云计算支持:利用云计算资源提高数据处理效率

    数据建模是数据科学和机器学习领域中的一个重要环节,它涉及到将实际问题转化为数学模型的过程。随着数据规模的不断扩大,传统的数据处理方法已经无法满足需求,因此需要寻找更高效的数据处理方法。云计算是一种基于互联网的计算资源分配和共享方式,它可以提供

    2024年04月28日
    浏览(5)
  • 云计算与大数据处理:数据驱动的决策

    随着互联网的普及和数据的迅速增长,大数据技术已经成为企业和组织的核心竞争力。大数据处理技术涉及到海量数据的收集、存储、处理和分析,以支持企业的决策和优化。云计算是大数据处理的重要技术之一,它为大数据处理提供了高性能、高可扩展性和高可靠性的计算

    2024年04月12日
    浏览(10)
  • 数据挖掘的云计算与大规模数据处理

    数据挖掘是指从大量数据中发现新的、有价值的信息和知识的过程。随着互联网和人工智能技术的发展,数据量不断增加,这使得数据挖掘变得越来越重要。云计算和大规模数据处理技术为数据挖掘提供了强大的支持,使得数据挖掘能够在更短的时间内获得更好的结果。 本文

    2024年04月14日
    浏览(8)
  • 云计算与大数据处理:多云策略与集成

    云计算和大数据处理是当今信息技术领域的两个热门话题。云计算是指通过互联网提供计算资源、存储资源和应用软件等服务,实现资源共享和灵活伸缩。大数据处理是指对海量、多源、多类型的数据进行存储、清洗、分析和挖掘,以获取有价值的信息和知识。 随着云计算和

    2024年04月11日
    浏览(8)
  • 云计算与大数据处理:面向未来的技术路线

    随着互联网的普及和人们对信息的需求不断增加,数据的产生和存储量也随之增长呈指数级增长。大数据技术是应对这种数据爆炸的一种解决方案,它涉及到的领域非常广泛,包括数据存储、数据处理、数据挖掘、数据分析等。云计算是一种基于互联网的计算资源分配和管理

    2024年04月09日
    浏览(12)
  • 云计算与大数据第9章 大数据处理习题带答案

    1、在数据预处理阶段,数据合并到一致的存储介质中,使得数据挖掘更有效、挖掘模式更易理解,这一过程是(  B  )。 A. 数据清洗         B. 数据集成        C. 数据归约      D.数据转换    2、以下(  B  )不是数据归约策略。 A. 属性子集的选择   B. 属性构

    2024年02月09日
    浏览(15)
  • 【软考数据库】第十三章 云计算与大数据处理

    【软考数据库】第十三章 云计算与大数据处理

    目录 13.1 云计算 13.1.1 云计算的关键特征 13.1.2 云计算分类 13.1.3 云关键技术 13.1.4 云计算的安全 13.1.5 云安全实施的步骤 13.2 大数据  前言: 笔记来自《文老师软考数据库》教材精讲,精讲视频在b站,某宝都可以找到,个人感觉通俗易懂。 13.1.1 云计算的关键特征 云计算是与

    2024年01月23日
    浏览(11)
  • 【数据库系统工程师】第13章 云计算与大数据处理

    【数据库系统工程师】第13章 云计算与大数据处理

    ○ 关键特征 ■ 广泛的网络接入 ■ 可测量的服务 ■ 多租户 ■ 按需自服务 ■ 快速的弹性和可扩展性 ■ 资源池化 ○ 其他关键特征 ■ 虚拟化技术 ■ 可靠性高 ■ 性价比高 ○ 根据云部署模式和云应用范围 ■ 公用云 ■ 社区云 ■ 私有云 ■ 混合云 ○ 根据云计算的服务层次

    2023年04月17日
    浏览(13)
  • 云计算与大数据处理:实践中的数据可视化与分析

    在当今的数字时代,数据已经成为企业和组织中最宝贵的资源之一。随着互联网的普及和人们生活中的各种设备产生大量的数据,如何有效地处理和分析这些数据成为了关键的问题。云计算和大数据处理技术正是为了解决这个问题而诞生的。 云计算是一种通过互联网提供计算

    2024年04月23日
    浏览(15)
  • 云计算与大数据处理:分布式系统与集群技术

    随着互联网的不断发展,数据的产生和存储量日益庞大,传统的单机计算方式已经无法满足需求。因此,分布式系统和集群技术逐渐成为了解决大数据处理问题的重要手段。 分布式系统是指由多个独立的计算机节点组成的系统,这些节点可以在网络上进行通信和协同工作。集

    2024年04月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包