/ 中存储网

使用Hadoop-RDMA加速大数据处理

2013-12-06 00:00:00 来源:中存储

中国最具影响、规模最大的大数据领域盛会—— 2013中国大数据技术大会(Big Data Technology Conference,BDTC)于2013年12月5-6日在北京举行。数十家领军企业,近七十场主题演讲,不仅覆盖Hadoop生态系统与流式计算,实时计算与NoSQL、NewSQL等技术方向,还对互联网、金融、电信、交通、医疗等创新案例,大数据资源的法律法规、大数据商业利用的政策管制等有深入讨论。

BDTC 2013中国大数据技术大会首日全体大会上,俄亥俄州立大学计算机系教授Dhabaleswar K. Panda发表了题为《使用Hadoop-RDMA加速大数据处理》的演讲。他从高性能计算网络开始了自己的讲话,期间着重强调MPI部分的作用。随后提到了HPC是否可以运用于Hadoop中。Dhabaleswar认为,许多公司在尝试改善Socket其实是个错误,因为Socket本来就不是针对高性能设计。随后Dhabaleswar更分享了使用RDMA后HDFS、MapReduce等组件的性能提升。

以下为演讲实录:

  Dhabaleswar K. Panda: 大家下午好!非常高兴能有这样一个机会参加我们论坛。受给大家介绍一下我们这个团队在最近几年所做的相关的工作。我们开发了RDMA,它是一种先进的计算方式,如果你对RDMA并不了解,它实际上就是远程的DMA。RDMA到底有什么特点?我们怎么样利用这些特点。今天早上我们谈到了大数据的问题,大数据成为我们企业界、商业界分析的元素,大数据给我们管理决策带来了绝无仅有的机会。另外我们看到这些数据的量非常巨大,可能在十年以后共有35PB。大数据有三个V的特性,第一个V表示量非常大;第二V表示速度非常快;第三个V是多样性,这是三V的特点。

我们看一下谁在使用Hadoop,我们知道有许多不同企业都在使用Hadoop,Hadoop在全世界当中有众多的用户。下面将首先介绍Hadoop不同的组成部分;其次是网络技术以及协议在全世界有什么趋势,第三,讨论Hadoop的发展有什么挑战,谈谈不同Hadoop的设计。接下来给大家介绍一下Mikachma。

我们知道这是Hadoop的架构,我们有HDFS,以及RPC等等,这是整个Hadoop的框架以及结构。在交互的阶段我们怎么进行相互的交互?这里我们重点放在交互,我们可以使用比较高性能的协议来进行相关的内容,进行这方面工作。现在看一下我们HDFS这是由我们的Hadoop初始的存储,有纠错的能力,可靠性非常强,另外这个系统被很多不同非常知名的企业都应该应用了,在这里我们就是想看一下我们怎么样才能把RMA或者RDMA的内容嵌入到这个里面,看到有什么好处?我们看一下在网络层面上,在我们客户端以及在HDFS数据节点的交互,我们有比较高性能的网络进行这样一种连接,这样我们进一步推进HDFS这种客户端的应用了,这是我们Hadoop的架构和运营情况。他们收取获取不同的相关数据,之后他们来做,我们看一下这部分相关运营可能是成本也是比较高的这一部分。另外一个重要的成分是HBase,我们有HBase的主机数据库,这种设计在不同的企业当中都已经应用了,我们今天早上很多都谈到了HBase的应用,HBase在整个过程当中有两个不同的网络,一个联系HBase客户端的,还有一个和地区服务器之间的联系,还有把区域服务器和数据节点的联系。我们看一下网络技术以及协议相关的趋势。这是在过去这种20年间相关的发展,这是世界500强在商用计算集群方面相关的趋势,也能跟我们进一步的展示一下这个具体情况是什么?从这里我们这个表向我们展示这么多年以来它到底发生了什么样的情况?这是世界500强到1999年,那时候使用的都是超级计算机。之后我们商品集群发生了巨大的发展,最近几年有85%这样都是一些集群,可能里面涉及到客户端还有很多其他相关成分的集群。现在我们来看一下这是比较先进相互的联系,从这个幻灯片上我们可以看到就是我们有这种相互连接的协议,实际上也是得到了进一步的应用,在中国还有很多其他的企业也都是应用了新的一种协议。

