[Spark笔记]Apache Spark — Overview

版权声明:欢迎转载,注明出处即可 https://blog.csdn.net/yolohohohoho/article/details/87894576

Spark简介

Apache Spark是一个开源的分布式通用计算框架,具有(大部分)内存数据处理引擎,可以对大量的数据静态或者动态地进行ETL,分析,机器学习和图形处理,并为各种编程语言提供丰富简洁的高级APIs: Scala, Python, Java, R 以及SQL。

你可以将Spark看做一个分布式的数据处理引擎,用于批量和流式模式,包括SQL查询,图形处理和机器学习。

和Hadoop基于磁盘的两阶段MapReduce计算引擎相比,Spark的多阶段内存计算引擎运行在内存中运行大部分计算,因此在大多数情况下能为某些应用程序提供更好的性能,例如迭代算法和交互式数据挖掘。

Spark也经常被称作集群计算引擎,或者简单地称作执行引擎。
Spark可用于执行复杂的多阶段应用程序,如机器学习算法和交互式即席查询。Spark为内存集群计算提供了一个高效的数据抽象,称作弹性分布式数据集(Resilient Distributed Dataset, RDD)

Spark主要用Scala编写,但它为开发者提供其他语言的API,如Java, Python和R。

如果你需要在低延迟的条件下处理大量的数据(传统的MR程序无法满足),那么Spark是一个可行的选择。

  • 从任何数据源访问任何数据类型
  • 巨大的存储和数据处理需求

Spark可以以本地集群的形式,在本机或者云端运行。它运行在Hadoop YARN, Apache Mesos, 独立部署模式或者云端部署(Amazon EC2或IBM Bluemix)之上。

在高层次上,Spark应用程序利用输入数据来创建RDDs, 将它们通过延迟转换函数(lazy transformations)转换为其他形式,最后执行操作(Actions)来收集或者存储数据,不难吧?

程序员使用指定语言的API以及转换和操作在RDD上工作,数据工程师使用更高级别的数据抽象如DataFrame,Pipelines APIs或者外部工具(连接到Spark)来工作,最后由管理员调节集群参数以部署Spark应用程序。

Spark的目标以更快的计算速度,更易于使用,更好的扩展性以及交互式分析等,成为一个通用的计算平台,让各种专门的应用程序框架运行在其之上。

为什么用Spark

  • 易于上手
  • 可用于多种类型的工作
  • 利用最好的分布式批量数据处理(Hadoop)
  • RDD - 分布式并行Scala数据集合
  • 丰富的标准库
  • 统一的开发和部署环境
  • 交互式探索/探索性分析(Spark-Shell)
    • 又称为即席查询(Ad-hoc queris)
  • 数据集成工具,支持丰富的数据源
  • 底层优化
    • Spark’s lazy evaluation gives plenty of opportunities to include low-level optimizations (so users have to know less to do more)
  • 适用于低延迟交互式工作(low latency)
  • ETL实现更简单
  • 统一简洁的高层次API
  • 近乎零磁盘使用以获得更好的性能
  • 容错

猜你喜欢

转载自blog.csdn.net/yolohohohoho/article/details/87894576