从问题域出发认识Hadoop生态系统

  近些年来Hadoop生态系统发展迅猛,它本身包含的软件越来越多,同时带动了周边系统的繁荣发展。尤其是在分布式计算这一领域,系统繁多纷杂,时不时冒出一个系统,号称自己比MapReduce或者Hive高效几十倍,几百倍。有一些无知的人,总是跟着瞎起哄,说Impala将取代Hive,Spark将取代Hadoop MapReduce等。本文则从问题域触发,解释说明Hadoop中每个系统独特的作用/魅力以及它们的不可替代性。

  Hadoop作为一个生态系统,每个系统只解决某一个特定的问题域(甚至可能很窄),这也是Hadoop的魅力所在:不搞统一型的一个全能系统,而是小而精的多个小系统。本文重点讨论分布式计算领域的几个开源系统可以解决的问题域。

  (1)MapReduce:古老的分布式计算框架,它的特点是扩展性、容错性好,易于编程,适合 离线数据处理,不擅长流式处理、内存计算、交互式计算等领域。

  (2)Hive:披着SQL外衣的MapReduce。Hive是为方便用户使用MapReduce而在外面包了一层 SQL,由于Hive采用了SQL,它的问题域比MapReduce更窄,因为很多问题,SQL表达不出来,比如一些数据挖掘算法,推荐算法、图像识别算法等,这些仍只能通过编写MapReduce完成。

  (3)Pig:披着脚本语言外衣的MapReduce,为了突破Hive SQL表达能力的限制,采用了一种更具有表达能力的脚本语言PIG。由于pig语言强大的表达能力,Twitter甚至基于Pig实现了一个大规模机器学习平台(参考Twitter在SIGMOD2012的文章“Large-Scale Machine Learning at Twitter”)。

  (4)Stinger Initiative(Tez optimized Hive):Hortonworks开源了一个DAG计算框架Tez,该框架可以像MapReduce一样,可以用来设计DAG应用程序,但需要注意的是,Tez只能运行在YARN上。Tez的一个重要应用是优化Hive和PIG这种典型的DAG应用场景,它通过减少数据读写IO,优化DAG流程使得Hive速度提供了很多倍。

  (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等公司得到广泛的应用。

  (7)Cloudera Impala/Apache drill:Google Dremel的开源实现,也许是因为 交互式计算需求太过强烈,发展迅猛,impala仅用了一年左右便推出1.0GA版本。这种系统适用于交互式处理场景,最后产生的数据量一定要少。Impala尽管发布了1.0版本,但在容错性、扩展性、支持自定义函数等方面,有很长的路要走。

  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等。

  本文链接地址: http://dongxicheng.org/mapreduce-nextgen/rethinking-hadoop-from-problems-solved

时间: 2024-09-14 10:36:11

从问题域出发认识Hadoop生态系统的相关文章

Hadoop 生态系统

1.概述 最近收到一些同学和朋友的邮件,说能不能整理一下 Hadoop 生态圈的相关内容,然后分享一些,我觉得这是一个不错的提议,于是,花了一些业余时间整理了 Hadoop 的生态系统,并将其进行了归纳总结,进而将其以表格的形式进行了罗列.涉及的内容有以下几点: 分布式文件系统 分布式编程模型 NoSQL 数据库 SQL-On-Hadoop 数据采集 编程服务中间件 调度系统 系统部署 数据可视化 2.内容 2.1 分布式文件系统 2.1.1 Apache HDFS 在分布式文件系统当中,首先为

什么是 Hadoop 生态系统

在一些 Teiid 的一些文章和示例上都会有关于 JBoss Data Virtualization (Teiid) 通过 Hive 使用 Hadoop 作为数据源的信息.当使用 Hadoop 环境创建 Data Virtualization 示例时,比如 Hortonworks Data Platform, Cloudera Quickstart 等等,里面会包含大量的开源项目.本篇文章主要是对 Hadoop 生态系统有个初步的认识,以下的一些开源项目详情可以查看 hadoop ecosyst

壮大的Hadoop生态系统:十大炫酷项目简介

在开发人员开发Hadoop以克服大数据带来的挑战之后的10年间,这些技术的生态系统在不断发展壮大.Apache软件基金会下面有众多的开源大数据技术项目.本文介绍一些重要项目,并顺便了解几个新兴项目. 管理和分析大数据已经变成了重大挑战,数量急剧增加的信息从社交媒体.连接到物联网中"物件"的传感器.结构化数据.非结构化数据以及可以收集的其他一切数据收集而来.为了应对这项任务,开发人员已开发了一系列新的开源技术. 旗舰软件Apache Hadoop是Apache软件基金会的一个项目,它在上

比较Apache Hadoop 生态系统中不同的文件格式和存储引擎的性能

主题 这篇文章提出了在Apache Hadoop 生态系统中对比一些当前流行的数据格式和可用的存储引擎的性能:Apache Avro, Apache Parquet, Apache HBase 和 Apache Kudu 空间效率, 提取性能, 分析扫描以及随机数据查找等领域.这有助于理解它们中的每一个如何(何时)改善你的大数据工作负载的处理能力. 引言 最初把hadoop文件格式和存储引擎做比较的想法是在初始系统修订版之一的驱动下完成的 –这个系统是在CERN中大规模调节Hadoop-ATLA

《Hive编程指南》一1.2 Hadoop生态系统中的Hive

1.2 Hadoop生态系统中的Hive WordCount算法,和基于Hadoop实现的大多数算法一样,有那么点复杂.当用户真正使用Hadoop的API来实现这种算法时,甚至有更多的底层细节需要用户自己来控制.这是一个只适用于有经验的Java开发人员的工作,因此也就将Hadoop潜在地放在了一个非程序员用户无法触及的位置,即使这些用户了解他们想使用的算法. 事实上,许多这些底层细节实际上进行的是从一个任务(job)到下一个任务(job)的重复性工作,例如,将Mapper和Reducer一同写入

Hadoop生态系统地图:大象王国的八大族群

无论你是否承认,Hadoop如今已经成为大数据运动的代名词和重心.围绕Hadoophttp://www.aliyun.com/zixun/aggregation/6196.html">产品技术已经形成软件.应用.服务的综合体,或者说生态系统.Hadoop生态系统就像一颗年轻的超新星,随时都在快速分化和增长,新产品.新模式不断涌现. 为了帮助企业和业界的大数据技术和应用的实践者快速理清Hadoop生态系统的头绪,GigaOM最近制作了一张Hadoop生态系统地图,按照不同的应用场景和交付模式

《Hadoop与大数据挖掘》一2.1.5 Hadoop生态系统

2.1.5 Hadoop生态系统 如图2-12所示,Hadoop的生态圈其实就是一群动物在狂欢.我们来看看一些主要的框架. (1)HBase HBase(Hadoop Database)是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群.(2)Hive Hive是建立在Hadoop上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储.查询和分析存储在Hadoop中的大规模

Hadoop生态系统在壮大:十大炫酷大数据项目

在开发人员开发Hadoop以克服大数据带来的挑战之后的10年间,这些技术的生态系统在不断发展壮大.Apache软件基金会下面有众多的开源大数据技术项目.本文介绍一些重要项目,并顺便了解几个新兴项目. 管理和分析大数据已经变成了重大挑战,数量急剧增加的信息从社交媒体.连接到物联网中"物件"的传感器.结构化数据.非结构化数据以及可以收集的其他一切数据收集而来.为了应对这项任务,开发人员已开发了一系列新的开源技术. 旗舰软件Apache Hadoop是Apache软件基金会的一个项目,它在上

Hadoop生态系统常用组件导图

Hadoop生态系统主要组件导图: 看大图