基于VM技术与Docker技术搭建的Hadoop集群性能比较与分析

 2022-01-17 11:01

论文总字数:23948字

目 录

1 绪论 1

1.1课题研究背景及研究的目的和意义 1

1.2国内外研究现状 1

1.2.1虚拟机 1

1.2.2 容器 1

1.3本课题主要研究内容 1

1.4论文结构 2

2 运行环境 2

2.1 Linux容器—Docker 2

2.2 虚拟机--KVM 3

2.3 本章小结 5

3 Hadoop集群 5

3.1 Hadoop简介 5

3.1.1 MapReduce 5

3.1.2 HDFS 6

3.2 基于Docker搭建Hadoop集群的方法 6

3.2.1 Docker的安装 7

3.2.2 安装Ubuntu镜像 7

3.2.3 安装Java 7

3.2.4 安装Hadoop 7

3.2.5配置环境变量 8

3.2.6配置Hadoop 8

3.2.7 格式化namenode 10

3.2.8 安装SSH 10

3.2.9保存镜像副本 10

3.2.10 构建集群 10

3.3 本章小结 11

4 实验 11

4.1 测量指标 11

4.1.1 CPU性能 11

4.1.2 I/O性能 11

4.1.3 内存性能 12

4.1.4 网络性能 12

4.2 Hadoop性能基准测试 12

4.2.1 UnixBench 12

4.2.2 IOzone 13

4.2.3 Netperf 13

4.3 对Docker和VM平台的数据分析 13

4.3.1 UnixBench 13

4.3.2 IOzone 14

4.3.3 Netperf 15

4.4 Hadoop结点性能的计算 16

4.4.1 WordCount程序 17

4.4.2 数据去重程序 17

4.4.3 数据排序程序 17

4.4.4 实验计算验证结果 17

4.5 本章小结 18

5 结论与展望 18

5.1结论 18

5.2不足之处及未来展望 19

参考文献 19

致谢 21

基于VM技术与Docker技术搭建的Hadoop集群性能比较与分析

韩亦男

,China

ABSTRACT:Cloud computing is based on the Internet, the sharing of software and hardware resources and information can be provided to the computer and other devices in this way. With the development of cloud computing technology, many enterprises put forward the related technology of different types of platform. Cloud computing is widely used in virtual machines (VM) because they are used to control the resources to allow for working load separation. But the extra level of abstraction reduces the performance of the work, making it not so worth for users.Newer advances in container-based virtualization simplifies the deployment of applications while continuing to permit control of the resources allocated to different applications.This paper mainly based on the traditional virtual machine (VM) deployment of the Hadoop cluster and Docker based technology to build the Hadoop cluster as the representative of the comparison and analysis of their performance. The CPU performance, memory, network resources and storage are analyzed, and the performance of the node is calculated, and then the performance of the data is verified by the data obtained. With this analytical result, users can more clearly understand the characteristics of each platform, and a reasonable choice of appropriate platform.

Keywords: Cloud computing; Virtual machine(VM); Docker; Performance analysis;Hadoop cluster

1 绪论

本课题来源于教师教师科研。本章主要介绍了研究比较基于VM和基于Docker搭建的Hadoop集群为对象的对虚拟机和Docker容器的的性能比较分析的目的和意义,探索对于这个性能比较分析的国内外研究现状,介绍本课题的主要研究内容。

1.1课题研究背景及研究的目的和意义

随着云计算的不断发展与深入,各项技术层出不穷。云计算其有超大规模,虚拟化,高可靠性,通用性,高扩展性,按需服务,极其廉价等特点。为了解决这些云计算所面临的这些挑战,行业内开发出了很多被实践证明非常有效的解决方案,比如为了处理海量数据而开发的Hadoop和Spark技术,为了管理云计算平台而诞生的OpenStack技术,为了提高应用部署的高效性和通用性而出现的Docker技术等,这些技术各司其职,解决了云计算中不同层次面临的艰巨问题。为了更好地利用这些技术,提高各项资源,如CPU,存储,网络等的利用率。

本文正是在如今着重于资源控制的背景下以基于传统虚拟机(VM)技术的Hadoop集群搭建与基于新兴Docker技术的Hadoop集群搭建的性能比较与分析为代表探讨虚拟机和容器,从而为实践生产环节中云计算资源分配方案的设计提供有效数据参考。

