当前位置: 首页 > news >正文

Hadoop集群部署模型纵览2

上文中,我们介绍了Hadoop集群部署模型中的2个类型,分别是存储/计算绑定模型和单一计算模型。这篇文章我们会着重介绍存储/计算分离的Hadoop集群部署模型。


存储和计算节点分离模型(Data-ComputeSeparation Deployment

如果你把存储和计算部署在相同的节点内,这固然可以达到数据本地化(DataLocality)的需要,但是当你的计算能力不足需要扩容时,增加计算节点的同时也必须增加存储节点。因此存储和计算绑定模型下,对于存储和计算节点的扩容必须同时进行,无法灵活定制,这难免会造成计算或存储资源的浪费。

这里我们向您推荐一种新的部署模型——存储和计算节点分离模型。该模型是指您可以把存储服务(DataNode)和计算服务(TaskTracker)等分开部署在不同的虚拟机中。这样您既可以灵活地为存储节点和计算节点单独扩容,也为多个计算集群共享相同的存储集群打下基础,为您节省了绑定模式下扩容导致的资源浪费,减少CAPEX,也避免了维护多个存储集群、造成大量数据迁移拷贝的OPEX麻烦。关于多个计算集群使用同一的存储,请参见本文的自定制集群部分。

但是纯粹的分离模型并不能保证传统的Hadoop的数据本地性特性。因此BDE做了相应改进。用户可以指定将独立的计算节点虚拟机部署在存储节点所在的物理主机(Host)上,这样就避免其间的通信经过网络。

为了方便用户控制存储节点和计算节点的拓扑,BDE提供了几类节点分布策略。首先是单位主机节点数目策略(InstancePerHost),用户可以指定在同一台物理主机上,同时运行的存储节点和计算节点的数目;其次,节点组依赖关系(GroupAssociation),用户也可以指定计算节点组和存储节点组之间的依赖关系——弱依赖(weakgroupAssociation)和严格依赖(strictgroupAssociation)等;第三,当然对于任何一种部署模型,BigData Extensions都提供机架感知网络拓扑结构策略(RackAwareness),这部分与本文关系不大,如果您感兴趣,请参考BDE官方用户手册获取更多信息。

因此,后续我们会从不适用任何分布策略和应用分布策略两个方面为大家详细介绍本模型。

不包含主机排布限制的存储/计算分离模型

BDE支持部署不包含任何节点排布限制的存储/计算分离的Hadoop集群。部署计算节点时不会考虑存储节点的主机排布,也无法利用存储节点的磁盘空间作为计算节点运行任务的临时文件夹(BDE提供的TempFS功能能够让计算节点利用存储节点的磁盘空间作为运行Job的临时文件夹。有关TempFS简介,请参加下一小节的介绍)。这种集群无法充分支持Hadoop的数据本地化特性,适用于简单的概念验证(PoC)。

下面列举了这种集群部署的示例定义文件,使用它,您可以创建四个数据存储节点和八个计算节点,instanceNum配置节点数目。默认情况下,BDE使用RoundRobin算法将各个节点排布在物理主机上。

{

"nodeGroups":[

{

"name": "master",

"roles": [

"hadoop_namenode",

"hadoop_jobtracker"

],

"instanceNum": 1,

"cpuNum": 2,

"memCapacityMB": 7500,

},

{

"name": "data",

"roles": [

"hadoop_datanode"

],

"instanceNum": 4,

"cpuNum": 1,

"memCapacityMB": 3748,

"storage": {

"type": "LOCAL",

"sizeGB": 50

}

},

{

"name": "compute",

"roles": [

"hadoop_tasktracker"

],

"instanceNum": 8,

"cpuNum": 2,

"memCapacityMB": 7500,

"storage": {

"type": "LOCAL",

"sizeGB": 20

}

},

{

"name": "client",

"roles": [

"hadoop_client",

"hive",

"pig"

],

"instanceNum": 1,

"cpuNum": 1,

"storage": {

"type": "LOCAL",

"sizeGB": 50

}

}

],

"configuration": {

}

}


包含节点网络拓扑和主机排布策略的存储/计算分离模型

看到这里您一定会发问,如果不将计算节点(TaskTracker)部署在存储节点(DataNode)所在的虚拟机上,那如何保证数据本地化的特性呢?BDE提供了优雅的分布策略可以既享有存储/计算分离的易扩展性,同时又保证数据本地化的要求。

如果您对数据本地化诉求很高,希望尽量减少网络通讯、以节约带宽并提升处理速度,BDE在部署存储/计算分离的Hadoop集群时,也可以同时考虑网络拓扑和主机排布策略。

下面列举了这种集群部署的示例定义文件,使用它可以创建四个数据存储节点(DataNode)和八个计算节点(TaskTracker),每个节点组(NodeGroup)中的placementPolicy字段定义了该组节点的排布策略。

其中存储节点(节点组data),instancePerHost=1表明一个物理主机上最多有且仅有一个数据节点,因此四个数据节点会被部署在四台物理主机上。groupRacks定义了存储节点的网络拓扑定义,4台要使用的物理主机会按照RoundRobin算法在Rack1Rack2Rack3这三个机架里面选择。

计算节点(节点组compute),instancePerHost=2表明一个物理主机上最多有且仅有两个节点。groupAssociations定义了节点组之间的依赖关系,reference=data表明计算节点的分布会依赖于存储节点的位置,依赖程度由“type=STRICT”定义,意即计算节点将被严格部署在存储节点所在的物理主机上,否则将会部署失败。从物理主机的视图,您会看到所用到的4台物理主机上,每个都将会部署一个存储节点和两个计算节点,这样在同一台物理主机上的存储虚拟机和计算虚拟机之间可以避免网络通信。

这样做在保持了存储/计算相分离的可扩展性优势的同时,如果在部署集群时,指定网络拓扑结构为HVE,就可以彻底保证数据本地化的要求。HVE功能会使得Hadoop自身对虚拟化架构感知,能够配合数据本地化的策略进行计算任务的调度。目前PivotalHD 1.2之后的版本都支持HVE功能。

HVE功能简介:


传统的Hadoop集群节点拓扑结构包括机架和主机层,但虚拟化在此基础上还需要知道hypervisor这一层。HVE功能使得Hadoop集群能够感知机架-物理主机-Hadoop节点三层架构,并且根据相应算法使运行于同一台物理主机上的存储节点和计算节点之间的通信方式满足数据本地化的要求。



另外,如果在集群定义文件中开启计算节点tempFS功能,那计算节点会利用存储节点的磁盘空间作为任务运行的临时文件夹,有效地使用磁盘空间。

TempFS功能简介:


当我们部署存储/计算分离的集群时,要为计算节点设置一个容量能满足业务需求的临时文件夹以保存任务运行期间的中间过程文件。另外如果整个集群的计算负载降低,计算节点被收缩减除(decommission,他所占用的磁盘空间无法被回收,也会造成存储空间的浪费。


所以这里我们引入了TempFS功能。这个功能使得计算节点可以使用部署在同一台物理主机上的存储节点的磁盘空间,这样既能够保证临时文件夹的空间充足,同时也能在计算节点被decommission后,也可以回收它的空间以供其他节点或应用使用。

另外BDE对于独立的计算节点,提供自动动态伸缩功能(Auto-Elasticity)。如果通过命令行cluster setParam --name cluster_name --elasticityMode auto --minComputeNodeNum minNum,可以根据当前vCenter的负载,避免资源的过量使用,适时地动态调整已经启动的计算节点的数目,并且保证开机运行的计算节点的数目不少于minNum这样就可以最大化地有效利用资源,又可以节能减排。

关于HVEtempFSAuto-Elasticity功能的详细介绍,请参见BDE的官方用户手册。

{

"nodeGroups":[

{

"name": "master",

"roles": [

"hadoop_namenode",

"hadoop_jobtracker"

],

"instanceNum": 1,

"cpuNum": 2,

"memCapacityMB": 7500,

},

{

"name": "data",

"roles": [

"hadoop_datanode"

],

"instanceNum": 4,

"cpuNum": 1,

"memCapacityMB": 3748,

"storage": {

"type": "LOCAL",

"sizeGB": 50

},

"placementPolicies": {

"instancePerHost": 1,

"groupRacks": {

"type": "ROUNDROBIN",

"racks": ["rack1", "rack2", "rack3"]

},

}

},

{

"name": "compute",

"roles": [

"hadoop_tasktracker"

],

"instanceNum": 8,

"cpuNum": 2,

"memCapacityMB": 7500,

"storage": {

"type": "LOCAL",

"sizeGB": 20

},

"placementPolicies": {

"instancePerHost": 2,

"groupAssociations": [

{

"reference": "data",

"type": "STRICT"

}

}

},

{

"name": "client",

"roles": [

"hadoop_client",

"hive",

"pig"

],

"instanceNum": 1,

"cpuNum": 1,

"storage": {

"type": "LOCAL",

"sizeGB": 50

}

}

]

}


如有任何问题,您可以发邮件至bigdata_apac@vmware.com


关于vSphere Big Data Extensions:

VMware vSphere Big Data Extensions(简称BDE)基于vSphere平台支持大数据和Apache Hadoop作业。BDE以开源Serengeti项目为基础,为企业级用户提供一系列整合的管理工具,通过在vSphere上虚拟化Apache Hadoop,帮助用户在基础设施上实现灵活、弹性、安全和快捷的大数据部署、运行和管理工作。了解更多关于VMware vSphere Big Data Extensions的信息,请参见http://www.vmware.com/hadoop。


作者介绍

094924956.jpg

张锦波

VMware大数据解决方案工程师

目前负责VMware大数据解决方案的架构和实现,是大数据方面的技术专家。曾担任vSphere Big Data Extensions(BDE)、Serengeti等大数据项目的产品经理,负责集群管理,高可靠性和弹性伸缩等重要功能的规划。在此之前就职于EMC,从事数据库管理等产品的研发工作。

相关文章:

  • 【转】jQuery选择器大全
  • centos的用户、组权限、添加删除用户等操作的详细操作命令
  • 按需加载的实现方法
  • OpenCV学习-——OpenCV永久配置(win7 64位+VS2012+OpenCV 2.4.6)
  • [World Wind学习]22.相机高度和瓦片等级计算
  • 修改apache+php上传文件大小限制
  • paip.mysql 性能测试 报告 home right
  • 我的2013校招总结
  • C语言函数可变长度参数剖析
  • 当本机通过代理服务器上网时,本机无法打开在本机上的虚拟机(oracle vm)linux系统上的网站,但是局域网里的其他机器却可以打开...
  • API编程基本控件使用
  • SCOM 常识概念—图标状态/维护模式
  • 学习电商路线
  • SDL2.0上手试用
  • static 与 extern 关键字描述说明
  • 【刷算法】求1+2+3+...+n
  • 5、React组件事件详解
  • FineReport中如何实现自动滚屏效果
  • iOS小技巧之UIImagePickerController实现头像选择
  • PHP面试之三:MySQL数据库
  • session共享问题解决方案
  • 解析 Webpack中import、require、按需加载的执行过程
  • 如何设计一个微型分布式架构?
  • 译自由幺半群
  • No resource identifier found for attribute,RxJava之zip操作符
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 如何用纯 CSS 创作一个货车 loader
  • ​【已解决】npm install​卡主不动的情况
  • ​比特币大跌的 2 个原因
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # 数论-逆元
  • ###C语言程序设计-----C语言学习(6)#
  • #14vue3生成表单并跳转到外部地址的方式
  • #include到底该写在哪
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (¥1011)-(一千零一拾一元整)输出
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (待修改)PyG安装步骤
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)Dubbo快速入门、介绍、使用
  • (转)Scala的“=”符号简介
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • ***监测系统的构建(chkrootkit )
  • .gitignore文件---让git自动忽略指定文件
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .net 获取url的方法
  • .NET基础篇——反射的奥妙