当前位置: 首页 > 编程日记 > 正文

大火的Apache Spark也有诸多不完美

现在如果你想要选择一个解决方案来处理企业中的大数据并不是难事,毕竟有很多数据处理框架可以任君选择,如Apache Samza,Apache Storm 、Apache Spark等等。Apache Spark应该是2016年风头最劲的数据处理框架,它在数据的批处理和实时流处理方面有着得天独厚的优势。

Apache Spark为大数据处理提供一套完整的工具,用户在大数据集上进行操作完全不需考虑底层基础架构,它会帮助用户进行数据采集、查询、处理以及机器学习,甚至还可以构建抽象分布式系统。

Apache Spark以速度而闻名,当然这是MapReduce改进的结果,它没有把数据保存在磁盘上,而是选择将数据保存在内存中。另外,Apache Spark提供了三种语言的库,即Scala,Java和Python。

Spark架构

Apache Spark虽然主要用于处理流数据,但是它也包含了很多数据执行操作的组件,上图就展示了它的不同模块。

Spark SQL:Apache Spark附带了SQL接口,这意味着用户可以直接使用SQL查询来与数据进行交互,这些查询统统是由Spark的执行引擎来处理的。

Spark Streaming:此模块提供一组API,用于编写对数据的实时流执行操作的应用程序,它会先将传入的数据流划分为微批次,然后再对数据执行操作。

MLib:MLLib提供了一组API,主要用于对大型数据集运行机器学习算法。

GraphX:支持内置的图操作算法,尤其适用于有很多连接节点的数据集。

除了数据处理库,Apache Spark还附带了一个Web UI。当运行Spark应用程序时,Web UI会默认打开4040端口进行监听,用户可以在其中查看有关任务执行器和统计信息的详细信息,甚至还可以查看任务在执行阶段所花费的时间,从而帮助用户进一步优化性能。

用例

分析:Spark在数据流传入构建实时分析时能够发挥很大作用,它可以有效处理各种来源的大量数据,支持HDFS,Kafka,Flume,Twitter和ZeroMQ,还可以处理自定义数据源。

趋势数据:Apache Spark可用于从传入事件流计算趋势数据。

物联网:物联网系统会生成大量数据然后将其推送到后端进行处理。 Apache Spark能够以固定的间隔(每分钟,小时,周,月等)构建数据管道,还可以基于一组可配置的事件触发操作。

机器学习:因为Spark可以批量处理离线数据并提供机器学习库(MLib),所以用户的数据集上可以轻松应用机器学习算法。 此外,用户可以通过一个大型数据集来实验不同的算法,将MLib与Spark Streaming组合,就可以轻松拥有一个实时机器学习系统。

虽然Apache Spark在很短的时间内就获得了极佳的人气,但是它也不是完美无缺的。

部署棘手

目前Apache Spark支持三种分布式部署方式,分别是standalone、spark on mesos和 spark on YARN。其中,独立部署是最简单直接的方法,而后两种部署方式较为复杂,对于没有经验的新手来说难度很大,在安装依赖的时候可能会遇到一些问题。如果不正确,Spark应用程序将在独立模式下工作,但在集群模式下运行时会遇到类路径异常。

内存问题

因为Apache Spark是为处理大量数据而存在的,所以监控和测量内存使用是至关重要的。Spark中有很多配置是可以根据用例进行调整的,默认配置不一定是最好的,所以建议用户要仔细阅读Spark内存配置的文档,根据自己的需求及时作出调整。

版本发布频繁导致API更改

Apache Spark无论是1.x.x版本还是2.x.x版本都一直遵循着三四个月的发布周期,虽说版本的快速迭代代表了Spark的活力和开发人员功能开发的能力,但是它也意味着API的变化。对于,不希望API变化的用户来说,频繁的版本发布反而成了一大难题,甚至为了确保Spark应用程序不受API更改的影响不得不增加额外的开销。

Python支持不成熟

