自从spark正式亮相后,其官网上就公开声称其计算速度比hadoop要快10到100倍。我看了后总觉得其存在很大的炒作成份,不太相信。正好单位目前在做一个大数据的项目,于是就借机实实在在的对二者的计算速度进行了比较。正如一句北京土话:是骡子是马,拉出来遛遛。实验过程记录如下。

        第一步  安装软件

我先在笔记本上装了个乌班图,然后安装hadoop,接着安装spark,。安装过程不再赘述,但有一点要提一下,spark安装完后,在启动spark-shell的时候,总是提示没有启动hive的metastore服务,这令我很不能理解,我又不用hive存取数据,为什么非要hive的metastore呢?可是找不到其它办法,只能是安装hive了。

Hadoop,spark和hive是本次实验所必须的软件。

        第二步  启动服务

先启动hadoop,命令:start-alll.sh。

在将hdfs的安全模式关闭:命令是hdfs dfsadmin  -safemode leave。注意,最好关闭安全模式,否则启动metastore的时候出错的概率非常高。

接着启动metastore,命令是hive  --service metastore。注意,最好在hive的根目录下执行该命令,在我的电脑上,只有在根目录下才能正常启动,影响不大也就没追究原因。

启动完后,当前命令行客户端就不能在继续使用了,需要重新开启新的命令行客户端进行其它操作。当然可以在执行时通过添加相应的参数来继续使用当前客户端,但对实验影响不大。

在新的命令行客户端中,启动spark,命令是start-all.sh。

至此,所有需要的服务启动完成。

        第三步准备数据

下面就需要准备数据了。准备两个文本文件,一个小一些,大约为几兆,另一个要明显大一些,最好在128兆以上,这样在hdfs中就会存储在多个块中了。我将testbed和jtest的使用手册反复的拷贝粘贴,得到一个138兆的文件t1.txt用于实验,另外有准备了一个3兆的小文件t2.txt用于实验。

接着创建输入目录,命令是hadoop dfs  -mkdir /input。

通过浏览器访问http://localhost:50070可以看到创建的目录,如果创建成功就可以继续了。

第四步 hadoop计算能力实验

         将准备的小文件t2.tx上传到hdfs中,命令是hadoop dfs -put /home/yutian/t2.txt   /input。

Hadoop自带词频统计的例子,所以不用编写任何代码,就可以进行hadoop的计算能力实验了。在hadoop根目录下执行词频统计的例子,命令是hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-example-2.7.3.jar wordcount /input  /output。

执行的同时开始计时,执行完毕后我得到的数据是3秒,由于时间短,时间统计的精度并不高。

记录下时间后,将t2.txt删除,如果不删除后续会报错,命令是:hadoop dfs -rm /input/t2.txt。将输出目录也删除,命令是:hadoop dfs -rmr /output。然后将t1.txt上传到hdfs中。

再次执行词频统计的例子,得到大文件消耗的时间是27秒。

至此,hadoop的计算能力的数据已经获取完毕。

        第五步Spark计算能力实验

Spark没有词频统计的例子,所以需要自己编写。根据自己喜好决定是否安装sbt,反正我安装了sbt。编写WordCount.scala文件,关键代码就三行:

Val textFile=sc.textFile("hdfs://localhost:9000/input/t1.txt")

Valcounts=textFile.flatMap(line=>line.split(“ ”)).map(_,1)).reduceByKey(_+_)

Counts.saveAsTextFile("hdfs://localhost:9000/output/s2")

编写好WordCount.scala文件后,在基础目录下,将其打包,命令是:sbt package。打包完成后,词频统计程序就准备完成了。

将hdfs中的output/s2目录删除,当前input中的文件是t1.txt,在基础目录下执行词频统计程序,命令是spark-submit  –class “WordCount” –master  spark://yutian-ThinkPad-Edge-E440:7077 ./target/scala-2.11/wordcount_2.11-1.0.jar。yutian-ThinkPad-Edge-E440是机器名,注意,spark服务的url要同spark的web页面http://localhost:8080中的服务ur相一致,一开始我使用localhost,结果总提示连接失败,改成机器名后,就成功了。得到大文件消耗的时间是13秒。然后将hdfs中的/output/s2删除,将/input/t1.txt删除,将t2.txt上传至/input中,再次执行词频统计程序,得到t2.txt消耗的时间是4秒。

        第六步数据分析

获得的数据列表如下:

Hadoop(s)             spark(s)

t1.txt(138M)                     27                        13

t2.txt(3M)                           3                          4

由实验数据可以得出如下结论,spark的计算能力方面的确存在优势,并且其优势随着计算任务的复杂程度的增加而扩大。

