Java-Spark系列1-spark概述

文章目录

  • 一.大数据技术栈
  • 二.Spark概述
    • 2.1 MapReduce框架局限性
    • 2.2 Hadoop生态圈中的各种框架
    • 2.3 Spark
      • 2.3.1 Spark的优势
      • 2.3.2 Spark特点
      • 2.3.3 SPRAK 2 新特性

一.大数据技术栈

如下图,当前的一个大数据技术栈:
Java-Spark系列1-spark概述_第1张图片

如上所示:

  1. 数据采集,一般通过Sqoop或Flume将关系型数据库数据同步到hadoop平台。
  2. 底层存储,采集到的数据存储在hdfs上,分布式进行存储。
  3. 资源调度,hadoop的资源调度就是yarn,用来协调各个集群节点的资源。
  4. 底层计算框架, 分MapReduce和Spark。
  5. 应用层,一般是BI自助分析

二.Spark概述

Apache Spark是一个用于大规模数据处理的统一分析引擎。它提供了Java、Scala、Python和R的高级api,以及支持通用执行图的优化引擎。它还支持一组丰富的高级工具,包括用于SQL和结构化数据处理的Spark SQL,用于机器学习的MLlib,用于图形处理的GraphX,以及用于增量计算和流处理的structured Streaming。

2.1 MapReduce框架局限性

MapReduce框架存在一些局限性

  1. 处理效率低效
    1.1 Map 结果写磁盘,Reduce 写HDFS ,多个MR 之间通过HDFS 交换数据 ;
    1.2 任务调度和启动开销大 ;
    1.3 无法充分利用内存

  2. 不适合迭代计算(如机器学习 、 图计算等 ), 交互式处理(数据挖掘 )

  3. 不适合流式处理(点击日志分析 )

  4. MapReduce编程不够灵活,仅支持Map 和Reduce 两种操作

2.2 Hadoop生态圈中的各种框架

批处理 :MapReduce 、Hive 、Pig
流式计算 :Storm
交互式计算 :Impala、presto

需要一种灵活的框架可同时进行批处理、流式计算、交互式计算。

于是引入了Spark计算引擎

2.3 Spark

2.3.1 Spark的优势

  1. 内存计算引擎 , 提供Cache 机制来支持需要反复迭代计算或者多次数据共享 , 减少数据读取的IO 开销

  2. DAG 引擎 , 减少多次计算之间中间结果写到HDFS 的开销

  3. 使用多线程池模型来减少task 启动开稍 ,shuffle 过程中避免不必要的sort 操作以及减少磁盘IO

2.3.2 Spark特点

  1. 易用
    提供了丰富的API , 支持Java ,Scala ,Python 和R 四种语言
    R语言很少被用到,基本都是使用Java、Scala、Python来操作Spark

    代码量比MapReduce 少2~5 倍

  2. 与Hadoop 集成
    读写HDFS/Hbase
    与YARN 集成

2.3.3 SPRAK 2 新特性

  1. SparkSession:新的上下文入口,统一SQLContext和HiveContext
  2. dataframe与dataset统一,dataframe只是dataset[Row]的类型别名。由于Python是弱类型语言,只能使用DataFrame
  3. Spark SQL 支持sql 2003标准
  4. 支持ansi-sql
  5. 支持ddl命令
  6. 支持子查询:in/not in、exists/not exists
  7. 提升catalyst查询优化器的性能

你可能感兴趣的:(大数据和数据仓库,#,Spark,spark,big,data,Spark概述)