谈到大数据,相信大家对hadoop和Apache Spark这两个名字并不陌生。然而,最近业界有一些人正在大张旗鼓的宣扬Hadoop将死,Spark将立。他们究竟是危言耸听?哗众取宠?还是眼光独到堪破未来呢?与Hadoop相比,Spark技术如何?现工业界大数据技术都在使用何种技术?如果现在想要参加大数据培训的话,应该从哪一种开始呢?

先说二者之间的区别吧

首先,Hadoop与Spark解决问题的层面不同。

Hadoop和Apache Spark两者都是大数据框架,但是各自存在的目的不尽相同。Hadoop实质上更多是一个分布式数据基础设施: 它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,意味着您不需要购买和维护昂贵的服务器硬件。

同时,Hadoop还会索引和跟踪这些数据,让大数据处理和分析效率达到前所未有的高度。Spark,则是那么一个专门用来对那些分布式存储的大数据进行处理的工具,它并不会进行分布式数据的存储。

其次,还有一点也值得注意——这两者的灾难恢复方式迥异。因为Hadoop将每次处理后的数据都写入到磁盘上,所以其天生就能很有弹性的对系统错误进行处理。

Spark的数据对象存储在分布于数据集群中的叫做弹性分布式数据集(RDD: Resilient Distributed Dataset)中。这些数据对象既可以放在内存,也可以放在磁盘,所以RDD同样也可以提供完成的灾难恢复功能。

由于两者的侧重点不同,使用场景不同,大讲台老师认为其实并没有替代之说。Spark更适合于迭代运算比较多的ML和DM运算。因为在Spark里面,有RDD的概念。RDD可以cache到内存中,那么每次对RDD数据集的操作之后的结果,都可以存放到内存中,下一个操作可以直接从内存中输入,省去了MapReduce大量的磁盘IO操作。但是,我们也要看到spark的限制:内存。我认为 Hadoop虽然费时,但是在OLAP等大规模数据的应用场景,还是受欢迎的。目前Hadoop涵盖了从数据收集、到分布式存储,再到分布式计算的各个领域,在各领域都有自己独特优势。

为什么有这么多人不看好Hadoop,力捧Spark呢?

很多人在谈到Spark代替Hadoop的时候,其实很大程度上指的是代替MapReduce。

MapReduce的缺陷很多,最大的缺陷之一是Map + Reduce的模型。这个模型并不适合描述复杂的数据处理过程。很多公司把各种奇怪的Machine Learning计算用MR模型描述,不断挖掘MR潜力,对系统工程师和Ops也是极大挑战了。很多计算,本质上并不是一个Map,Shuffle再Reduce的结构,比如我编译一个SubQuery的SQL,每个Query都做一次Group By,我可能需要Map,Reduce+Reduce,中间不希望有无用的Map;又或者我需要Join,这对MapReduce来说简直是噩梦,什么给左右表加标签,小表用Distributed Cache分发,各种不同Join的Hack,都是因为MapReduce本身是不直接支持Join的,其实我需要的是,两组不同的计算节点扫描了数据之后按照Key分发数据到下一个阶段再计算,就这么简单的规则而已;再或者我要表示一组复杂的数据Pipeline,数据在一个无数节点组成的图上流动,而因为MapReduce的呆板模型,我必须一次一次在一个Map/Reduce步骤完成之后不必要地把数据写到磁盘上再读出,才能继续下一个节点,因为Map Reduce2个阶段完成之后,就算是一个独立计算步骤完成,必定会写到磁盘上等待下一个Map Reduce计算。

上面这些问题,算是每个号称下一代平台都尝试解决的。现在号称次世代平台现在做的相对有前景的是Hortonworks的Tez和Databricks的Spark。他们都尝试解决了上面说的那些问题。Tez和Spark都可以很自由地描述一个Job里执行流。他们相对现在的MapReduce模型来说,极大的提升了对各种复杂处理的直接支持,不需要再绞尽脑汁“挖掘”MR模型的潜力。综上,Spark数据处理速度秒杀MapReduce因为其处理数据的方式不一样,会比MapReduce快上很多。

可以判Hadoop“死刑”吗?

目前备受追捧的Spark还有很多缺陷,比如:

稳定性方面,由于代码质量问题,Spark长时间运行会经常出错,在架构方面,由于大量数据被缓存在RAM中,Java回收垃圾缓慢的情况严重,导致Spark性能不稳定,在复杂场景中SQL的性能甚至不如现有的Map/Reduce。

不能处理大数据,单独机器处理数据过大,或者由于数据出现问题导致中间结果超过RAM的大小时,常常出现RAM空间不足或无法得出结果。然而,Map/Reduce运算框架可以处理大数据,在这方面,Spark不如Map/Reduce运算框架有效。

不能支持复杂的SQL统计;目前Spark支持的SQL语法完整程度还不能应用在复杂数据分析中。在可管理性方面,SparkYARN的结合不完善,这就为使用过程中埋下隐忧,容易出现各种难题。

