Nikita Ivanov谈GridGain的Hadoop内存片内加速技术

GridGain最近在2014年的Spark峰会上发布Hadoop内存片内加速技术,可以为Hadoop应用带来内存片内计算的相关收益。

该技术包括两个单元:和Hadoop HDFS兼容的内存片内文件系统,以及为内存片内处理而优化的MapReduce实现。这两个单元对基于磁盘的HDFS和传统的MapReduce进行了扩展,为大数据处理情况提供了更好的性能。

内存片内加速技术消除了在传统Hadoop架构模型中与作业追踪者(job tracker)、任务追踪者(task tracker)相关的系统开销,它可以和现有的MapReduce应用一起工作而无需改动任何原有的MapReduce、HDFS和YARN环境的代码。

下面是InfoQ对GridGain的CTO Nikita Ivanov关于Hadoop内存片内加速技术和架构细节的访谈。

InfoQ: Hadoop内存片内加速技术的关键特性在于GridGain的内存片内文件系统和内存片内MapReduce,你能描述一下这两个组件是如何协同工作的吗?

Nikita:GridGain的Hadoop内存片内加速技术是一种免费、开源和即插即用的解决方案,它提升了传统MapReduce工作(MapReduce jobs)的速度,你只需用10分钟进行下载和安装,就可以得到十几倍的性能提升,并且不需要对代码做任何改动。该产品是业界第一个基于双模、高性能内存片内文件系统,以及为内存片内处理而优化的MapReduce实现方案,这个文件系统和Hadoop的HDFS百分百的兼容。内存片内HDFS和内存片内MapReduce以易用的方式对基于磁盘的HDFS和传统的MapReduce进行了扩展,以带来显著的性能提升。

简要地说,GridGain的内存片内文件系统GGFS提供了一个高性能、分布式并与HDFS兼容的内存片内计算平台,并在此进行数据的存储,这样我们基于YARN的MapReduce实现就可以在数据存储这块利用GGFS做针对性的优化。这两个组件都是必需的,这样才能达到十几倍的性能提升(在一些边界情况下可以更高)。

InfoQ: 如何对这两种组合做一下比较,一种是内存片内HDFS和内存片内MapReduce的组合,另一种是基于磁盘的HDFS和传统的MapReduce的组合?

Nikita:GridGain的内存片内方案和传统的HDFS/MapReduce方案最大的不同在于:

  1. 在GridGain的内存片内计算平台里,数据是以分布式的方式存储在内存中。
  2. GridGain的MapReduce实现是从底层向上优化,以充分利用数据存储在内存中这一优势,同时改善了Hadoop之前架构中的一些缺陷。在GridGain的MapReduce实现中,执行路径是从客户端应用的工作提交者(job submitter)直接到数据节点,然后完成进程内(in-process)的数据处理,数据处理是基于数据节点中的内存片内数据分区,这样就绕过了传统实现中的作业跟踪者(job
    tracker)、任务跟踪者(task tracker)和名字节点(name nodes)这些单元
    ,也避免了相关的延迟。

相比而言,传统的MapReduce实现中,数据是存储在低速的磁盘上,而MapReduce实现也是基于此而做优化的。

InfoQ:你能描述一下这个在Hadoop内存片内加速技术背后的双模、高性能的内存片内文件系统是如何工作的?它与传统的文件系统又有何不同呢?

Nikita:GridGain的内存片内文件系统GGFS支持两种模式,一种模式是作为独立的Hadoop簇的主文件系统,另一种模式是和HDFS进行串联,此时GGFS作为主文件系统HDFS的智能缓存层。

作为缓存层,GGFS可以提供直接读和直接写的逻辑,这些逻辑是高度可调节的,并且用户也可以自由地选择哪些文件和目录要被缓存以及如何缓存。这两种情况下,GGFS可以作为对传统HDFS的嵌入式替代方案,或者是一种扩展,而这都会立刻带来性能的提升。

InfoQ:如何比较GridGain的内存片内MapReduce方案和其它的一些实时流解决方案,比如Storm或者Apache Spark?