Apache Spark支持Scala,Java和Python,这很对开发人员的胃口,但是这三者的地位并非平起平坐的,尤其是在涉及到新功能时,Java和Scala总是可以第一时间更新,而 Python库需要一些时间才能赶上最新的API和功能。所以用户在选用最新版本的Spark时,应该首先考虑使用Java或Scala实现,如果选用Python则需考虑 feature/API中是否已经支持。

文档贫乏

文档教程和代码演练对于新手快速提升能力非常重要,而Apache Spark的样例虽然会和文档一起分享出来,但是大部分的示例都很基本,有质量的深度样例很少,所以对于想要学习Spark的用户来说参考意义并不是很大。

后记

Apache Spark能够在短时间内击败其它对手走红,不是没有道理的,它的确是一款很好的大数据处理框架,但是如果你的数据没有达到一定的量级,选用Spark无异于杀鸡用牛刀,而简单的解决方案不失为一个更好的选择。


本文作者:田晓旭

来源:51CTO

相关文章:

【怎样写代码】确保对象的唯一性 -- 单例模式(二):解决方案

如果喜欢这里的内容,你能够给我最大的帮助就是转发,告诉你的朋友,鼓励他们一起来学习。 If you like the content here, you can give me the greatest help is forwarding, tell your friends, encourage them to learn together.

零基础如何学习java技术?

想要学习java技术,担心自己是零基础学不会?最近有很多同学会问到这样的问题,千锋教育小编告诉你,零基础是可以学习java技术的,但是要去正规的java培训机构学习,下面来看看详细的介绍。 零基础如何学习java技术?我们…

Rank() over()的用法

Rank() over()的用法 创建一个test表,并插入6条数据。CREATE TABLE test (a INT,b INT,c CHAR ) INSERT INTO test VALUES(1,3,E) INSERT INTO test VALUES(2,4,A) INSERT INTO test VALUES(3,2,D) INSERT INTO test VALUES(3,5,B) INSERT INTO test VALUES(4,2,C) …

5G将成开启物联网时代的金钥匙

物联网其实并非新鲜事物,在互联网兴起之初,就有人提出了万物皆可通过网络互联,这被认为是物联网最早的定义。其实早在1995年比尔盖茨在其书《未来之路》也提到了物联网,当初并未引起重视。如今,随着互联网与先进通信技…

【怎样写代码】确保对象的唯一性 -- 单例模式(三):单例模式

如果喜欢这里的内容,你能够给我最大的帮助就是转发,告诉你的朋友,鼓励他们一起来学习。 If you like the content here, you can give me the greatest help is forwarding, tell your friends, encourage them to learn together.

学习Python有什么优势?

学习Python的人越来越多,很多人就想知道,编程语言有那么多种,学习Python有什么优势?为什么这么多人会选择学习Python技术?今天我们就来聊一聊Python语言。 学习Python有什么优势? 入手快。Python语言相对于其他编程语言来说&am…

取消水晶报表的数据库登录框 分享

这两天在和斌做后台中的报表,暂定使用水晶报表,目前还只是处于对水晶报表的初级应用阶段,也就是知道如何 汇个总、写个函数、传个参数。 问题总是层出不穷,在最后整合报表,进行报表显示测试的时候,发现每次…

有光照就能上网 0.2秒即可下载一部高清电影

再也不用费尽心思询问 WIFI 密码了,以后,哪里有光照,哪里就可以上网。中国“可见光通信系统关键技术研究”近日取得重大突破,实时通信速率提升至 50Gbps,也就是说: 0.2 秒即可完成一部高清电影的下载。 有光…

【怎样写代码】确保对象的唯一性 -- 单例模式(四):饿汉式单例类与懒汉式单例类的讨论

如果喜欢这里的内容,你能够给我最大的帮助就是转发,告诉你的朋友,鼓励他们一起来学习。 If you like the content here, you can give me the greatest help is forwarding, tell your friends, encourage them to learn together.

