登录 |  注册
首页 >  云计算&大数据 >  Spark >  Spark介绍

Spark介绍

     Spark是一种快速、通用、可扩展的大数据分析引擎。

  • 2009年诞生于加州大学伯克利分校AMPLab;

  • 2010年开源,2013年6月成为Apache孵化项目;

  • 2014年2月成为Apache顶级项目。

    目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、SparkStreaming、GraphX、MLlib等子项目,Spark是基于内存计算的大数据并行计算框架。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。Spark得到了众多大数据公司的支持,这些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、腾讯、京东、携程、优酷土豆。当前百度的Spark已应用于凤巢、大搜索、直达号、百度大数据等业务;阿里利用GraphX构建了大规模的图计算和图挖掘系统,实现了很多生产系统的推荐算法;腾讯Spark集群达到8000台的规模,是当前已知的世界上最大的Spark集群。


Spark特性

1.Resilient Distributed Datasets,以下用RDD表示(可扩展分布式数据集)用SparkContext.parallelize和SparkContext.textFile、SparkContext.wholeTextFile可以分别从内存、HDFS文本、HDFS文件夹这三个数据源读取RDD数据,然后就可以快乐的用map、reduce等各种方法来处理数据啦!

2.Caching RDDs用于跨集群缓存,如果调用rddFromTextFile.cache方法,相当于告诉机器说,该数据需要保存在内存中,以支持后续使用;对应的有persist方法,用于辨识函数是运行在cache数据上面的。

3.Spark提供script支持运行在Amazon EC2云服务上面的集群,当然得先有云服务的账号,注册一个去吧,妥妥的。


Spark作用

1.推荐引擎(Recommendation Engine)

推荐引擎里面广泛使用的两个方法分别是基于文本过滤(content-based filtering)和协同过滤(collaborative filtering),书中使用MLlib中的ALS模块来训练推荐引擎,训练之后的模型,调用predict方法来使用MSE(Mean Squared Error)、RMSE(Root Mean Squared Error)、MAP(Mean Average Precision)等评估模型。

2.分类模型(Classification Model)

分类模型使用的方法有:线性模型-linear models(想象在平面画一条或多条线来分隔不一样的点,分到同一个区域的被认为是同一个类别)、决策树模型-decision trees(原始数据不断的在每个断点判断并作出选择,直到树的叶子节点,该节点的类标签就是该数据的标签)和朴素贝叶斯-naive Baye(由已知的概率,推断具有数据类标签的概率)org.apache.spark.mllib.classification中提供LogisticRegressionWith SGD、SVMWithSGD和NaiveBayes三个分类训练器,org.apache.spark.mllib.tree提供一些对应的树形训练器使用precision和recall来评估模型。

3.回归模型(Regression Model)

回归模型有两个主要类型:线性回归模型(linear regression model)和决策树回归模型(decision tree regression model)pyspark.mllib.regression中提供LinearRegressionWithSGD用于线性回归模型训练,pyspark.mllib.tree中提供DecisionTree.trainRegressor用于决策树回归模型的训练。

4.聚类模型(Clustering Model)

org.apache.spark.mllib.clustering提供KMeans用于训练K-Means聚类模型,当然这个模块里面还有别的训练算法。


Spark编程语言

Spark的框架使用Scala语言编写的,简洁而优雅;

Spark的开发目前主要可以使用三种语言:Scala、Java、Python


下一篇: Spark快速入门
推荐文章
  • MD5(Message-DigestAlgorithm5)是一种广泛使用的散列函数(哈希函数),由美国密码学家罗纳德·李维斯特(RonaldL.Rivest)在1991年设计。MD5的作用是对任意长度的信息生成一个固定长度(128位,即32个十六进制字符)的“指纹”或“消息摘要”,并且几乎不可能找到
  • 循环冗余校验(CyclicRedundancyCheck,CRC)是一种用于检测数据传输和存储过程中发生错误的技术,属于一种基于数学原理的错误检测编码(ErrorDetectionCoding)方法。它通过在原始数据上附加一个固定长度的校验码,使得接收端可以通过同样的计算规则对收到的数据进行校验,确
  • AES(AdvancedEncryptionStandard)是一种广泛使用的对称密钥加密算法,它是美国国家标准与技术研究院(NIST)于2001年制定的加密标准,用于替代原有的DES(DataEncryptionStandard)。AES算法以其高效性、安全性和可靠性而著称,在众多应用领域中被广泛
  • RSA(Rivest-Shamir-Adleman)是一种广泛应用的非对称加密算法,由RonRivest、AdiShamir和LenAdleman在1977年提出。其安全性基于数学上的大数因子分解难题,即对于足够大的两个素数p和q而言,已知它们的乘积很容易,但想要从这个乘积中恢复原始的素数则异常困难
  • 最小生成树(MinimumSpanningTree,MST)是一种图论算法,用于在一个带权重的无向连通图中找到一棵包括所有顶点且总权重尽可能小的树。常见的最小生成树算法有两种:Prim算法和Kruskal算法。Prim算法原理:Prim算法是一种贪心算法,它从图中的一个顶点开始,逐步增加边,每次都添
  • 关于最短路径算法的Java实现,这里简述一下几种常用的算法及其基本原理,并给出一个Dijkstra算法的基本实现框架。Dijkstra算法(适用于无负权边的图)Dijkstra算法用于寻找图中一个顶点到其他所有顶点的最短路径。它维护了一个距离表,用来存储从源点到各个顶点的已知最短距离,并且每次都会选
学习大纲