RDD

Spark基本的数据结构叫弹性分布式数据集(Resilient Distributed Datasets,简称RDD).
概念:
一个分布于集群节点的只读数据集合,并以容错的、并行的方式进行维护.
为了解决MapReduce的性能问题,Spark使用RDD作为分布式程序的工作集合,它提供一种分布式共享内存的受限形式.在分布式共享内存系统中,应用可以向全局地址空间的任意位置进行读写操作,而RDD是只读的,对其只能进行创建、转化和求值等操作.
RDD的优势:
可以方便地实现迭代算法,简单地说就是能在一个循环中多次访问数据集合.RDD还适合探索式的数据分析,能够对数据重复执行类似于数据库风格的查询.最为经典的的迭代算法是用于机器学习系统的培训算法.

Spark基本概念

  1. Spark需要一个集群管理器和一个分布式存储系统作为支撑.
  2. 对于集群管理器: 一般用YARN 或 Mesos
    对于分布式存储,Spark可以与多种系统对接. HDFS、MapR文件系统、亚马逊S3,或者一个用户自己实现的文件系统.
  3. Spark支持伪分布式的本地部署模式,通用仅用于开发和测试目的.
  4. 本地模式不要分布式存储,而是用本地文件系统代替.此场景下,Spark运行在一个机器上,每个CPU核是一个执行器(executor).
  5. Spark框架含有Spark Core、Spark SQL、Spark Streaming、MLib Machine Learning Library、GraphX等几个主要组件.

Spark Core

Spark Core是所有Spark相关组件的基础.
它以RDD这个抽象概念为核心,通过一组应用程序接口,提供分布式任务的分发、调度和基本的I/O功能.
Spark Core的编程接口支持Java、Python、Scala和R等程序语言.
这组接口使用的是函数式编程模式,即一个包含对RDD进行map、filter、reduce、join等并行操作的驱动程序,向Spark传递一个函数,然后Spark调度此函数在集群上并行执行.这些基本操作把RDD作为输入并产生新的RDD.
RDD自身是一个不变的数据集,对RDD的所有转换操作都是lazy模式,即Spark不会立即执行计算结果,而只是简单地记住所有对数据集的转换操作,这些转换只有遇到action操作的时候才会真正开始执行,这样的设计使Spark更加高效.
容错功能是通过追踪每个RDD的“血统”(lineage,指的是产生此RDD的一系列操作)实现的.一旦RDD的数据丢失,还可以使用血统进行重建.

Spark SQL

Spark SQL是基于Spark Core之上的一个组件,它引入了名为DataFrames的数据抽象.DataFrames能够支持结构化、半结构化数据.
Spark SQL提供了一种“领域特定语言”(Domain-Specific Language,简称DSL),用于在Scala、Java或Python中操纵DataFrames.同时Spark SQL也通过命令行接口或ODBC/JDBC提供对SQL语言的支持.

Spark Streaming

Spark Streaming利用Spark Core的快速调度能力执行流数据的分析.它以最小批次获取数据,并对批次上的数据执行RDD转化.这样的设计,可以让用于批处理分析的Spark应用程序代码也可以用流数据分析,因此便于实时大数据处理架构的实现.但是这种便利性带来的问题是处理最小批次数据的延时.
Storm和Flink的streaming组件,以事务为单位处理流数据
Spark Streaming以最小批次为单位处理流数据. 伪实时
Spark Streaming支持从Kafka、Flume、TCP/IP sockets、Twitter、ZeroMQ、Kinesis接收数据.

MLlib Machine Learning Library

Spark中还包含一个机器学习程序库,叫做MLlib.MLlib提供了很多机器学习算法,包括分类、回归、聚类、协同过滤等,还支持模型评估、数据导入等额外的功能.MLlib还提供了一些更底层的机器学习原语,如一个通用的梯度下降算法等.所有这些方法都被设计为可以在集群上轻松伸缩的架构.

GraphX

