【校招VIP】Spark概述

05月11日 收藏 0 评论 0 java开发

【校招VIP】Spark概述

文章声明:转载来源:https://blog.csdn.net/Stybill_LV_/article/details/114482282

Spark是什么

Apache Spark是一个快速的、多用途的集群计算系统,相对于Hadoop MapReduce将中间结果保存在磁盘中,Spark使用了内存保存中间结果,能在数据尚未写入磁盘时在内存中进行运算。

Spark只是一个计算框架,不像Hadoop一样包含了分布式文件系统和完备的调度系统,如果要使用Spark,需要搭载其它的文件系统和成熟的调度系统

Spark的特点

速度快

Spark在内存运行时速度是Hadoop MapReduce的100倍
基于磁盘的运行速度大概是Hadoop MapReduce的10倍
Spark实现了一种叫RDDs的DAG执行引擎,其数据缓存在内存中可以进行迭代处理

易用

df = spark.read.json("logs.json")
df.where("age > 21") \
.select("name.first") \
.show()

Spark 支持Java、Scala、Python、R、SQL等多种语言的API
Spark支持超过80个高级运算符使得用户非常轻易的构建并行计算程序
Spqrk可以使用基于Scala、Python、R、SQL的Shell交互式查询

通用

Spqrk提供一个完整的技术栈,包括SQL执行,Dataset命令式API。机器学习库MLlib,图计算框架GraphX,流计算SparkStreaming

兼容

Spark可以运行在Hadoop Yarn,Apache Mesos,Kubernets,Spark Standalone等集群中
Spqrk可以访问HBase,HDFS,Hive,Cassandra在内的多种数据库

Spark的组成

Spark最核心的功能是RDDs,RDDs存在于spark-core这个包内,这个包也是Spqrk最核心的包。同时Spark在spark-core的上层提供了很多工具,以便于使用不同类型的计算。

Spark-Core是整个Spark的基础,提供了分布式任务调度和基本的I/O功能

Spark的基础的程序抽象是弹性分布式数据集(RDDs),是一个可以并行操作,有容错的数据集合RDDs可以通过引用外部存储系统的数据集创建(如HDFS,HBase),或者通过现有的RDDs转换得到
RDDs抽象提供了Java、Scala、Python等语言的API
RDDs简化了编程复杂性,操作RDDs类似通过Scala或者Java8的Streaming操作本地数据集合

Spark SQL
Spark SQL在spark-core基础之上带出了一个名为DataSet和DataFrame的数据抽象化的概念
Spark SQL提供了在Dataset和DataFrame之上执行SQL的能力
Spark SQL提供了DSL,可以通过Scala、Java、Python等语言操作DataSet和DataFrame
它害支持使用JDBC/ODBC服务器操作SQL语言

Spark Streaming
Spark Streaming充分利用spark-core的快速调度能力来运行流分析
它截取小批量的数据并可以对之运行RDD Transformation
它提供了在同一个程序中同时使用流分析和批量分析的能力

MLlib
MLlib是Spark上分布式机器学习的框架,Spark分布式内存的框架,比Hadoop磁盘式的Apache Mahout快上10倍,扩展性也非常优良
MLlib可以使用许多常见的机器学习和统计算法,简化大规模机器学习
汇总统计,相关性,分层抽样,假设检定,随机数据生成
支持向量机,回归,线性回归,逻辑回归,决策树,朴素贝叶斯
协同过滤,ALS
K-means
SVD奇异值分解,PCA主成分分析
TF-IDF,Word2Vec,StandardScalar
SGD随机梯度下降,L-BFGS

GraphX

GraphX是分布式图计算框架,提供了一组可以表达图计算的API,GraphX还对这种抽象化提供了优化运行

Spark和Hadoop的异同







C 0条回复 评论

帖子还没人回复快来抢沙发