Spark简介:
Spark是一个快速且通用的集群计算模型:
1、Spark是快速的:
快速是指处理几T到几批数据量的时候,他的处理时间是几秒钟或几分钟,相对于hadoop的几分钟到几小时是非常快速的,
通用是指Spark的应用场景比较多
Spark扩展了MapReduce的计算模型
Spark是基于内存计算的
当我们在处理一个大批量数据的时候,难免呢会产生一些中间的数据结果,怎么处理呢
第一种:放在硬盘中,硬盘会带来额外的写入写出的消耗
第二种:直接存放到内存中,放到内存中肯定比放到硬盘中要快一些。所以Spark的速度是很快的
举例(瑞士军刀,大刀,小刀等等)
Spark特点
2、Spark是通用的:
Spark容纳了其他的分布式系统拥有的功能,批处理(hadoop),迭代式处理(机器学习系统),交互式查询(hive查询)和流处理(storm)
当我们搭建一个Spark集群时,就相当于搭建了这么多的功能
优点:大大的降低了集群的维护成本,因为在生产环境中,集群的维护是相当耗时
Spark是高度开放的 :
提供了python java Scala sql的API,
与其他的大数据工具整合的很好,包括Hadoop,kafka等
Spark组件
spark core:
包括spark基本功能,包括任务调度,内存管理,容错机制
内部定义了RDDs(弹性分布式数据集),
提供多个APIs来创建和操作这些RDDs
应用场景,为其他组件提供底层服务
spark sql:
spark处理结构化数据的库,类似Hive SQL,MySql,
应用场景,主要为企业提供报表统计
spark streaming:
实时数据流处理组件,类似Storm,提供API操作实时流数据,
应用场景,企业中用来从Kafka中接收数据做实时统计
Mlib:
包含通用机器学习功能的包,包括聚类,回归,模型评估和数据导入。同时支持集群平台上的横向扩展
之前做机器学习都是Python比较多一点,Python的最大缺点是在单机上的,处理的数据量是有限的
而Mlib呢,是集群的,他的应用场景就是机器学习
Graphx:
处理图的库(例如社交网络的图),并进行图的并行计算
像spark steaming,spark sql一样,他也继承了RDD API
他提供了各种图的操作,和常用的图的算法,例如PangeRank算法
应用场景:就是图计算
Cluster Manager:
spark自带的集群管理
Spark紧密集成的优点:
spark底层优化,基于spark底层的组件也得到相应的优化,
紧密集成节省了组件的部署,测试时间
向spark增加新的组件时,其他组件,可立刻享用新组件的功能
Hadoop&Spark比较
Hadoop应用场景:
离线处理,时效性要求不高的场景:Hadoop中间数据落到硬盘上,导致Hadoop处理大数据时,时效性不高,时间在几分钟到几小时不等,但数据可以存储。
Spark应用场景:
时效性要求高的场景和机器学习:Spark基于内存,中间数据多在内存中,数据处理块,但Spark不具备hdfs存储功能,需借助hdfs
Doug Cutting 的观点:
spark这是个生态系统,每个组件都有其作用,各姗其职即可,
Spark不具有HDFS的存储能力,要借助HDFS等持久数据
大数据将会孕育出更多的新技术