Spark构成
RDD
Spark基本的数据结构叫弹性分布式数据集(Resilient Distributed Datasets,简称RDD).
概念:
一个分布于集群节点的只读数据集合,并以容错的、并行的方式进行维护.
为了解决MapReduce的性能问题,Spark使用RDD作为分布式程序的工作集合,它提供一种分布式共享内存的受限形式.在分布式共享内存系统中,应用可以向全局地址空间的任意位置进行读写操作,而RDD是只读的,对其只能进行创建、转化和求值等操作.
RDD的优势:
可以方便地实现迭代算法,简单地说就是能在一个循环中多次访问数据集合.RDD还适合探索式的数据分析,能够对数据重复执行类似于数据库风格的查询.最为经典的的迭代算法是用于机器学习系统的培训算法.
Spark基本概念
- Spark需要一个集群管理器和一个分布式存储系统作为支撑.
- 对于集群管理器: 一般用YARN 或 Mesos
对于分布式存储,Spark可以与多种系统对接. HDFS、MapR文件系统、亚马逊S3,或者一个用户自己实现的文件系统. - Spark支持伪分布式的本地部署模式,通用仅用于开发和测试目的.
- 本地模式不要分布式存储,而是用本地文件系统代替.此场景下,Spark运行在一个机器上,每个CPU核是一个执行器(executor).
- 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构成的更多相关文章
- Spark踩坑记——Spark Streaming+Kafka
[TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...
- Spark RDD 核心总结
摘要: 1.RDD的五大属性 1.1 partitions(分区) 1.2 partitioner(分区方法) 1.3 dependencies(依赖关系) 1.4 compute(获取分区迭代列表) ...
- spark处理大规模语料库统计词汇
最近迷上了spark,写一个专门处理语料库生成词库的项目拿来练练手, github地址:https://github.com/LiuRoy/spark_splitter.代码实现参考wordmaker ...
- Hive on Spark安装配置详解(都是坑啊)
个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/p/a7f75b868568 简介 本文主要记录如何安装配置Hive on Sp ...
- Spark踩坑记——数据库(Hbase+Mysql)
[TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...
- Spark踩坑记——初试
[TOC] Spark简介 整体认识 Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架.最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apach ...
- Spark读写Hbase的二种方式对比
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 一.传统方式 这种方式就是常用的TableInputFormat和TableOutputForm ...
- (资源整理)带你入门Spark
一.Spark简介: 以下是百度百科对Spark的介绍: Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方 ...
- Spark的StandAlone模式原理和安装、Spark-on-YARN的理解
Spark是一个内存迭代式运算框架,通过RDD来描述数据从哪里来,数据用那个算子计算,计算完的数据保存到哪里,RDD之间的依赖关系.他只是一个运算框架,和storm一样只做运算,不做存储. Spark ...
- (一)Spark简介-Java&Python版Spark
Spark简介 视频教程: 1.优酷 2.YouTube 简介: Spark是加州大学伯克利分校AMP实验室,开发的通用内存并行计算框架.Spark在2013年6月进入Apache成为孵化项目,8个月 ...
随机推荐
- IMU Noise Model
1.参考资料2.相关定义3.IMU 的噪声模型3.1噪声的建模3.2白噪声和随机游走噪声的离散化3.3如何获取传感器噪声参数4.随机噪声和扰动的积分4.1建立模型4.2噪声的离散化模型推导4.3系统的 ...
- struts,hibernate,spring配置时问题汇总及解决办法
1.java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor 缺少asm-3.3.jar 2.java.lang.NoClassDe ...
- windows-x64 php5.6+apache2.4+mysql配置
随手一记, 方便以后查找! 1.安装apache2.4 - 下载压缩文件并解压到 D:\Develop\Apache24 - 修改 conf 目录下: httpd.conf 文件 - 服务器目录: ...
- Redis数据结构(六)
Redis数据结构(Sort-set)(游戏排名和微博热点话题排名上应用): 特点:可存储有序但不重复的数据,根据分数指定存储顺序 1 Sort-set和Set的区别: (1)sort的每个成员都是以 ...
- linux每天一小步---tail命令详解
1 命令功能 tail命令用于显示文件中末尾的内容(默认显示最后10行内容) 2 命令语法 tail [选项参数] [文件名1] [文件名2] 3 命令参数 -f 用于循环读取文件的内容,监视文件的 ...
- IE(IE6/IE7/IE8)支持HTML5标签
让IE(ie6/ie7/ie8)支持HTML5元素,我们需要在HTML头部添加以下JavaScript,这是一个简单的document.createElement声明,利用条件注释针对IE来调用这个j ...
- 百度地图api描绘车辆历史轨迹图
最近公司在做项目需需求:车辆定位后在地图显示历史轨迹的功能 一开始使用了google的地图api,但是发现会一直关闭,索性支持下国产,使用了百度地图api search方法把两个点连接成线后,会出现起 ...
- CentOS 7更换yum源
1. 首先备份 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2. 使用阿里云的 ...
- wp8.1 调用智慧天气SmartWeatherAPI
在调用api应用的过程,我们需要用hmac加密技术,它是一种基于hash的加密算法,通过一个双方共同约定的密钥,在发送message前,对密钥进行了sha散列计算,在生成消息又对此密钥进行了二次加密, ...
- LINQ to Entities 基于方法的查询语法
1.投影: Select 与 SelectMany SelectMany操作符提供了将多个from子句组合起来的功能,相当于数据库中的多表连接查询,它将每个对象的结果合并成单个序列. 与 select ...