没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
12/23/2019 (3 封私信 / 4 条消息) 与 Hadoop 对比,如何看待 Spark 技术? - 知乎
https://www.zhihu.com/question/26568496 1/12
84 个回答
默认排序
软件工程师
3,752 人赞同了该回答
Hadoop
首先看一下Hadoop解决了什么问题,Hadoop就是解决了大数据(大到一台计算机无法进行存储,一
台计算机无法在要求的时间内进行处理)的可靠存储和处理。
HDFS,在由普通PC组成的集群上提供高可靠的文件存储,通过将块保存多个副本的办法解决服务器或
硬盘坏掉的问题。
MapReduce,通过简单的Mapper和Reducer的抽象提供一个编程模型,可以在一个由几十台上百台的
PC组成的不可靠集群上并发地,分布式地处理大量的数据集,而把并发、分布式(如机器间通信)和故
障恢复等计算细节隐藏起来。而Mapper和Reducer的抽象,又是各种各样的复杂数据处理都可以分解
为的基本元素。这样,复杂的数据处理可以分解为由多个Job(包含一个Mapper和一个Reducer)组成
的有向无环图(DAG),然后每个Mapper和Reducer放到Hadoop集群上执行,就可以得出结果。
(图片来源:slideshare.net/davideng)
用MapReduce统计一个文本文件中单词出现的频率的示例WordCount请参见:WordCount -
Hadoop Wiki,如果对MapReduce不恨熟悉,通过该示例对MapReduce进行一些了解对理解下文有
帮助。
在MapReduce中,Shuffle是一个非常重要的过程,正是有了看不见的Shuffle过程,才可以使在
MapReduce之上写数据处理的开发者完全感知不到分布式和并发的存在。
用心阁
12/23/2019 (3 封私信 / 4 条消息) 与 Hadoop 对比,如何看待 Spark 技术? - 知乎
https://www.zhihu.com/question/26568496 2/12
(图片来源: Hadoop Definitive Guide By Tom White)
广义的Shuffle是指图中在Map和Reuce之间的一系列过程。
Hadoop的局限和不足
但是,MapRecue存在以下局限,使用起来比较困难。
抽象层次低,需要手工编写代码来完成,使用上难以上手。
只提供两个操作,Map和Reduce,表达力欠缺。
一个Job只有Map和Reduce两个阶段(Phase),复杂的计算需要大量的Job完成,Job之间的依赖关系
是由开发者自己管理的。
处理逻辑隐藏在代码细节中,没有整体逻辑
中间结果也放在HDFS文件系统中
ReduceTask需要等待所有MapTask都完成后才可以开始
时延高,只适用Batch数据处理,对于交互式数据处理,实时数据处理的支持不够
对于迭代式数据处理性能比较差
比如说,用MapReduce实现两个表的Join都是一个很有技巧性的过程,如下图所示:
12/23/2019 (3 封私信 / 4 条消息) 与 Hadoop 对比,如何看待 Spark 技术? - 知乎
https://www.zhihu.com/question/26568496 3/12
(图片来源:Real World Hadoop)
因此,在Hadoop推出之后,出现了很多相关的技术对其中的局限进行改进,如Pig,Cascading,
JAQL,OOzie,Tez,Spark等。
Apache Pig
Apache Pig也是Hadoop框架中的一部分,Pig提供类SQL语言(Pig Latin)通过MapReduce来处理大
规模半结构化数据。而Pig Latin是更高级的过程语言,通过将MapReduce中的设计模式抽象为操作,
如Filter,GroupBy,Join,OrderBy,由这些操作组成有向无环图(DAG)。例如如下程序:
visits = load ‘/data/visits’ as (user, url, time);
gVisits = group visits by url;
visitCounts = foreach gVisits generate url, count(visits);
urlInfo = load ‘/data/urlInfo’ as (url, category, pRank);
visitCounts = join visitCounts by url, urlInfo by url;
gCategories = group visitCounts by category;
topUrls = foreach gCategories generate top(visitCounts,10);
store topUrls into ‘/data/topUrls’;
描述了数据处理的整个过程。
而Pig Latin又是通过编译为MapReduce,在Hadoop集群上执行的。上述程序被编译成MapReduce
时,会产生如下图所示的Map和Reduce:
剩余11页未读,继续阅读
天眼妹
- 粉丝: 21
- 资源: 333
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0