欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

什么是spark?

程序员文章站 2022-03-03 10:43:23
什么是Spark? Spark官网:http://spark.apache.org Spark是一种快速、通用、可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache*项目。目前,Spark生态 ......

 

  • 什么是spark? 

  • spark官网:

什么是spark?

spark是一种快速、通用、可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校amplab,2010年开源,2013年6月成为apache孵化项目,2014年2月成为apache*项目。目前,spark生态系统已经发展成为一个包含多个子项目的集合,其中包含sparksql、spark streaming、graphx、mllib等子项目,spark是基于内存计算的大数据并行计算框架。spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将spark部署在大量廉价硬件之上,形成集群。

spark得到了众多大数据公司的支持,这些公司包括hortonworksibmintelclouderamaprpivotal、百度、阿里、腾讯、京东、携程、优酷土豆。当前百度的spark已应用于凤巢、大搜索、直达号、百度大数据等业务;阿里利用graphx构建了大规模的图计算和图挖掘系统,实现了很多生产系统的推荐算法;腾讯spark集群达到8000台的规模,是当前已知的世界上最大的spark集群。

  • 概念:spark是统一的分布式大数据分析引擎
  • 关键词: 
    • 统一:spark能够适应多种计算场景 (离线计算、实时计算、机器学习、图计算、ai应用)。一般公司在进行技术选型过程,spark首选

    • 大数据分析引擎:spark能够分析数据,但是没有存储。一般线上的spark数据来源 (hdfs, hive、kafka、flume、日志文件、关系型数据库、nosql数据库)。spark数据出口(hdfs、hive、kafka、redise、关系型数据库、nosql数据库)

    • 分布式:spark一般情况是以集群模式存在。架构 :master/slaver(主从结构)

     应用场景

    • 精准广告推荐系统(spark机器学习,一般在广告或者电商公司应用)

    • 金融风险管控系统 (对实时性要求比较,起码毫秒级)

    • 精细化运行系统 (cms系统 、bi系统,重点:多维分析)

    • 用户画像 (用户数据画像)

  • spark的好处

spark是一个开源的类似于hadoop mapreduce的通用的并行计算框架,spark基于map reduce算法实现的分布式计算,拥有hadoop mapreduce所具有的优点;但不同于mapreduce的 是spark中的job中间输出和结果可以保存在内存中,从而不再需要读写hdfs,因此spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。

spark是mapreduce的替代方案,而且兼容hdfs、hive,可融入hadoop的生态系统,以弥补mapreduce的不足。

  • spark特点

    • 速度快
      • 典型数据处理流程:spark在使用过程中,会读取hdfs上数据,并且会将hdfs中数据驻留在内存当中,将数据进行缓存、在后续数据迭代操作过程能够重用内存中的数。在逻辑回归处理(算法)中,spark的速度要比hadoop 理论上快100倍
      • 与hadoop的mapreduce相比,spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上。spark实现了高效的dag执行引擎,可以通过基于内存来高效处理数据流。
      • 什么是spark?
    • spark对程序员非常友好
      • spark支持多种语言(java、scala、python、r、sql)
      • spark支持java、python和scala的api,还支持超过80种高级算法,使用户可以快速构建不同的应用。而且spark支持交互式的python和scala的shell,可以非常方便地在这些shell中使用spark集群来验证解决问题的方法。
    • spark一站式解决方案
      • 五大模块
        • sparkcore (处理离线数据)
        • sparksql (主要用来做多维数据分析、以及交互式查询)
        • sparkstreaming (实时数据处理程序)
        • spark mllib (机器学习 包含非常多算法,相当于spark提供的一个算法)
        • spark graphx (图计算处理模块)

        在开发spark应用程序过程中,能够同时使用以上所有模块。以上模块能够无缝兼容

spark提供了统一的解决方案。spark可以用于批处理、交互式查询(spark sql)、实时流处理(spark streaming)、机器学习(spark mllib)和图计算(graphx)。这些不同类 型的处理都可以在同一个应用中无缝使用。spark统一的 解决方案非常具有吸引力,毕竟任何公司都想用统一的平台去处理遇到的问题,减少开发和维护的人力成本和部署平台的物力成本。

  •  兼容性
    • spark能够兼容 (hadoop、hive、hbase、yarn、kafka、flume、redise、关系型数据等)
    • spark可以非常方便地与其他的开源产品进行融合。比如,spark可以使用hadoop的yarn和apache mesos作为它的资源管理和调度器,器,并且可以处理所有hadoop支持的数据,包括hdfs、hbase和cassandra等。这对于已经部署hadoop集群的用户特别重要,因为不需要做任何数据迁移就可以使用spark的强大处理能力。spark也可以不依赖于第三方的资源管理和调度器,它实现了standalone作为其内置的资源管理和调度框架,这样进一步降低了spark的使用门槛,使得所有人都可以非常容易地部署和使用spark。此外,spark还提供了在ec2上部署standalone的spark集群的工具。

  什么是spark?