Nikita:最本质的差别在于GridGain的内存片内加速技术支持即插即用这一特性。不同于Storm或者Spark(顺便说一下,两者都是伟大的项目),它们需要对你原有的Hadoop MapReduce代码进行完全的推倒重来,而GridGain不需要修改一行代码,就能得到相同甚至更高的性能优势。

InfoQ:什么情况下需要使用Hadoop内存片内加速技术呢?

Nikita:实际上当你听到“实时分析”这个词时,也就听到了Hadoop内存片内加速技术的新用例。如你所知,在传统的Hadoop中并没有实时的东西。我们在新兴的HTAP (hybrid transactional and analytical processing)中正看到一些这样的用例,比如欺诈保护,游戏中分析,算法交易,投资组合分析和优化等等。

InfoQ:你能谈谈GridGain的Visor和基于图形界面的文件系统分析工具吗,以及他们如何帮助监视和管理Hadoop工作(Hadoop jobs)的?

Nikita:GridGain的Hadoop内存片内加速是和GridGain的Visor合在一起的,Visor是一种对GridGain产品进行管理和监视的方案。Visor提供了对Hadoop内存片内加速技术的直接支持,它为HDFS兼容的文件系统提供了精细的文件管理器和HDFS分析工具,通过它你可以看到并分析和HDFS相关的各种实时性能信息。

InfoQ:后面的产品路标是怎么样的呢?

Nikita:我们会持续投资(同我们的开源社区一起)来为Hadoop相关产品技术,包括Hive、Pig和Hbase,提供性能提升方案。

Taneja Group也有相关报道(Memory
is the Hidden Secret to Success with Big Data
, 下载全部报告需要先注册),讨论了GridGain如何把Hadoop内存片内加速技术和已有的Hadoop簇、传统基于磁盘的有缺陷的数据库系统以及面向批处理的MapReduce技术进行集成。

关于被访问者

Nikita Ivanov是GridGain系统公司的发起人和CTO,GridGain成立于2007年,投资者包括RTP
Ventures和Almaz Capital。Nikita领导GridGain开发了领先的分布式内存片内数据处理技术-领先的Java内存片内计算平台,今天在全世界每10秒它就会启动运行一次。Nikita有超过20年的软件应用开发经验,创建了HPC和中间件平台,并在一些创业公司和知名企业都做出过贡献,包括Adaptec, Visa和BEA Systems。Nikita也是使用Java技术作为服务器端开发应用的先驱者,1996年他在为欧洲大型系统做集成工作时他就进行了相关实践。

查看参考原文:Nikita
Ivanov on GridGain’s In-Memory Accelerator for Hadoop

时间: 2024-10-10 04:12:36

Nikita Ivanov谈GridGain的Hadoop内存片内加速技术的相关文章

浅谈C++容器动态内存管理的优化

在信息学竞赛中,C++的容器的用途非常广泛,但经常因常数过大而超时.怎样才能提高它们的效率呢? 我们知道,容器是存储同一类对象的对象,既然"对象"我们无法改变,那么我们只能从"存储"入手,不难想到,不同容器在实现上的根本区别是它们对应着不同的内存组织方式,内存管理无疑是这种实现的核心,所以优化内存管理是加快容器效率的最好途径之一. 一.内存分配器简介 怎样才能优化内存管理呢?很简单,C++为我们提供了这样的接口,我们可以通过自定义容器模板中的最后一个allocato

Hadoop集群内lzo的安装与配置

LZO压缩,可分块并行处理,解压缩的效率也是可以的. 为了配合部门hadoop平台测试,作者详细的介绍了如何在Hadoop平台下安装lzo所需要软件包:gcc.ant.lzo.lzo编码/解码器并配置lzo的文件:core-site.xml.mapred-site.xml.希望对大家有所帮助.以下是正文: 最近我们部门在测试云计算平台hadoop,我被lzo折腾了三四天,累了个够呛.在此总结一下,也给大家做个参考. 操作系统:CentOS 5.5,Hadoop版本:hadoop-0.20.2-C

从微信谈:产品经理是否有必要懂技术

