简介
- 快速高效
- Spark可以将中间结果写到本地磁盘或将中间结果写到本地磁盘或将中间cache到内存中 节省了大量的网络IO和磁盘IO开销 并且Spark使用更先进的DAG任务调度思想 可以将多个计算逻辑构建成一个有向无环图 并且还会将DAG先进行优化后再生成物理执行计划 同时Spark也支持数据缓存在内存中的计算 性能比Hadoop MapReduce快100倍 即便是不将数据cache到内存中 其速度也是MapReduce 10倍以上
- 简洁易用
- Spark支持Java Scala Python和R等编程语言编写应用程序 大大降低了使用者的门槛 自带了80多个高等级操作算子 并且允许在Scala Python R的使用命令进行交互式运行 可以非常方便的在Spark Shell中编写spark程序
- 全栈式数据处理
- Spark提供了统一的大数据处理解决方案 非常具有吸引力 毕竟任何公司都想用统一的平台去处理遇到的问题 减小开发和维护的人力成本和部署平台的物力成本 同时Spark还支持SQL 大大降低了大数据开发者的使用门槛 同时提供了SparkStream和Structed Streaming 可以处理实时流数据 MLlib机器学习库 提供机器学习相关的统计 分类 回归等领域的多种算法实现 其高度封装的API接口大大降低了用户的学习成本 SparkGraghX提供分布式图形计算处理能力 PySpark支持Python编写Spark程序;SparkR支持R语言编写Spark程序
- 兼容性良好
- Spark支持的多种部署方案:Standalone是Spark自带的资源调度模式;Spark可以运行在Hadoop的YARN上面;Spark可以运行在Mesos上(Mesos是一个类似于YARN的资源调度框架);Spark还可以Kubernetes实现容器化的资源调度
- 单机运行 测试
- Yarn资源调度平台
- 自带集群模式
- 第三方调度平台
- 丰富的数据源支持:Spark除了可以访问操作系统自身的本地文件系统和HDFS之外 还可以访问Cassandra HBase Hive Alluxio 以及任何Hadoop兼容的数据源 这极大地方便了大数据系统进行顺利迁移到Spark
- MapReduce和Spark的本质区别
- MR只能做离线计算 如果实现复杂计算逻辑 一个MR搞不定 就需要将多个MR按照先后顺序连城一串 一个MR计算完成后会将计算结果写入到HDFS中 下一个MR将上一个MR的输出作为输入 这样就要频繁读写HDFS 网络IO和磁盘IO会成为性能瓶颈 从而导致效率低下
- 既可以做离线计算 又可以做实时计算 提供了抽象的数据集(RDD Dataset DataFrame DStream)
- 有高度封装的API 算子丰富 并且使用了更先进的DAG有向无环图调度思想 可以对执行计划优化后再执行 并且可以将数据cache到内存中进行复用
注意:MR和Spark在Shuffle时数据都落本都磁盘