在最近几年我们有RDM这种整合,所以我们现在有了一种整合性的界面来将相关的架构进行相关的整合,我们看到相关表面还都是非常好的。这里我给大家展示一下就是我们现在的这种延迟性是比较低的,我们延迟性可能只有几微秒,我们带宽比较宽,每秒钟有100个TB,另外CPU相关费用也比较低,你的这种相关的CPU比较低大约只占5%到10%,这样能够进行很好的交互,也可以把速度提升起来。这个和Linux开发是比较相似的,也在推动最常用的发展。有不同的颜色,用的是不同的技术,我们关注一下绿色的这个,看多年以来它增速比较稳定的。这个显示的是比例,在500个系统当中这么多年当中显示应用了什么样的网络技术。随着互联网不断的发展,它的应用也在发展。在这里我们可以看到,它大概是可能速度达到50GB所有,性能差别还是挺多的,但是这里我们看到它在以太网的表现是怎么样的。大家可以看到在设计系统的可以考虑很多事情。在2013年宣布了一个名单500个系统当中有207个用的是这个集群。可以看到有19个用的是这样的系统,当然这里有很多来自中国的。在这样的情况为什么在高性能计算当中网络发展那么快,实际上有一个中间件MPI,这个是一个编程的模型,它可以能够推动这些高性能计算的发展多年以来随着新的网络技术的发展,人们也做了很多的研发,包括我们这里也做了很多研究,这使得性能和扩展性进一步的提升。不仅仅是API,大约在这个领域实际上大约13年的时间了,还有其他的模型现在也正在逐步的出现。这样的情况下我刚才提到了在我们公司内部,实际上我们一直研究RDMA,我们软件用其他设备和机器进行研究,这里看到大约在71个国家当中有两千多个都在用,包括一些大学,还有一些排名是非常靠前的,像中间排名第七第十几的样子都是在MPI的基础上来做的。

看一看性能这个是我刚才提到的它的延迟非常短有不同的指标,看蓝色的线是最新的数据,用的是英特尔最新的架构。从一个节点到另外一个节点发送数据的话,大约能够每秒达到12.8GB,这这样技术的发展它的性能如果考虑100G的传输速度和非常短的延时的话应用性非常好。如果高性能发展那么好和Hadoop有什么样的关系?这个也是我们过去两年当中一直在研究的事情。我们比较关注的就是我们如何能够突破它的瓶颈,然后给予它新的设计,这个设计能否适应MPI的模型,如果我们能够实现它的性能的话为什么我们不用呢,这里我们有一些研究成果。同时大家可以看到现在很多集群已经存在了,中国已经部署了这样的系统。所以这些机器是否可以用在Hadoop这样的环境当中,要考虑高性能计算网络的集群是否能够使用Hadoop做大数据的应用。

刚才提到的是挑战,如果看看整体的发展情况,来看看不同的构建的话。比如说多核架构网络的技术,存储的技术当然这个也是非常重要的。最上面是大数据应用,中间也有一些中间件。中间是编程模型,如果我们要想在这个层面有足够的性能的话,提高好的服务质量等等这些都是我们现在面临研究的挑战。现在我们所做的工作我们只是关注了非常少的一部分的研究,我们是否能够用其他的系统,这个可供研究的领域非常广的,有很多性能的提升。这是显示的比较常见的协议,这是传统的socket,包括一G两G几十G的。当然socket也有许多可替代协议,还有其他产品也是4G几十G。还有其他协议比如说SDP,这个东西实际上是我现在最关注的,这种技术使得一些应用能够以比较好的性能实现。这里有一个叫做HIS的东西,用这个就会有比较好的性能,大多数将不同的socket进行比较,这些都是未来的一些方向。

大家会问现在设计已经是这样了,也有一些应用,是一个G或者10个G的网络,有一些公司可能做一些改善性的工作,做加速型的socket,那么Hadoop是否可是被加速使用这些网络和协议。这些socket设计的时候并不是使用高的性能,在上层可能并不一定匹配。比如说在Hadoop当中我们以前的设计是否能够提高整个性能。如果能够做得话我们怎么样去做,所以这个也是我们需要解决的问题。

我们在过去两年做的事情就是做了以下构建的改善,下面都是一些细节,今年夏天我们有一个Hadoop2.0项目,新的版本当中有一些我们最新的研究版本最新的研究技术。这个是最新版本是1.2.1版本,大家可以下载的。这个也用很多东西进行过测试,在不同平台上得做过测试。在这些构建当中我们可以看到我们怎么做的设计。到目前为止人们觉得网络很慢的,网络很慢给大家显示一些数字就是未来可以变得更快。所以我们如果对上面层进行改造提高性能,这个正在研究。这是去年我们在2012年的大会上发表一个论文,这里面就是讲我们如何改善速度,如何能够从2G涨到10G,这些数字都用了同样的软件来做的,用的是两个协议,一个IPoIB,红色的是我们的设计,后面那个是10G的,第一个IPoIB用同样硬件可以改变30%,10G的话是56%,刚才提到用我们技术是30%改变,10G是56%,这是通信时间的改变。