看了微信5.4最新版本的介绍文章后,就有想一篇跟本文主题相关博客的冲动——莫非是我对新特性太激动了?不是,那样倒不如说是:我越来越对微信的产品设计感到“叹为观止”.我玩微信的时间到目前为止也就是我做产品的时间:大半年,从我经历的几个版本到现在,给我的感觉是:保持一成不变的简单.优雅.如果你问我微信给你的印象最深且有别于其它同类型产品的“差异化”功能是什么?我会毫不犹豫的告诉你:公众号(订阅号和服务号),这也是我本文想围绕其阐述的重点! 既然是说微信,那就先提个问题:你认为产品经理张小龙懂技术吗?

Hadoop学习系列(2.Hadoop框架介绍与搜索技术体系介绍)

第一天 2.Hadoop框架介绍与搜索技术体系介绍 1. 大数据典型特性与分布式开发难点 2. Hadoop框架介绍与搜索技术体系介绍 3. Hadoop版本与特性介绍 4. Hadoop核心模块之HDFS分布式文件系统架构介绍 5. Hadoop核心模块之Yarn操作系统架构介绍 6. Linux安全禁用设置与JDK安装讲解 7. Hadoop伪分布式环境部署HDFS部分 8. Hadoop伪分布式环境部署Yarn和MR部分 9. Hadoop环境使用常见的错误集合 10. Hadoop环境常

浅谈SQL Server 对于内存的管理

简介 理解SQL Server对于内存的管理是对于SQL Server问题处理和性能调优的基本,本篇文章讲述SQL Server对于内存管理的内存原理. 二级存储(secondary storage) 对于计算机来说,存储体系是分层级的.离CPU越近的地方速度愉快,但容量越小(如图1所示).比如:传统的计算机存储体系结构离CPU由近到远依次是:CPU内的寄存器,一级缓存,二级缓存,内存,硬盘.但同时离CPU越远的存储系统都会比之前的存储系统大一个数量级.比如硬盘通常要比同时代的内存大一个数量级.

浅谈javascript性能-管理内存

上次说到,javascript脚本到底应该放在哪里?用什么用处? 以下2点: 在Html.Body部分中的JS会在页面加载的时候执行.即-用户触发一个事件的时候执行的脚本.eg:onload事件... 在Html.Head部分中的JS会在被调用的时候执行.即-常被用来生成页面的内容. 总而言之:将Javascript标识放置<head>...</head>在头部中间,此时,*.js文件的提前调用:也就是说代码放在<head>区域载入的时候,就同时载入了代码,你再<

内存恶鬼drawRect - 谈画图功能的内存优化

正文 标题有点吓人,但是对于drawRect的评价倒是一点都不过分.在平日的开发中,随意覆盖drawRect方法,稍有不慎就会让你的程序内存暴增.下面我们来看一个例子. 做了一个画板功能,但是苦于内存问题一直得不到解决.画板功能很简单,就是记录手指触摸的轨迹然后绘制在屏幕上.下面我们来看一张效果图: 如图我们看到左侧内存的状况随着手指的绘制逐渐恶化.另外细心的朋友可以观察到,点击图中蓝色矩形按钮之后,便会弹出画板,而这时并没有进行任何的手指绘制,内存就突变为 114 MB ,然后每当手指绘制开始

浅谈swift中的内存管理

Swift使用自动引用计数(ARC(Automatic Reference Count))来管理应用程序的内存使用.这表示内存管理已经是Swift的一部分,在大多数情况下,你并不需要考虑内存的管理.当实例并不再被需要时,ARC会自动释放这些实例所使用的内存. 内存管理:针对的是实例的内存占用的管理(放在堆里面) 实例:1:由class类型构建的实例,2:闭包对象 下面我们来写一个实例来证明一下 class Person { var name: String init(name: String )

浅谈并小结java内存泄漏

一.定义 首先什么是内存泄漏,简单点说就是用完了忘了回收,而其他对象等资源想用却没法用的一种"站着茅坑不拉屎"的浪费资源的情况.在C/C++中,多数泄漏的场景就是程序离开某一运行域时,如在某个方法体中new出的对象或者malloc出的结构体等,并且只有该方法体中的局部变量指向这块内存区域时,在该方法返回时,存在栈中的局部变量指针随着栈帧被一起销毁,那么就没有任何指针可以指向该内存区域了,那么这块内存区域便是泄漏了. 而java的内存泄漏呢?众所周知,java的内存回收是由gc管理的.g