赞
踩
如下图,当前的一个大数据技术栈:
如上所示:
Apache Spark是一个用于大规模数据处理的统一分析引擎。它提供了Java、Scala、Python和R的高级api,以及支持通用执行图的优化引擎。它还支持一组丰富的高级工具,包括用于SQL和结构化数据处理的Spark SQL,用于机器学习的MLlib,用于图形处理的GraphX,以及用于增量计算和流处理的structured Streaming。
MapReduce框架存在一些局限性
处理效率低效
1.1 Map 结果写磁盘,Reduce 写HDFS ,多个MR 之间通过HDFS 交换数据 ;
1.2 任务调度和启动开销大 ;
1.3 无法充分利用内存
不适合迭代计算(如机器学习 、 图计算等 ), 交互式处理(数据挖掘 )
不适合流式处理(点击日志分析 )
MapReduce编程不够灵活,仅支持Map 和Reduce 两种操作
批处理 :MapReduce 、Hive 、Pig
流式计算 :Storm
交互式计算 :Impala、presto
需要一种灵活的框架可同时进行批处理、流式计算、交互式计算。
于是引入了Spark计算引擎
内存计算引擎 , 提供Cache 机制来支持需要反复迭代计算或者多次数据共享 , 减少数据读取的IO 开销
DAG 引擎 , 减少多次计算之间中间结果写到HDFS 的开销
使用多线程池模型来减少task 启动开稍 ,shuffle 过程中避免不必要的sort 操作以及减少磁盘IO
易用
提供了丰富的API , 支持Java ,Scala ,Python 和R 四种语言
R语言很少被用到,基本都是使用Java、Scala、Python来操作Spark
代码量比MapReduce 少2~5 倍
与Hadoop 集成
读写HDFS/Hbase
与YARN 集成
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。