学Java需要学哪些书?

java技术所要学到的东西是很多的,只要入了这一行,学习是不能停止的,工作节奏在加快,新知识也源源不断,学习的最好途径就是看书,小编给大家推荐这几本java方面的书,搭配学习课程,让学…

【怎样写代码】确保对象的唯一性 -- 单例模式(五):一种更好的单例实现方法(静态内部类)

如果喜欢这里的内容,你能够给我最大的帮助就是转发,告诉你的朋友,鼓励他们一起来学习。 If you like the content here, you can give me the greatest help is forwarding, tell your friends, encourage them to learn together.

郭为:大数据时代的企业管理挑战

互联网时代,创新使得财富积累的速度前所未有的快,贫富不均也前所未有地分化。这个时代,世界的竞争变成人与人的竞争,人与人的竞争就是智慧的竞争,就是人的创新能力的竞争。如何才能提高人的竞争力,是管理科…

如何挑选靠谱的Java培训机构

想要学习java技术的人越来越多,市面上出现的java培训机构也越来越多,很多人都想找一个靠谱的java培训机构,那么到底该如何挑选靠谱的Java培训机构呢?看看下面小编为大家做的详细介绍吧。 如何挑选靠谱的Java培训机构? 首先挑选java培训机…

ActiveMQ在C#中的应用

ActiveMQ是个好东东,不必多说。ActiveMQ提供多种语言支持,如Java, C, C, C#, Ruby, Perl, Python, PHP等。由于我在windows下开发GUI,比较关心C和C#,其中C#的ActiveMQ很简单,Apache提供NMS(.Net Messaging …

数据中心防雷SPD技术漫谈

雷电是大自然里一种普遍现象,在世界的任意角落都会有雷电天气出现,只不过数量不同而已。雷电对大地及地面物体的放电现象成为雷击,这种放电过程会产生强烈的闪电并伴随巨大的声音,对被击物体有严重的危害,会在物体的两…

【怎样写代码】确保对象的唯一性 -- 单例模式(六):扩展案例

如果喜欢这里的内容,你能够给我最大的帮助就是转发,告诉你的朋友,鼓励他们一起来学习。 If you like the content here, you can give me the greatest help is forwarding, tell your friends, encourage them to learn together.

Python数据分析可以应用到哪些领域

随着大数据的应用越来越广泛,应用的行业也越来越多,我们每天都可以看到一些关于数据分析的新鲜应用,从而帮助人们获取到有价值的信息。例如,网购时经常发现电商平台向我们推荐商品,往往这类商品都是我们最近浏览的&…

printf(%d, -10u); 这个输出什么呀, 0或1?

printf("%d", -1<0u); 这个输出什么呀, 0或1?周银辉 既然我这么问了, 那么答案自然不是1&#xff0c;而是0看看下面的代码: 对于-10u输出为-1&#xff0c;似乎理所当然&#xff0c;但为什么-1<0u却输出0呢&#xff0c;也就是说-1不小于0u&#xff0c;好神奇啊…

Enterprise Library 4 缓存应用程序块的设计

缓存应用程序为以下目的而设计&#xff1a; 提供一个大小可管理的 API 集合。允许开发人员添加标准的缓存操作到他们的应用程序中&#xff0c;而不用学习应用程序块的内部工作。用 Enterprise Library 配置控制台来简化配置。有效率的执行。线程安全。某些东西在被多个程序线程…

【软件测试培训】了解jmeter分布式测试

一提到分布式测试&#xff0c;大家肯定会觉得&#xff0c;哇!好高大上&#xff0c;一定很高深的吧&#xff0c;这里老师推出不做傻白甜系列文章&#xff0c;带同学们一步一步理解jmeter的分布式测试。 首先我们来看下jmeter自动化测试的流程 &#xff0c;见如下图1 【软件测试…

存储过程中返回结果集

存储过程中返回结果 从存储过程中返回结果有三种方式&#xff1a; 1、 返回结果集 这是客户端应用程序返回结果的最通用的方法。结果集是通过使用select语句选择数据产生的。结果集可以从永久表、临时表或局部变量中产生。将结果返回到另一个存储过程不是一种有效的方法。存储…

我的股票交易策略

投资股市已经成为我们进行资产配置的一个重要选择。在这个市场中主流的投资方式无外乎 价值投资 和 趋势投资 两种。价值投资需要了解各种财务指标来评价各支股票&#xff0c;在被市场低估时买入&#xff0c;在被市场高估时卖出。这对于非财务背景的人来说门槛偏高。趋势投资需…

你负责选歌,索尼负责用 AI 谱出风格相似的曲子

近日&#xff0c;索尼巴黎计算机科学实验室&#xff08;CSL&#xff09;正在开发一套算法系统 Flow Machines&#xff0c;该系统根据用户的品味谱写歌曲&#xff0c;其歌曲在迎合用户口味的基础上&#xff0c;适用于所有现有音乐风格。 技术人员搭建了一个拥有 13000 多首音乐的…

java培训:Java的十大算法

想要学好java语言&#xff0c;就要打好基础&#xff0c;java要学习的东西有很多&#xff0c;今天小编就来和大家说下java的十大算法。 算法一&#xff1a;快速排序算法 快速排序是由东尼霍尔所发展的一种排序算法。在平均状况下&#xff0c;排序 n 个项目要Ο(nlogn) 次比较。…

PetShop之表示层设计 - 《解剖PetShop》系列之六

六 PetShop之表示层设计 表示层&#xff08;Presentation Layer&#xff09;的设计可以给系统客户最直接的体验和最十足的信心。正如人与人的相交相识一样&#xff0c;初次见面的感觉总是永难忘怀的。一件交付给客户使用的产品&#xff0c;如果在用户界面&#xff08;User Inte…

物联网时代营销怎么做?

这几年和大数据、O2O一样热门的词还包括“物联网”&#xff0c; 物联网是新一代信息技术的重要组成部分&#xff0c;也是“信息化”时代的重要发展阶段。其英文名称是&#xff1a;“internet of things(IoT)”。顾名思义&#xff0c;物联网就是物物相连的互联网。 说的再通俗一…

怎样去掉 CSDN-Markdown 上传图片中的水印

自己一直使用 Markdown 写技术图文&#xff0c;我们知道在 Markdown 中插入图片需要这个图片的URL地址&#xff0c;那么必须得找一个图床来存放图片。 // Markdown 中插入图片的语法结构![这里写图片描述](这里写图片的URL地址) 我的方法是这样的&#xff1a;在 CSDN 上发一篇…

Python编程比较好的机构怎么选择

想要进入到IT行业&#xff0c;很多人的首要选择都是学习Python编程语言&#xff0c;因为Python编程语言入门是相对比较简单的&#xff0c;但是想要学好Python技术&#xff0c;找一个好的Python培训机构是非常重要的&#xff0c;那么Python编程比较好的机构怎么选择呢?来看看下…

赚钱是刚需,如何正确的交易股票?

试着考虑下面这些情景&#xff1a; 听隔壁老王说&#xff0c;最近股市行情不错&#xff0c;自己也想买点股票&#xff0c;但不知道该买那支&#xff1f;犹犹豫豫到处打听消息。 买入一支股票后&#xff0c;时不时就会拿出手机看看它的价格&#xff0c;有时候甚至一天要看很多…

C# Windows CE使用小技巧实例

C# Windows CE使用的一些感受&#xff1a;使用Windows的开发机上用C#启动一个外部程序的方法有很多&#xff0c;但这些方法用在使用WinCE的目标工控机上都无能为力。 C# Windows CE使用1、 现在以打开一个IE为例&#xff0c;介绍如何在WinCE下使用C#来打开一个外部文件&#xf…