Spark解决的问题与体系结构
1、Spark解决的问题:
– 最大化利用内存cache (采用该多线程的方式)
– 中间结果放内存,加速迭代(内存计算下Spark比MapReduce约快100倍)
– 某结果集放内存,加速后续查询和处理,解决运行慢的问题
– 更丰富的API
(解决API单一问题)
– Transfomation变换的api,比如map可对每一行做变换,filter过滤出符合条件的行等,这些API实现用户算法
– spark提供很多转换和动作,很多基本操作如Join,GroupBy已经在RDD转换和动作中实现。不需用户自己实现
2.Spark的API
Spark运算过程:(一定会有Action,如果没有Action再多的Transformations也没有意义)
一个RDD可以有多个Action
3.完整作业描述
– 将用户的整个作业穿起来。关键是这3行。可以立即解释。不像mr那样,需要实现多个map和reduce脚本,解决MR缺乏作业流描述问题
//数据输入
val file = sc.textFile(hdfs://input)
//运算 这里的map可以利用通配符写成.map((_,1))
val counts = file.flatMap(line=>line.split(" "))
.map(word=>(word,1))
.reduceByKey(_+_)
//输出
counts.saveAsTextFile(hdfs://output)
4.spark 体系架构
• Spark和Hadoop关系: Spark依赖于HDFS文
依赖于YARN计算框架
• Spark Core:基于RDD提供操作接口,利用
DAG进行统一的任务规划
• Spark SQL:Hive的表 + Spark的里。通过把
Hive的HQL转化为Spark DAG计算来实现
• Spark Streaming:Spark的流式计算框架
• MLIB:Spark的机器学习库,包含常用的机器
学习算法
• GraphX:Spark图并行操作库
件系统,如果是Spark on YARN部署模式,又
由于这些组件满足了很多大数据需求,也满足了很多数据科学任务的算法和计算上的需要,Spark快速流行起来。