GraphX是Spark上的图(如设计网络的朋友关系图)处理框架.可以进行并行的图计算.与Spark Streaming和Spark SQL类似,GraphX也扩展了Spark的RDD API,能用来创建一个顶点和边都包括任意属性的有向图.GraphX还支持对图的各种操作,比如进行图分割的subgraph和操作所有顶点的mapVertices,以及一些常用的图算法,如PageRank和三角计算等.由于RDD是可读的,因此GraphX不适合需要更新图的场景.

Spark构成的更多相关文章

  1. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

  2. Spark RDD 核心总结

    摘要: 1.RDD的五大属性 1.1 partitions(分区) 1.2 partitioner(分区方法) 1.3 dependencies(依赖关系) 1.4 compute(获取分区迭代列表) ...

  3. spark处理大规模语料库统计词汇

    最近迷上了spark,写一个专门处理语料库生成词库的项目拿来练练手, github地址:https://github.com/LiuRoy/spark_splitter.代码实现参考wordmaker ...

  4. Hive on Spark安装配置详解(都是坑啊)

    个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/p/a7f75b868568 简介 本文主要记录如何安装配置Hive on Sp ...

  5. Spark踩坑记——数据库(Hbase+Mysql)

    [TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...

  6. Spark踩坑记——初试

    [TOC] Spark简介 整体认识 Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架.最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apach ...

  7. Spark读写Hbase的二种方式对比

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 一.传统方式 这种方式就是常用的TableInputFormat和TableOutputForm ...

  8. (资源整理)带你入门Spark

    一.Spark简介: 以下是百度百科对Spark的介绍: Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方 ...

  9. Spark的StandAlone模式原理和安装、Spark-on-YARN的理解

    Spark是一个内存迭代式运算框架,通过RDD来描述数据从哪里来,数据用那个算子计算,计算完的数据保存到哪里,RDD之间的依赖关系.他只是一个运算框架,和storm一样只做运算,不做存储. Spark ...

  10. (一)Spark简介-Java&Python版Spark

    Spark简介 视频教程: 1.优酷 2.YouTube 简介: Spark是加州大学伯克利分校AMP实验室,开发的通用内存并行计算框架.Spark在2013年6月进入Apache成为孵化项目,8个月 ...

随机推荐

  1. Spring boot 、mybatis 和 swagger 整合

    文件路径 添加依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...

  2. vue生命周期小笔记

    一张图谨记vue每个生命周期的获取状态 beforecreate :可以在这加个loading事件 created :在这结束loading,还做一些初始化,实现函数自执行 mounted : 在这发 ...

  3. Devexpress VCL Build v2013 vol 13.2.3 发布

    继续修修补补,大过年的,就不吐槽了. What's New in 13.2.3 (VCL Product Line)   New Major Features in 13.2 What's New i ...

  4. 8 求s=a+aa+aaa+aaaa+aa...a的值

    题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字. * 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制.程序分析:关键是计算出每一项的 ...

  5. BZOJ 2002 Bounce 弹飞绵羊 (分块或动态树)

    2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 13768  Solved: 6989[Subm ...

  6. .bat文件打开指定网页,并运行jar包

    @echo off Start "" "C:\Users\Lenovo\AppData\Local\Google\Chrome\Application\chrome.ex ...

  7. 如何从官网开始 mongo java

    http://docs.mongodb.org/ecosystem/drivers/ MongoDB Driver Documentation Getting Started Installation ...

  8. GPS原理及其应用

    第一章 绪论 GPS定位原理: 卫星轨道未知情况下,通过几个已知站点观测卫星,利用卫星信号的多普勒效应,就可以确定卫星轨道. 卫星轨道已知情况下,用户观测卫星信号,就可以确定用户的位置. 这原来是在海 ...

  9. EBS报错FRM-92095:Oracle JInitiator版本太旧,请安装版本1.1.8.2或更高版本

    EBS打开报错FRM-92095:Oracle JInitiator版本太旧,请安装版本1.1.8.2或更高版本 打开EBS的form,系统报错,中文提示信息是:FRM-92095:oracle ji ...

  10. 开通博客暨注册github事件

    (1) 姓      名:丁新宇 学      号:1413042054 班      级:网工142 兴趣爱好:听歌.看书.编代码. (2) GitHub注册流程: 1,百度搜索GitHub,进入官 ...