大数据相关技术扩展

  • 分布式计算框架Spark
  • 分布式计算框架Flink
  • 大数据处理神器Beam

学完MapReduce之后,有啥想法(Spark的产生背景)

  • 开发起来不爽
  • 运行速度不快
  • 框架的多样性

分布式计算框架Spark

Spark:快速的通用的分布式计算框架

概述和特点

Speed,(开发和执行)速度快

基于内存的计算;DAG(有向无环图)的计算引擎;基于线程模型;

Easy of use,易用

多语言(Java,python,scala,R);多种计算API可调用;可在交互式模式下运行;

Generality 通用

可以一站式解决多个不同场景的应用业务

RunsEverywhere

  • 可以运行在Hadoop的yarn,Mesos,standalone(Sprk自带的)这些资源管理和调度的程序之上
  • 可以连接包括HDFS,Cassandra,HBase,S3这些数据源

产生背景

MapReduce局限性

  • 代码繁琐(官网有WordOCunt案例)

  • 效率低下:

    • 有结果写入磁盘,降低效率;
    • 通过进程模型,销毁创建效率低
  • 只能支持map和reduce方法

  • 不适合迭代多次,交互式,流水的处理

框架的多样化

  • 批处理(离线):MapReduce,Hive,Pig
  • 流式处理(实时):Storm,Jstorm
  • 交互式计算 :Impala

综上:框架的多样化导致生产时所需要的框架繁多,学习运维成本较高,那么有没有一种框架,既能执行效率高,学习成本低,还能支持批处理和流式处理与交互计算呢?

结论:Spark诞生

Spark与Hadoop对比

Hadoop生态系统

  • R:数据分析
  • Mahout:机器学习库
  • pig:脚本语言,跟Hive类似
  • Oozie:工作流引擎,管理作业执行顺序
  • Zookeeper:用户无感知,主节点挂掉选择从节点作为主的
  • Flume:日志收集框架
  • Sqoop:数据交换框架,例如:关系型数据库与HDFS之间的数据交换
  • Hbase : 海量数据中的查询,相当于分布式文件系统中的数据库

BDAS:BerkeleyData Analytics Stack(伯克利数据分析平台)

Spark与Hadoop生态圈对比

注意:在对实时的查询来说,Spark只是一个快速的分布式计算框架,所以没有存储的框架,但是可以连接多个存储的数据源

Hadoop与Spark对比

  • MapReduce与Spark对比:

    • MapReduce:若进行多次计算,MP则需要将上一次执行结果写入到磁盘,叫做数据落地
    • Spark:直接将存储在内存中的结果拿来使用,没有数据落地

Spark运行模式

  • Standalone
  • Yarn
  • Mesos
  • Local

这四种模式的代码都是一样的,只是最后提交的时候可以选择这四种其一进行提交