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

1先说二者之间的区别吧。

首先,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涵盖了从数据收集、到分布式存储,再到分布式计算的各个领域,在各领域都有自己独特优势。

2为什么有这么多人不看好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快上很多。

3可以Hadoop“死刑”吗?

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

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

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

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

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

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

大数据前景分析:Hadoop将被Spark替代?相关推荐

  1. 《Spark与Hadoop大数据分析》——1.2 大数据科学以及Hadoop和Spark在其中承担的角色...

    1.2 大数据科学以及Hadoop和Spark在其中承担的角色 数据科学的工作体现在以下这两个方面: 要从数据中提取其深层次的规律性,意味着要使用统计算法提炼出有价值的信息.数据产品则是一种软件系统, ...

  2. Hadoop入门(上):大数据特点、大数据前景、大数据组织结构、Hadoop组成、Hadoop版本介绍、Hadoop运行环境搭建、CentOS6安装JDK、安装Hadoop、Hadoop目录结构

    资料来源于尚硅谷 本篇文章目录 第1章·大数据概论 1.1.大数据概念. 1.2.大数据特点(4V) 1.3.大数据应用场景 1.4.大数据发展前景 1.5·大数据部门业务流程分析. 1.6·大数据部 ...

  3. 大数据系统开发综合实践(淘宝双11大数据批处理分析系统、NBA 、淘宝购物大数据实时展示、Spark GraphX)

    cqupt || xmu--大数据系统开发综合实践 代码放在了GitHub上 链接 task01 大数据批处理系统 淘宝双11大数据批处理分析系统 task02 大数据查询分析计算系统 NBA 统计大 ...

  4. 大数据前景毋庸置疑 零基础小白要学习什么

    大数据技术前景我们是毋庸置疑的,而对于学习更是争先恐后.在这些人中,不乏有已经在it圈混迹好几年的程序员,自然也有初出茅庐的零基础小白.说实话,大数据不比编程学习,还是需要一定的基础的,那些说根本不需 ...

  5. 开源大数据查询分析引擎

    引言 大数据查询分析是云计算中核心问题之一,自从Google在2006年之前的几篇论文奠定云计算领域基础,尤其是GFS.Map-Reduce.Bigtable被称为云计算底层技术三大基石.GFS.Ma ...

  6. IBM 2013策略发布:大数据和分析、云计算、企业移动、社交商务、智慧商务、智慧城市...

    4月11日(上周四),IBM软件集团召开了一年一度的策略发布会,本次主题为软实力.新智慧.新格局.在会上,IBM大中华区副总裁兼大中华区软 件集团总经理胡世忠解读了IBM软件集团在五大创新领域和四大联 ...

  7. 云小课 | 大数据融合分析:GaussDW(DWS)轻松导入MRS-Hive数据源

    摘要:通过建立GaussDB(DWS)与MRS的连接,支持数据仓库服务SQL on Hadoop,以外表方式实现Hive数据的快捷导入,满足大数据融合分析的应用场景. 本文分享自华为云社区<[云 ...

  8. 大数据血缘分析系统设计(三)

    数据级别血缘关系介绍 血缘关系数据的收集 数据ID的标识 数据流转的收集 SQL MapReduce Spark 其他 血缘关系图的可视化 在前面一篇<大数据血缘分析系统设计(二)>中,对 ...

  9. Spark大数据技术与应用 第一章Spark简介与运行原理

    Spark大数据技术与应用 第一章Spark简介与运行原理 1.Spark是2009年由马泰·扎哈里亚在美国加州大学伯克利分校的AMPLab实验室开发的子项目,经过开源后捐赠给Aspache软件基金会 ...

最新文章

  1. 后处理程序文件大小的变量_【每日一题】(17题)面试官问:JS中事件流,事件处理程序,事件对象的理解?...
  2. 你什么时候使用git rebase而不是git merge?
  3. rabbitmq几种工作模式_RabbitMQ六种队列模式-简单队列模式
  4. QT QTreeWidget 行切换时改变背景色
  5. 论文浅尝 | CoRR - 面向复杂知识问答的框架语义解析方法
  6. php入门第二篇---变量
  7. Java语法总结 - 线程
  8. Linux安装和卸载JDK8详解
  9. Flowable入门系列文章187 - 高并发性的UUID ID生成器和多租户
  10. AB_PLC编程软件RSLogix_500_与PLC通讯详细说明
  11. 计算机用户报表清单,以下英文缩写和中文名字的对照中正确的是()。A.URL——用户报表清单B.CAD——计算机辅助设计C.USB——不...
  12. 全面领跑中国DevOps云服务市场,为什么是华为云?
  13. Consul 注册中心介绍以及搭建
  14. 大咖丨哥伦比亚教授周以真:人工智能恐慌以及大数据威胁反思
  15. CAD2017打开图纸点字体替换时没有字体选择框的问题
  16. daimayuan每日一题#812 互质
  17. [渝粤教育] 天水师范学院 地质与地貌学 参考 资料
  18. Nacos Serve 本地启动报Error starting Tomcat context. Exception: org.springframework.beans.factory.BeanCre
  19. C# 网络编程之套接字编程基础知识
  20. sharding-jdbc Data sources cannot be empty.

热门文章

  1. 利用python实现支持向量机算法
  2. 以前的写的一次关于对迅雷玩客云的一个分享PPT
  3. Python基础之:Python中的类
  4. 民间秘术——捉鬼杀鬼
  5. NW小世界网络模型python代码实现及平均路径聚类系数计算
  6. 华为补助武汉员工,最高每日 2000 元;谷歌更新安卓修复数百万台芯片漏洞;Fuchsia OS进入开发者试用阶段 | EA周报...
  7. 微软符号服务器下载符号总结
  8. Linux下切换cuda版本
  9. Linux教程:RocketMq介绍以及集群服务搭建(双主双从同步双写)并安装可视化平台RocketMq-Dashboard
  10. js读取excel的值