还有一个新的评估结果比较相似,左边显示的是HDD的数据节点的数字。然后可以看到每个节点它单盘数量,在这里20G的文件大小的话,在IPoIB改变超过24%,如果集群是4个SID节点如果是20G文件大小的话还是用IPoIB用高性能网络的话,能够提升性能,用现代存储使高性能网络有很大的改善作用。人们说我用高性能网络没有起到加速的效果,可能取决于某些软件的问题。

这是另外的实验做得跟前面的实验差不多,也是一个G和两个G形成对比的,这个不仅仅在两个硬盘改善,一个也是一样的,在这里可以看到高性能网络确实起到了一些加速的作用。

这是另外的实验,就是在SDSC做的实验,有33个SDSC节点在100G里面,延时提高28%,所以在我们设计当中就是为了要把它扩展性做得更好。这仅仅是SDSC的部分。这里我们把一些计算的逻辑内存的一些模块进行优化,减少他们之间的通信时间。到下面还是分为两个部分,通过RDMA,我们充分利用每个硬件当中加速的特性。这里这是一些典型的数字,这些数字也是说八个数据节点,右边是四个数据节点,八个DB的节点在APSU上面有24%的改善。这里可以看到跟SOIP相比,这里面我们改善是24%,如果用SASD这个效果更明显了。在这里你看到还是100G,能够有31%的改善,SSD在右边性能的改善更大一些。这是我们在更大集群上跑的,这是64个节点,240GB上面,改善是39%,性能提高了39%,这仅仅是一部分。

这里有不同基准的指标,大家都可以看到在这里比如30GB的话,改善程度达到46%。我们在RPC做了一些工作,前面已经谈到了,这是非常重要的部分,在很多活动当中,因为这里面有很多通信的需求。因为这里我们首先做这样一个设计,包括按需连接的设计,RDMA或者实时通信等等,左边是延迟。大家看到39微秒,在这里相当我们延迟性能提高了50%,就是一半。右边整个吞吐量改善82%到64.2%。

我们再来看一下其他的相关组成部分,也就是HBase,这是比较详细的介绍。这里我们可以看到如果我们使用相关的技术的话,我也能够大幅度的减少我们交流的时间。实际上对于一个KB的get的话,对于10个G通信时间我们提升6倍左右。这个是HBase的一个框架。这个对HBase的一个对于多客户端一个单服务器的结构,所以我们图上也能够进一步的比较HBase get延迟是多少,还有Get的流量是什么,我们对于10个G16个客户端来讲进一步提升27%。我们看一张幻灯片,这是一个HBase读写的量,这个图上我们可以看到我们进一步的延迟,进一步提升42%。

实际上我们可以把这个不同部分进行相关的整合。这张幻灯片把它们进行的相关整合,对于5G来讲实际上我们相比10个G的来讲大约提升53%,对于20G来讲它可以提升10%。相当于10G使用HDD,相比于HDFS来讲也能提升46%。这是比较类似的比较,这是我们进行分群分类的比较。然后我们大约是集群有八个,然后我们进行了80G的分类,从这个图上可以看到提升了40%,对于10个G使用HDD不是使用HDFS也会提升32%。

从图上我们可以看到进行了100个G相关的实验,大约有八个集群,我们发现能提升45%,对于实际使用HDD提升39%。这是我们在SDSC相关的分类,我们可以看到对200个G随机读写器来讲有32个集群,我们对于IPoIB来讲提升20%。我在这里简单的给大家介绍一下RDMA相关的设计,这个设计比较类似我们之前进行的设计,还要看一下你具体客户端是什么样的?我们实际上也可以有主机线,然后跟客户端进行很好的争夺。

我们看一下相关挑战是什么?我们有一些传统的插件,我们把传统的插件跟RDMA进行相应整合,整合之后,我们希望相关的质量或其它相关性能有大幅度的上升;希望运行的角度能够实现进一步改变,所以如果我们有更多工具,在这块会有更多好处。这方面我们也进行了很多研究,未来希望推出新版本,进一步支持HDD均衡复制,支持比较先进的上层设计并进一步进行优化。

我讲完了,非常感谢我的团队,他们非常辛苦。最后我的团队正在招募新成员,如果你对我们研究非常感兴趣,欢迎你加入我们团队,你可以联系我和Lucy。