Hadoop十年

找了一张Hadoop十年的生态发展图:

Spark概况:

Apache Spark是一个开源簇运算框架,最初是由加州大学柏克莱分校AMPLab所开发。相对于HadoopMapReduce会在运行完工作后将中介数据存放到磁盘中,Spark使用了内存内运算技术,能在数据尚未写入硬盘时即在内存内分析运算。Spark在内存内运行程序的运算速度能做到比Hadoop MapReduce的运算速度快上100倍,即便是运行程序于硬盘时,Spark也能快上10倍速度。Spark允许用户将数据加载至簇内存,并多次对其进行查询,非常适合用于[机器学习]。
使用Spark需要搭配簇管理员和分布式存储系统。Spark支持独立模式(本地Spark簇)、Hadoop YARNApache Mesos的簇管理。 在分布式存储方面,Spark可以和HDFSCassandraOpenStack SwiftAmazon S3等接口搭载。 Spark也支持伪分布式(pseudo-distributed)本地模式,不过通常只用于开发或测试时以本机文件系统取代分布式存储系统。在这样的情况下,Spark仅在一台机器上使用每个CPU核心运行程序。

Spark发展历程:

  • Spark在2009年由Matei Zaharia加州大学柏克莱分校AMPLab开创
  • 2010年通过BSD许可协议开源发布。
  • 2013年6月,该项目被捐赠给Apache软件基金会并切换许可协议至Apache2.0。
  • 2014年2月,Spark成为Apache的顶级项目。
  • 2014年11月,Databricks团队使用Spark 刷新数据排序世界记录。
  • 2014年5月底Spark1.0.0发布。
  • 2014年9月Spark1.1.0发布
  • 2014年12月Spark1.2.0发布
  • ...
  • 2016年1月4号Spark1.6.0发布
  • ...
  • 2016年6月26号Spark2.0发布
  • ...
  • 时至今日的2.2.0版本

Spark作为Hadoop生态中重要的一员,其发展速度堪称恐怖,不过其作为一个完整的技术栈,在技术和环境的双重刺激下,得到如此多的关注也是有依据的。核心在于内存计算模型代替Hadoop生态的MapReduce离线计算模型,用更加丰富Transformation和Action算子来替代map,reduce两种算子。

Spark基本组件:

  • Spark Core:Spark核心API,提供DAG分布式内存计算框架。
  • SparkSql:提供交互式查询API,
  • SparkStreaming:实时流处理。
  • SparkML:机器学习API
  • SparkGraphx:图形计算。

Spark中的基本概念:

  • Master:Spark集群的主节点,负责资源的调度,管理。
  • Worker:Spark集群中的工作节点,能够运行executor进程,运行作业代码的节点
  • Application:开发的Spark应用程序。
  • pplication Jar:把写好的spark工程,打包成一个jar包,其中包括了所有的第三方jar依赖包。
  • SparkContext:SparkApp的入口,负责资源的调度,任务的分发。
  • RDD:(Resillient Distributed Dataset)弹性式分布式数据集,是SparkAPP的核心操作对象,也是最底层的数据抽象,一个RDD会被分为多个Partition(分区),每个分区分布在集群的不同节点上。
  • Local模式:Spark应用的本地模式,测试环境,不需要搭建集群环境就能够使用。
  • Standalone:原生的Master/Worker模式来运行APP。
  • Yarn:Yarn集群模式,通过Yran集群来进行SparkAPP的运行。
  • Driver Program:运行程序中main方法的进程,就是driver,也叫driver进程
  • Cluster Manager:集群管理器,就是为每个spark application,在集群中调度和分配资源的组件,比如Spark Standalone、YARN、Mesos等
  • Deploy Mode:部署模式,无论是基于哪种集群管理器,spark作业部署或者运行模式,都分为两种,client和cluster,client模式下driver运行在提交spark作业的机器上;cluster模式下,运行在spark集群中
  • Executor:集群管理器为application分配的进程,运行在worker节点上,负责执行作业的任务,并将数据保存在内存或磁盘中,每个application都有自己的executor
  • Job:每个spark application,根据你执行了多少次action操作,就会有多少个job
  • Stage:每个job都会划分为多个stage(阶段),每个stage都会有对应的一批task,分配到executor上去执行
  • Task:driver发送到executor上执行的计算单元,每个task负责在一个阶段(stage),处理一小片数据,计算出对应的结果

Spark与Hadoop:

说起Hadoop,可能第一个想到的就是MapReduce,MapReduce是Hadoop的核心,但不是全部,Hadoop早已经不是某个离线批处理框架了,而是代表了整个Hadoop生态系统,从页首的图可以看到Spark只是整个Hadoop生态系统的一部分。Spark仅仅能够代替Hadoop的MapReduce框架做内存计算。无论是交互式查询还是实时流处理数据均来源与Hadoop生态的组件:hbase,hive,Hdfs,Kafka...所以说Spark与Hadoop是密不可分的。

