Hadoop之Spark基本简介

一、Spark与Hadoop的区别

任务背景:完成最终的任务需要分为若干个有依赖关系的子任务连接成一个DAG(有向无环)图。

Hadoop:由于完成这个图任务有多个map-reduce子任务,每个子任务都要把输出的结果存储起来(默认是三份)以供下一个任务的读取,而且每个子任务map-reduce的中间结果也会把数据存储在本地。

ps:在ML任务下效率很不理想,大量的磁盘io和网络io拉低了程序的效率。 

ps:map-reduce的过程细分:map映射键值对,shuffle哈希映射划分区块,reduce合并区块的到结果。

Spark:在map-reduce子任务的基础上在进行任务的细分组成一个新的DAG图,并且去掉了HDFS本地存储的过程,使用内存来加快速度。

ps:对多任务map-reduce通过细分map-reduce省去了磁盘的io,大大提高了效率。

 ps:在任务只有一次map-reduce的情况下,效果是远远不如map-reduce的。

二、Spark的发展

Spark提出的起始就是因为在处理复杂问题的情况下效果很不好,所以就有了Spark雏形,然后由于项目很好工业上吸引程度也很大,才一步一步发展了起来。Spark在有了MLlib计算框架,Spark sql数据索引模块,streaming流式实时计算的情况下,由于数据结构不统一造成编程复杂,就在原始rdd的数据结构上进行了封装出现了DataFrame,再在此上封装了一层DataSet是编程复杂度大大降低,在之后就是基本框架上的优化了。

三、Spark编程模式

过程:程序编写的application应用会被资源调度来进行管理,来维护工作的执行和数据交互的过程。

ps:资源调度一般是用yarn来进行;数据的交互一般也是利用了HDFS来执行;所以说Spark只是在一定类型的问题上代替了map-reduce。

四、Spark sql概述

Hive的提出:由于MapReduce的使用难度较大,FaceBook基于此提出了Hive,它的出现解决了这个问题,它的原理是将HQL语句经过一系列变换,最终转换为了MapReduce程序去执行。

Shark的提出:由于Hive转化为了MapReduce虽然降低了开发难度,但是效率很不如意,这才引出了Shark,它的不但兼容了HQL而且还把MapReduce作业变为了Spark,最终使得性能比Hive有了10-100倍的提高。

Spark SQL的提出:由于Shark需要兼容Hive所以在有些功能上面不太好为了处理这个问题,spark团队把Shark项目转给了Hive团队使得Hive有了多个引擎(MapReduce,Tez,Spark),而spark团队研发出了不但可以很好的兼容Hive,而且还不受限于Hive的Spark SQL就此诞生了。

ps:spark sql不断的在原始RDD的数据结构基础上进行优化,推出了DataFrame(类型不安全)和DataSet(类型安全)数据结构。

很经典的一段话:

ps:类型安全性就是严格区分数据的类型,不同的类型不同的处理,类型之间的转换遵循严格的规范(例如:类型的转换,类型是否匹配等等),保证不发生类型错误。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值