Hadoop与spark性能比较试验相关推荐

  1. Hadoop vs Spark性能对比

    基于Spark-0.4和Hadoop-0.20.2 1. Kmeans 数据:自己产生的三维数据,分别围绕正方形的8个顶点 {0, 0, 0}, {0, 10, 0}, {0, 0, 10}, {0, ...

  2. mysql和hdfs性能对比,Hadoop vs Spark性能对比 -数据库-火龙果软件工程

    1. Kmeans 数据:自己产生的三维数据,分别围绕正方形的8个顶点 {0, 0, 0}, {0, 10, 0}, {0, 0, 10}, {0, 10, 10}, {10, 0, 0}, {10, ...

  3. Hadoop对Spark:正面比拼报告(架构、性能、成本、安全性和机器学习)

    来自:网络大数据 每年,市场上都会出现种种不同的数据管理规模.类型与速度表现的分布式系统.在这些系统中,Hadoop和Spark是获得最大关注的两个.然而该怎么判断哪一款适合你? 如果想批处理流量数据 ...

  4. 《Spark与Hadoop大数据分析》——1.2 大数据科学以及Hadoop和Spark在其中承担的角色...

    1.2 大数据科学以及Hadoop和Spark在其中承担的角色 数据科学的工作体现在以下这两个方面: 要从数据中提取其深层次的规律性,意味着要使用统计算法提炼出有价值的信息.数据产品则是一种软件系统, ...

  5. 揭秘Sponge:统一Hadoop、Spark、SDS、Swift的大数据操作系统

     揭秘Sponge:统一Hadoop.Spark.SDS.Swift的大数据操作系统 width="22" height="16" src="ht ...

  6. spark性能优化 -- spark工作原理

    从本篇文章开始,将开启 spark 学习和总结之旅,专门针对如何提高 spark 性能进行总结,力图总结出一些干货. 无论你是从事算法工程师,还是数据分析又或是其他与数据相关工作,利用 spark 进 ...

  7. Spark性能调优之资源分配

    **性能优化王道就是给更多资源!**机器更多了,CPU更多了,内存更多了,性能和速度上的提升,是显而易见的.基本上,在一定范围之内,增加资源与性能的提升,是成正比的:写完了一个复杂的spark作业之后 ...

  8. Hadoop vs Spark

    面对Hadoop与Spark孰优孰劣这个问题,最准确的观点就是,设计人员旨在让Hadoop和Spark在同一个团队里面协同运行. 直接比较Hadoop和Spark有难度,因为它们处理的许多任务都一样, ...

  9. Hadoop精华问答 | Hadoop 和Spark有什么区别?

    我们很荣幸能够见证Hadoop十年从无到有,再到称王.感动于技术的日新月异时,希望通过今天的有问有答深入解读Hadoop的昨天.今天和明天,憧憬下一个十年. 1 Q:Hadoop是什么? A:Hado ...

最新文章

  1. CentOS7.4下 VNC Server的搭建和客户端的连接配置
  2. 玩转python轻松过二级 百度网盘,玩转Python轻松过二级
  3. Java设计模式(十九):解释器设计模式
  4. php 仓储 sqlite_详解php封装db类连接sqlite3
  5. 有关替换字符的代码问题
  6. java gc log调优_Java 开启 gc 日志
  7. mysql外键引用语法_mysql – 外键语法
  8. 【转】DICOM医学图像读取涉及到的医学坐标体系
  9. 让Android Studio支持系统签名(证书)
  10. Python天天美味(23) - enumerate遍历数组
  11. python封装:隐藏对象中的属性或方法(三分钟读懂)
  12. Mono 2.11.3 发布包含微软的 Entity Framework
  13. DirectX SDK 安装时出现错误 [Error Code:S1023] 的解决方案
  14. vue-quill-editor超链接bug问题
  15. java nc接口开发_OA和NC系统集成接口开发方案.doc
  16. 世界上最简单的会计书(利润表)
  17. 数字IC验证方法的分类
  18. 算法---排序--希尔排序和快速排序
  19. php com操作word,php 操作word 的使用com组件的总结
  20. Android网络框架okhttp3简单封装

热门文章

  1. 第7周编程题在线测试
  2. 求两个数的最小公倍数; 两种方法
  3. 跟我学Linux系统管理 第三讲 磁盘管理
  4. 暑假计算机培训心得体会,暑期培训心得体会模板集锦10篇
  5. 免费在线云服务CAD编辑软件AutoCAD易
  6. 快速修复 bug 的技巧?初学者的痛点,教你一招搞定!
  7. 了解建模三大软件:3Dmax、Maya、zbrush
  8. 极限思想在计算机中的应用,数学极限思想的应用论文(共2篇)
  9. Kalibr标定时卡在Extracting calibration target corners的问题
  10. 本周AI热点回顾:和欧阳娜娜一起搞研发?强大的神经网络新算子involution,超越卷积、自注意力机制!...