Hadoop与spark性能比较试验
吕益平 2018-03-28 来源 : 阅读 1789 评论 0

自从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。

          通过浏览器访问//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页面//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的计算能力方面的确存在优势,并且其优势随着计算任务的复杂程度的增加而扩大。

 

        希望这篇文章可以帮助到你,总之同学们,it资讯尽在职坐标。


本文由 @职坐标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论
本文作者 联系TA

熟悉企业软件开发的产品设计及开发

  • 57
    文章
  • 24880
    人气
  • 86%
    受欢迎度

已有50人表明态度,86%喜欢该老师!

进入TA的空间
求职秘籍 直通车
  • 资料领取 资料领取 资料领取
  • 答疑解惑 答疑解惑 答疑解惑
  • 技术交流 技术交流 技术交流
  • 职业测评 职业测评 职业测评
  • 面试技巧 面试技巧 面试技巧
  • 高薪秘笈 高薪秘笈 高薪秘笈
TA的其他文章 更多>>
java语言实现栈的顺序存储与链式存储
经验技巧 100% 的用户喜欢
一天天都在说hadoop,到底什么才是hadoop呢?
经验技巧 57% 的用户喜欢
WEB前端之div css 层级
经验技巧 100% 的用户喜欢
WEB前端之div css 绝对定位
经验技巧 100% 的用户喜欢
Java语言之Java Socket NIO示例
经验技巧 67% 的用户喜欢
其他海同师资 更多>>
孔庆琦
孔庆琦 联系TA
对MVC模式和三层架构有深入的研究
戴懿颢​
戴懿颢​ 联系TA
20年+嵌入式开发经验,精多语言 / 云 / 安全 / 数据库
郭自琦
郭自琦 联系TA
16年物联网经验,涉多项目,多校授课,出版书籍并研发IT教程
余承民
余承民 联系TA
8年开发+5年教学经验,指导数千名学员高薪就业
张浩
张浩 联系TA
15年全栈技术研发经验,中南大学、湖南师大等10+所高校特聘讲师
经验技巧30天热搜词 更多>>

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved