现在如果你想要选择一个解决方案来处理企业中的大数据并不是难事,毕竟有很多数据处理框架可以任君选择,如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

大火的Apache Spark也有诸多不完美相关推荐

  1. 大规模数据处理Apache Spark开发

    大规模数据处理Apache Spark开发 Spark是用于大规模数据处理的统一分析引擎.它提供了Scala.Java.Python和R的高级api,以及一个支持用于数据分析的通用计算图的优化引擎.它 ...

  2. Apache Spark 2.2.0 中文文档 翻译活动

    为什么80%的码农都做不了架构师?>>>    Spark 2.2.0 已然发布(2017-07-11 发布) 5 天了,更新了一些新套路吧! 此版本从 Structured Str ...

  3. Apache Spark源码走读之8 -- Spark on Yarn

    欢迎转载,转载请注明出处,徽沪一郎. 概要 Hadoop2中的Yarn是一个分布式计算资源的管理平台,由于其有极好的模型抽象,非常有可能成为分布式计算资源管理的事实标准.其主要职责将是分布式计算集群的 ...

  4. Apache Spark 介绍的演讲ppt (slice),全英文

    这里是本人制作的Apache Spark 介绍的演讲ppt,全英文.这里粘贴部分截图,具体可到相应的链接下载ppt文件,ppt文件中有动画: 下载地址:https://download.csdn.ne ...

  5. Apache Spark 2.2中基于成本的优化器(CBO)(转载)

    Apache Spark 2.2最近引入了高级的基于成本的优化器框架用于收集并均衡不同的列数据的统计工作 (例如., 基(cardinality).唯一值的数量.空值.最大最小值.平均/最大长度,等等 ...

  6. #Apache Spark系列技术直播# 第六讲【 What's New in Apache Spark 2.4? 】

    Apache Spark系列技术直播第六讲 [ What's New in Apache Spark 2.4? ] Abstract(简介): This talk will provide an ov ...

  7. 实用 | 从Apache Kafka到Apache Spark安全读取数据

    引言 随着在CDH平台上物联网(IoT)使用案例的不断增加,针对这些工作负载的安全性显得至关重要.本篇博文对如何以安全的方式在Spark中使用来自Kafka的数据,以及针对物联网(IoT)使用案例的两 ...

  8. Apache Spark Jobs 性能调优

    当你开始编写 Apache Spark 代码或者浏览公开的 API 的时候,你会遇到各种各样术语,比如transformation,action,RDD(resilient distributed d ...

  9. 新版本来袭:Apache Spark 1.5新特性介绍

    Apache Spark社区2015年9月9日发布了1.5版本,该版本由230+开发人员和80+机构参与,修复了1400多个补丁,该版本可以通过 http://spark.apache.org/dow ...

最新文章

  1. 解析:一种合适的数据中心建造方式有多重要?
  2. mybatis(mapper映射文件)
  3. android手机卫士、3D指南针、动画精选、仿bilibli客户端、身份证银行卡识别等源码...
  4. 为什么自己设计的嵌入式系统不如工业级产品稳定?
  5. 多线程的全局变量与局部变量
  6. 运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行脚本的问题
  7. Qt工作笔记-XML文件的写入
  8. java半解释半编译_编译型语言、解释型语言、半编译半解释型语言
  9. 外模告急时薪翻倍?中国AI虚拟模特取代高价外模,效果逼真与真人无异。
  10. 仅需10道题轻松掌握Python文件处理 | Python技能树征题
  11. 数据结构电视大赛投票系统
  12. Xenserver console界面无法查看虚拟机的信息
  13. .Net 下的Wondows窗体常用项目
  14. 909422229_Mysql创建序列
  15. 常见计算机病毒种类及特征介绍与分析
  16. Mysql中使用mybatis中sql语句写法操作
  17. 淘宝再次升级!这次的关键词是啥
  18. 网络扫描工具ncnmap
  19. JVM 下篇:性能监控与调优
  20. # c语言判断字符类型

热门文章

  1. lispbox 安装运行.sh的时候出现 lispbox.sh: 2: lispbox.sh: Bad substitution
  2. 【GDI+】 线段 文字 定位的问题(二)
  3. 'or'='or'经典漏洞原理分析
  4. Htaccess文件是什么以及Windows下自由创建.htaccess文件的N种方法
  5. Sql server 2005带来的分页便利
  6. 如何在DataGrid里面产生滚动条而不滚动题头
  7. CUDA Samples: Dot Product
  8. 【FFmpeg】如何通过字符串到对应的封装器,以flv为例
  9. linux特殊系统变量,linux环境几个特殊的shell变量
  10. linux怎样自动检查link文件_自动共享和上传文件到兼容的托管站点 | Linux 中国