[Spark]-Spark发展历程与基本概念的更多相关文章

  1. Spark的发展历程

    ·2009年:Spark诞生于AMPLab.·2010年:开源.·2013年6月:Apache孵化器项目.·2014年2月:Apache顶级项目.·2014年2月:大数据公司Cloudera宣称加大S ...

  2. spark shuffle发展历程

    spark2.3 shuffle manager,默认sortShuffleManager // Let the user specify short names for shuffle manage ...

  3. 第一篇:GPU 编程技术的发展历程及现状

    前言 本文通过介绍 GPU 编程技术的发展历程,让大家初步地了解 GPU 编程,走进 GPU 编程的世界. 冯诺依曼计算机架构的瓶颈 曾经,几乎所有的处理器都是以冯诺依曼计算机架构为基础的.该系统架构 ...

  4. C#与C++的发展历程第三 - C#5.0异步编程巅峰

    系列文章目录 1. C#与C++的发展历程第一 - 由C#3.0起 2. C#与C++的发展历程第二 - C#4.0再接再厉 3. C#与C++的发展历程第三 - C#5.0异步编程的巅峰 C#5.0 ...

  5. Linux实战教学笔记03:操作系统发展历程及系统版本选择

    标签(空格分隔): Linux实战教学笔记-陈思齐 第1章 Linux简介 1.1 什么是操作系统? 简单讲:操作系统就是一个人与计算机硬件的中介. 操作系统,英文名称Operating System ...

  6. C#与C++的发展历程第一 - 由C#3.0起

    俗话说学以致用,本系列的出发点就在于总结C#和C++的一些新特性,并给出实例说明这些新特性的使用场景.前几篇文章将以C#的新特性为纲领,并同时介绍C++中相似的功能的新特性,最后一篇文章将总结之前几篇 ...

  7. Java的发展历程

    Java的发展历程充满了传奇色彩. 最初,Java是由Sun公司的一个研究小组开发出来的, 该小组起先的目标是想用软件实现对家用电器进行集成控制的小型控制装置. 开始,准备采用C++,但C++太复杂, ...

  8. 操作系统和Python的发展历程

    一:操作系统的发展历史: 操作系统:什么是操作系统?我们首先想到的是电脑,,也就是所谓的Windows8,Windows7,或者XP系统和Windows10,当然也包括我们手机的安卓系统或者IPhon ...

  9. Linux发展历程

    阅读内容 一.linux基础 二.linux发展史 三.linux图形界面 回到顶部 一.linux基础 1.操作系统的分类 1.1 Windows 系统 优点:Windows 用户群体大:应用软件多 ...

随机推荐

  1. 第一周冲刺评论总结&&针对评论总结的改进

    关于功能:1.统计功能需完善,提高产品功能,突出功能重点,使功能完善. 2.希望增加功能. 3.该产品能查看单个同学的博客,但按要求查询时只能查找最后一次发布的博客,且未进行信息的合理分类,望之后能多 ...

  2. Scrum 项目7.0——第一个Sprint的总结和读后感

          总结: 通过这一次的Sprint,我了解了Sprint的整个流程,也学会了编制backlog,也了解了在软件工程中,一个团队的任务是怎么样分配和一个项目是怎么样开展的.从对软件工程的认识只 ...

  3. PAT 甲级 1137 Final Grading

    https://pintia.cn/problem-sets/994805342720868352/problems/994805345401028608 For a student taking t ...

  4. redis哨兵机制二(转)

    概述 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如 master宕机了,Redis本身(包括它的很多客户端) ...

  5. [cnBeta]阿里云推出全栈IPv6解决方案 加速推进下一代互联网应用

    https://www.cnbeta.com/articles/tech/795695.htm 访问: 阿里云 - 最高1888元通用代金券立即可用 作为国内首个全面支持IPv6的云厂商,过去5个月, ...

  6. [细品java]ThreadLocal源码学习

    ThreadLocal是线程局部变量,其中保存了特定于该线程的值.每个线程都拥有一份独立的副本值,即每个线程修改变量值不影响其他线程该变量的副本值.这些特定于线程的值保存在Thread对象中,当线程终 ...

  7. JavaScript本地存储实践(html5的localStorage和ie的userData)

    http://www.css88.com/archives/3717 JavaScript本地存储实践(html5的localStorage和ie的userData) 发表于 2011年06月11日  ...

  8. 03.基于IDEA+Spring+Maven搭建测试项目--常用dependency

    <!--常用的依赖配置--> <!--未展示完整的pom.xml文件内容--> <properties> <java.version>1.8</j ...

  9. xsl 文件如何定义 Javascript 函数并且调用

    <?xml version='1.0'?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3. ...

  10. Timing wheel心跳机制

    在web服务中,断开空闲连接是一种减少资源浪费的一种手段,由此就有了心跳机制来判断一个连接是否空闲. 一种简单粗暴的方式: 1. 服务端每个连接保存一个最后一次操作的时间戳,每次这个连接对应fd可读时 ...