Spark初识
spark是一个快速的统一的引擎,基于内存的运算
spark有一个高级的DAG(有向无环图)引擎,支持循环的数据流和基于内存的计算
spark支持的开发语言JavaScalaPythonR
spark提供了80多种算子操作
在一个应用中可以无缝整合spark组件
spark可运行在任何环境yarn、Mesos、standalone(调度的资源框架不同)
可以访问各种各样的数据资源HDFS HiveCassandraHBaseS3(亚马逊)
资源调度
Yarn:粗力度的资源调度框架(给足够的资源),底层是java
Mesos:可粗可细(合理分配资源)底层是C++
存储
HDFS基于磁盘
Tachyan基于内存
计算
Spark core
Hadoop慢的原因
大量的IO、额外的复制、序列化
大量的IO:
每个Job都要将数据从HDFS中读出,处理完后,再将数据写入HDFS中。
额外的复制
每个HDFS文件有三个副本,第一个副本存储在当前机器,第二个副本存储在不同机架上的机器,第三个副本和第二个同机架
Spark快的原因(基于内存、高效的DAG)
迭代计算,第一次计算读数据从HDFS读,计算之后结果存在内存,如果内存不够,经过配置,可落地到磁盘,保证数据不丢失。第二次计算时数据直接从内存读取。
也有副本机制,存在不同机器的内存中。
Spark的运行模式
Local 多用于测试
Standalone Spark自带的,独立的环境,可抛开Hadoop生态体系,有自己的资源管理(cluster resource manager)
Mesos 用的不多
Yarn 用的最多