并不是说Spark和Hadoop谁强谁弱,而是想告诉大家——在比较Hadoop和Spark方面要记住的最重要一点就是,它们并不是非此即彼的关系,因为它们不是相互排斥,也不是说一方是另一方的简易替代者。两者彼此兼容,这使得这对组合成为一种功能极其强大的解决方案,适合诸多大数据应用场合。

也就是说,大数据行业的老鸟们如果只会Hadoop就要当心了,挤出时间来学习Spark和其他新技术是绝对必要的;而对于目前正准备尝试大数据培训的朋友们,从Hadoop开始仍然是最好的选择。长远来看新技术总会不断出现,不管是Spark还是Tez似乎都有着更美妙的大数据前景,然而没有人会劝你完全抛开Hadoop。

hadoop的同类技术_Hadoop和Spark的区别是什么?现在都流行用哪种技术?相关推荐

  1. ASP、JSP、PHP 三种技术比较

    目前,最常用的三种动态网页语言有ASP(Active Server Pages),JSP(JavaServer Pages),PHP (Hypertext Preprocessor). 简 介 ASP ...

  2. X86服务器虚拟化的三种技术--(1)

    [说明]此文转载自毛文波博士的博客,简明扼要地介绍了在x86服务器虚拟化方法上的三个主要技术流派:Para-Virtualization, Full-Virtualization和Hardware-A ...

  3. X86服务器虚拟化的三种技术(1)

    云计算.SaaS等基于服务的计算模式最近异常灼热.服务器虚拟化技术尤其是对低端廉价x86服务器的虚拟化已被公认为是实现这些计算模式的关键技术,对于能否廉价提供云计算.SaaS等服务至关重要.在x86服 ...

  4. 对迁移学习中域适应的理解和3种技术的介绍

    域适应是计算机视觉的一个领域,我们的目标是在源数据集上训练一个神经网络,并确保在显著不同于源数据集的目标数据集上也有良好的准确性.为了更好地理解域适应和它的应用,让我们先看看它的一些用例. 我们有很多 ...

  5. hadoop的同类技术_Hadoop 气数已尽:逃离复杂性,拥抱云计算

    虽然大数据依然如日中天,但该领域曾经的领头羊 Cloudera.Hortonworks 和 MapR 三家公司最近步履蹒跚,多少掩盖了其几分风光.作为曾经的数据宠儿,过去筹集到的巨额投资源源不断. 例 ...

  6. 大数据框架对比:Hadoop、Storm、Samza、Spark和Flink——flink支持SQL,待看

    简介 大数据是收集.整理.处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称.虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的普遍性.规模,以及价值在最近几年才 ...

  7. hadoop、hbase、hive、spark分布式系统架构原理

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 机器学习.数据挖掘等各种大数据处理都离不开各种开源分布式系统,hadoop用户分布式存储和map-reduce计算,spark用于分布式机器学习,hi ...

  8. Python技术栈与Spark交叉数据分析双向整合技术实战--大数据ML样本集案例实战

    版权声明:本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客.QQ邮箱地址:1120746 ...

  9. 由美团技术文章整理---spark性能优化基础篇--开发调优与资源参数调优

    文章地址1:Spark性能优化指南--基础篇 - 美团技术团队 文章地址2:Spark性能优化指南--高级篇 - 美团技术团队 目录 一.关于性能优化基础篇--开发调优 1.避免创建重复RDD (1) ...

最新文章

  1. 全球75亿美元的网络安全险 会是保险业下一块金矿吗?
  2. 2018秋寒假作业5—PTA编程总结2
  3. lua 获取网络时间_Lua脚本引擎教程:学习路线
  4. MIT创业项目「智能美食餐厅」4月底登陆波士顿自由之路
  5. POJ2104 K-th Number [整体二分]
  6. java 获取数组(二维数组)长度实例程序
  7. AWSome Day 2019 线上云技术课堂(1)
  8. 2020/03/11美版iPhone卡贴ICCID完美激活!
  9. Dev cpp 手动开栈
  10. 嵌入式物联网软件开发实战系列(STM32+FreeRTOS)
  11. python项目实战:实现王者荣耀敏感词汇过滤器
  12. icafe 同步到主干
  13. oracle 11g从DBF文件恢复数据
  14. HTML(表单标签<form>)
  15. C#利用Picturebox控件显示图片
  16. 过日子·混日子·奔日子
  17. Mysql ERROR 1067: Invalid default value for ‘date’ 解决
  18. (解)金缕衣-杜秋娘
  19. Ps笔刷:划痕噪音效果
  20. centos8安装向日葵报错解决

热门文章

  1. 数据采集技术的难点在于哪里
  2. 企业如何选择一个合适的可视化工具
  3. 基于Android系统的IPv6网络接入分析
  4. 仓库货位卡标识牌_仓库应如何规划?
  5. winform中listview选中整行_Excel办公实操,操作区域的3大小技巧,办公中的你使用过吗...
  6. python itertools模块_Python标准模块--itertools
  7. mac apache php.ini,Mac自带的Apache使用详解
  8. [机器学习]推荐系统介绍
  9. 复合索引失效的几种情况
  10. 分析JQ作者的类实现过程