从问题域看hadoop的各种技术
近些年来Hadoop生态系统发展迅猛,它本身包含的软件越来越多,同时带动了周边系统的繁荣发展。尤其是在分布式计算这一领域,系统繁多纷杂,时不时冒出一个系统,号称自己比MapReduce或者Hive高效几十倍,几百倍。有一些无知的人,总是跟着瞎起哄,说Impala将取代Hive,Spark将取代Hadoop MapReduce等。本文则从问题域触发,解释说明Hadoop中每个系统独特的作用/魅力以及它们的不可替代性。
Hadoop作为一个生态系统,每个系统只解决某一个特定的问题域(甚至可能很窄),这也是Hadoop的魅力所在:不搞统一型的一个全能系统,而是小而精的多个小系统。本文重点讨论分布式计算领域的几个开源系统可以解决的问题域。
(1)MapReduce:古老的分布式计算框架,它的特点是扩展性、容错性好,易于编程,适合离线数据处理,不擅长流式处理、内存计算、交互式计算等领域。MapReduce网址是:http://hadoop.apache.org/
(2)Hive:披着SQL外衣的MapReduce。Hive是为方便用户使用MapReduce而在外面包了一层SQL,由于Hive采用了SQL,它的问题域比MapReduce更窄,因为很多问题,SQL表达不出来,比如一些数据挖掘算法,推荐算法、图像识别算法等,这些仍只能通过编写MapReduce完成。Hive网址是:http://hive.apache.org/
(3)Pig:披着脚本语言外衣的MapReduce,为了突破Hive SQL表达能力的限制,采用了一种更具有表达能力的脚本语言PIG。由于pig语言强大的表达能力,Twitter甚至基于Pig实现了一个大规模机器学习平台(参考Twitter在SIGMOD2012的文章“Large-Scale Machine Learning at Twitter”)。Pig网址是:http://pig.apache.org/
(4)Stinger Initiative(Tez optimized Hive):Hortonworks开源了一个DAG计算框架Tez,该框架可以像MapReduce一样,可以用来设计DAG应用程序,但需要注意的是,Tez只能运行在YARN上。Tez的一个重要应用是优化Hive和PIG这种典型的DAG应用场景,它通过减少数据读写IO,优化DAG流程使得Hive速度提供了很多倍。(Stinger正在开发中,Tez代码:https://svn.apache.org/repos/asf/incubator/tez/branches/),Tez介绍可参考我的这篇文章:“Apache Tez:一个运行在YARN之上支持DAG作业的计算框架”。
(5)Spark:为了提高MapReduce的计算效率,伯克利开发了spark,spark可看做基于内存的MapReduce实现,此外,伯克利还在Spark基础上包了一层SQL,产生了一个新的类似Hive的系统Shark,但目前Spark和Shark尚属于实验室产品。Spark网站是:http://spark-project.org/
(6)Storm/S4:Hadoop在实时计算/流式计算领域(MapReduce假设输入数据是静态的,处理过程中不能被修改,而流式计算则假设数据源是流动的,数据会源源不断流入系统),一直比较落后,还好,Twitter开源的Storm和yahoo!开源的S4弥补了这一缺点,Storm在淘宝,mediaV等公司得到广泛的应用。Storm网址是:http://storm-project.net/,S4网址是:http://incubator.apache.org/s4/
(7)Cloudera Impala/Apache drill:Google Dremel的开源实现,也许是因为交互式计算需求太过强烈,发展迅猛,impala仅用了一年左右便推出1.0GA版本。这种系统适用于交互式处理场景,最后产生的数据量一定要少。Impala尽管发布了1.0版本,但在容错性、扩展性、支持自定义函数等方面,有很长的路要走。Cloudera Impala网址是:https://github.com/cloudera/impala,Apache drill网址是:http://incubator.apache.org/drill/。
Hortonworks将应用需求进行了如下划分:

映射到上面几种系统,可知:
(1)实时应用场景(0~5s):Storm、S4、Cloudera Impala,Apache Drill等;
(2)交互式场景(5s~1m):这种场景通常能要求必须支持SQL,则可行系统有:Cloudera Impala、Apache Drill、Shark等;
(3)非交互式场景(1m~1h):通常运行时间较长,处理数据量较大,对容错性和扩展性要求较高,可行系统有:MapReduce、Hive、Pig、Stinger等;
(4)批处理场景(1h+):通常运行时间很长,处理数据量很大,对容错性和扩展性要求很高,可行系统有:MapReduce、Hive、Pig、Stinger等。
原创文章,转载请注明: 转载自董的博客
从问题域看hadoop的各种技术的更多相关文章
- 成都大数据Hadoop与Spark技术培训班
成都大数据Hadoop与Spark技术培训班 中国信息化培训中心特推出了大数据技术架构及应用实战课程培训班,通过专业的大数据Hadoop与Spark技术架构体系与业界真实案例来全面提升大数据工程师 ...
- 超人学院Hadoop大数据技术资源分享
超人学院Hadoop大数据技术资源分享 http://bbs.superwu.cn/forum.php?mod=viewthread&tid=807&fromuid=645 很多其它精 ...
- FUNMVP:几张图看懂区块链技术到底是什么?(转载)
几张图看懂区块链技术到底是什么? 本文转载自:http://www.cnblogs.com/behindman/p/8873191.html “区块链”的概念可以说是异常火爆,好像互联网金融峰会上没人 ...
- hadoop应用开发技术详解
<大 数据技术丛书:Hadoop应用开发技术详解>共12章.第1-2章详细地介绍了Hadoop的生态系统.关键技术以及安装和配置:第3章是 MapReduce的使用入门,让读者了解整个开发 ...
- 《Hadoop应用开发技术详解》
<Hadoop应用开发技术详解> 基本信息 作者: 刘刚 丛书名: 大数据技术丛书 出版社:机械工业出版社 ISBN:9787111452447 上架时间:2014-1-10 出版日期:2 ...
- hadoop包含哪些技术?
1.Hadoop包含哪些技术?Common, Avro, MapReduce, HDFS, Pig, Hive, Hbase, ZooKeeper, Sqoop, Oozie. 2.简介Common: ...
- 【转帖】一文看懂docker容器技术架构及其中的各个模块
一文看懂docker容器技术架构及其中的各个模块 原创 波波说运维 2019-09-29 00:01:00 https://www.toutiao.com/a6740234030798602763/ ...
- 【腾讯优测干货】看腾讯的技术大牛如何将Crash率从2.2%降至0.2%?
小优有话说: App Crash就像地雷. 你怕它,想当它不存在.无异于让你的用户去探雷,一旦引爆,用户就没了. 你鼓起勇气去扫雷,它却神龙见首不见尾. 你告诫自己一定开发过程中减少crash,少埋点 ...
- 除Hadoop大数据技术外,还需了解的九大技术
除Hadoop外的9个大数据技术: 1.Apache Flink 2.Apache Samza 3.Google Cloud Data Flow 4.StreamSets 5.Tensor Flow ...
随机推荐
- C#累加器函数Aggregate用法 讲解
Enumerable.Aggregate 扩展方法在System.Linq命名空间中,是Enumerable类的第一个方法(按字母顺序排名),但确是Enumerable里面相对复杂的方法. MSDN对 ...
- javascript中的二维数组
要创建一个二位数组我们脑子里第一个出现的就是 var arr=[][]; 但是在javascript这样是会报错的,要在javascrip中创建一个二位数组对象方法如下 方法一 直接把数组写出 ...
- sql重复数据只取一条记录
1.SQL SELECT DISTINCT 语句 在表中,可能会包含重复值.这并不成问题,不过,仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值. 语法: SEL ...
- rabbitMQ 常用命令
启动监控管理器:rabbitmq-plugins enable rabbitmq_management 关闭监控管理器:rabbitmq-plugins disable rabbitmq_manage ...
- with as (转)
sql with as 用法(适用sqlserver,好像oracle也适用) Server 2005中提供了公用表表达式(CTE),使用CTE,可以使SQL语句的可维护性,同时,CTE要比表变量的效 ...
- Easyui-datagrid显示时间的格式化代码
{field: 'Time', title: '时间', formatter: function (value, row, index) { var date = new Date(value); v ...
- keras—多层感知器MLP—IMDb情感分析
import urllib.request import os import tarfile from keras.datasets import imdb from keras.preprocess ...
- Java finalize以及Garbage Collection
Java的垃圾回收机制: Java的垃圾回收并不等于C++中的析构.Java中,只有在程序濒临存储空间用完的那一刻,对象占用的空间才会释放.所以,在JAVA程序中,我们通常只考虑创建对象,而从不关心对 ...
- google thumbnailator
Thumbnailator 是一个优秀的图片处理的Google开源Java类库.处理效果远比Java API的好. 从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片 ...
- nginx accept() failed (24: Too many open files)
nginx服务器出现如下信息: [crit] 17221#0: accept4() failed (24: Too many open files) [crit] 17221#0: accept4() ...