1.2国内外研究现状

1.2.1虚拟机

云计算中广泛使用虚拟机,特别是有些基础设施即服务(IaaS)在很大程度上就是虚拟机的代名词。像亚马逊的EC2云平台使客户能够使用虚拟机,并且在虚拟机上运行服务,如数据库。许多平台即服务(PaaS)和软件即服务(SaaS)供应商都建立在IaaS并且他们所有的工作负载运行在虚拟机中。由于几乎所有的云工作负载正在虚拟机上运行,虚拟机的性能几乎决定了云的性能。一旦一个程序增加了开销,没有更高层次的可以删除它,这样的开销就会成为一个普适的云工作负载性能的负担。已经有许多针对虚拟机执行与本机执行的性能表现的研究,而这样的研究在普遍提高VM技术的质量是一个重要的参考因素。

1.2.2 容器

基于容器的虚拟化使得云平台的应用部署更为高效和易于移植。虚拟专用服务器提供商作为云计算的先驱使用容器超过十年,但他们中有许多转为使用虚拟机为了提供更一致的性能表现。虽然容器背后的概念如namespace是众所周知的,但是容器技术关注度一直在降低直到快速部署的需求导致的PaaS供应商采取和规范,这一需求使得使用容器提供的隔离和资源控制技术再度兴起了。由于Linux具有开放性,支持多用户,多任务,有良好的用户界面以及设备独立性,丰富的网络功能,可靠地系统安全以及良好的可移植性,成为了云的首选操作系统。而Docker则是从2013年开始非常的热门的一个技术,无论是在GitHub上代码活跃的程度,还是Redhat对它的集成的支持,甚至是Google的Computer Engine也支持Docker的运行。国内很多企业现在针对Docker的研究也开始变得更多了,在生产环境中如何大规模部署Docker也成为了大家关注的焦点。

1.3本课题主要研究内容

本课题的主要研究内容是在同样的硬件、网络环境下学习使用Unixbench、Netperf、IOzone等性能基准测试工具从CPU性能、内存、网络、存储等方面进行几个基准的测量,然后用产生的数据进行计算分析各个节点的性能,并且通过在Hadoop上运行不同的程序来验证计算得到的各个节点的性能的结果是否正确,从而来比较基于VM搭建的Hadoop集群和基于Docker搭建的Hadoop集群的性能,为生产实践的选择提供参考。

1.4论文结构

第一章主要介绍了本课题的研究背景、研究目的,以及本课题在国内外的主要研究现状和本课题的主要研究内容。

第二章介绍了Docker,KVM的相关的一些知识,说明Hadoop是基于什么平台部署研究。

第三章讲述Hadoop的一些结构以及集群部署的一些说明为性能分析提供一些简单的知识储备。

第四章展示实验成果并进行一定的分析。

第五章是对本文的总结和展望。

2 运行环境

2.1 Linux容器—Docker

命名空间(namespace)可以有许多的运用方法,但最常见的方法是创建一个在外部不可见或者不可访问的独立的容器。容器内的进程要运行在一个普通的Linux系统,而且它们与位于其他命名空间的进程共享基本内核。容器可以嵌套分层,不过这方面并没有过多探索。

不同于虚拟机运行一个完整的操作系统,对于容器来说,一个容器最少可以只包含一个单一的进程。有两种类型的容器,操作系统容器(OS Container)和应用程序容器(Application Container)。OS容器是运行初始化系统,应用程序容器运行一个单一的应用程序。运行单个应用程序的优点是减少不必要的管理过程分配的资源。然而,这取决于使用的情况,运行一个完整的操作系统容器可能是更好的选择。应用程序容器通常不具有独立的IP地址,这在地址短缺的环境下有一定的优势。

如果不需要完全隔离,在容器间共享资源非常简单。例如,绑定安装允许一个目录出现在多个容器中,而且可能在不同的位置,这在Linux VFS层有效地实施。在容器或容器和父命名空间之间的通信就和正常的Linux IPC之间通信一样方便。

剩余内容已隐藏,请支付后下载全文,论文总字数:23948字

相关图片展示:

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;