Projects:HadoopBenchmark

From IIIS-Systems
Jump to: navigation, search

项目名称

虚拟环境下部署大数据系统框架的调度性能研究

项目介绍

项目背景

近年来,随着互联网在全球的大规模普及,大量的用户及系统数据被采集并保存到IT公司数据库。以Facebook公司为例,2012年8月该公司的社交网络数据日产生量达到500T,而这个数字仍在以惊人的速度增长。数据量级的飞跃不仅带来了存储领域的新一轮革命,更让所以的IT公司思考如何使用这些历史数据使之产生新的价值。所幸的是,当前硬件的计算能力已经使我们可以做这些方面的尝试,而上世纪80年代热门的人工智能机器学习终于在今天可以焕发出新的生命力——其中一个普遍的应用场景便是从海量非结构化数据中提取中有用信息。由于数据处理的规模通常达到GB、TB甚至PB级,单个机器早已无法满足这样的计算要求。人们寻求整合了多个计算机的计算能力的方法,其中最优秀的,便是Google在2004年发布的MapReduce。MapReduce是一个处理大数据集的编程模型,通过遵循一定的编程模式,开发者便可以不必考虑集群底层的通信实现轻松写出在大规模集群上并行运行的分布式程序。

Yahoo! 几个工程师根据Google的Mapreduce以及GFS(Google FileSystem)论文写出了它们的开源实现,命名为Hadoop。开源的实现使得全球范围的研究者及工程师可以无门槛地使用Hadoop部署自己的集群并运行MapReduce程序。然而,在物理机上部署一个Hadoop集群有着繁琐的程序,用户往往不得不在不同机器上重复同样的操作或者往往一个简单的修改便需要拷贝文件到所有的机器上。如何“即取即用”地部署Hadoop集群变成了一个非常热切且实际的需求。

与分布式计算框架同时发展的还有虚拟化服务。尽管硬件成本日渐降低,但仍并不是所有公司、研究机构或个人有足够的资金人力创建并维护自己的数据中心的。同时,大公司也可以通过出售剩余计算资源为自己创造新的盈利。虚拟化硬件资源,按需求分配给不同的租户使用,提供所谓IAAS(Infrastructure as a service) PAAS(Platform as a service)和SAAS(Software as a service)。与之对应的虚拟平台包括云计算、容器、以及VMware等公司自己的分布式虚拟技术。Amazon的EC2(Elastic Compute Cloud)和Google的Google Cloud Platform是最出色的商业云平台,有着公司自己的实现及针对自身服务的优化;而目前最火热的开源云平台实现便是OpenStack了。然而,云计算分配给用户的是单独的虚拟机,包括了完全独立的操作系统,对于只需要包装可移植应用的用户是非常大的浪费,于是以Docker为首的容器技术出现并解决了这个问题。

虚拟技术具备的“即取即用”功能非常吻合当前用户对Hadoop的需求。人们也尝试在云上或容器中部署Hadoop集群。本项目基于实验室的集群(百台机器以上),以OpenStack/Docker为云平台/容器的代表,对几种共享式分布式存储的Hadoop与虚拟技术相结合的部署方式进行性能测试,并通过对OpenStack网络机制的研究提出了二层数据交换的部署方式,提升了原本的部署方式性能。

项目工作

本项目对Hadoop在虚拟化平台上部署的多种方式进行了较详细及科学的性能测试,目的在于对比实验得到不同类型的MapReduce任务在虚拟平台上运行、同时访问共享式分布式存储带来的性能损益,为其他有大规模Hadoop集群需要的使用者提供参考。虚拟平台上的虚拟机/容器通过二层网络访问宿主机同网段的HDFS。

选取OpenStack —— 当下使用者最多最受欢迎的开源云平台作为云计算的代表实现,Docker—— 一种轻量级打包运行程序并提供网络、计算资源隔离的工具作为容器技术的代表实现, 进行以下几种部署方式的性能测试:

  • 基准线: HDFS和Hadoop Yarn都部署在物理机上
    • HDFS部署在物理机, Hadoop Yarn在OpenStack虚拟机中运行,通过Open vSwitch bridge访问HDFS
    • HDFS 部署在物理机,Hadoop Yarn在Docker容器中运行,Open vSwitch bridge访问HDFS

完成以上实验主要工作将经历以下三个阶段:

第一阶段实验环境和基本平台搭建。物理机环境的下Hadoop的部署,OpenStack虚拟机镜像准备,Docker镜像准备等。

第二阶段着重于部署平台过程与网络优化问题的解决。研究OpenStack网络设置,对环境甚至源码进行必要的修改以实现二层网络功能;对Docker的网络部署进行研究,通过Openswitch搭建可用的Docker分布式集群;批量创建OpenStack虚拟机与Docker容器并在其上分别搭建Hadoop集群;相关技术问题的解决。此阶段会遇到各种各样的问题,需要学会在集群中批量运行程序、查看OpenStack日志和Hadoop各组件日志来调试运行错误并了解系统配置对程序的影响。

第三个阶段使用基准测试对Hadoop进行性能测试,使用系统监测工具收集实验数据并对采集到的数据处理分析、画出性能监测图、运行时间对比图并进行相关分析。本文选取Intel的HiBench基准测试工具包进行Hadoop性能测试。


参与人员

申晗 导师:徐葳

相关资料

项目进展

2015年3月1日

完成OpenStack基本环境搭建

2015年4月1日

完成Docker基本环境搭建

2015年5月20日

完成Benchmark测试

2015年6月3日

毕业论文提交


相关链接

  • [1] 相关脚本