加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

部署大数据处理服务:详解OpenStack Sahara架构

发布时间:2021-01-17 13:13:30 所属栏目:大数据 来源:网络整理
导读:本文经过九州云授权,转载自九州云订阅号 “九州云99Cloud” Sahara是为了帮助用户在OpenStack云计算平台上,方便简单的部署大数据处理的服务。在OpenStack平台上安装Sahara服务后,通过支持可插拔的、模块化插件的方式支持不同的大数据处理架构,目前支持的

本文经过九州云授权,转载自九州云订阅号“九州云99Cloud”


Sahara是为了帮助用户在OpenStack云计算平台上,方便简单的部署大数据处理的服务。在OpenStack平台上安装Sahara服务后,通过支持可插拔的、模块化插件的方式支持不同的大数据处理架构,目前支持的数据处理架构有多个供应商的Hadoop发行版,Apache的Spark和Storm,还有与特定供应商集成的管理工具,如Apache的Ambari和Cloudera的管理控制系统集成。


作为一个OpenStack云计算平台上提供大数据处理服务的组件,Sahara主要解决以下三个问题:
(1)??? 在OpenStack平台上快速部署可以开发和进行测试的数据处理集群
(2)??? 在通用的OpenStack平台上提供未使用的计算资源和能力
(3)?????“分析即服务”,提供临时或者突发的分析工作,类似于Amazon Elastic MapReduce(EMR)
?

部署大数据处理服务:详解OpenStack Sahara架构

架构
Sahara的架构变化很快,从最开始的一个服务进程,到将服务分为sahara-api、sahara-engin、task execute framework、conductor等服务,每个服务各司其职,完成大数据处理架构的部署和任务的分配与管理工作,其架构图如图1所示。


部署大数据处理服务:详解OpenStack Sahara架构

图1 Sahara架构图

选中模板后,按del键,或者拖动到编辑区域右边松开,就会快速删除
各模块的功能如下:
l?? Keystone:提供统一的认证和服务列表服务。
l?? EDP(Elastic data processing):Sahara最重要的功能之一,可在集群中调度和管理大数据处理架构的任务。
l?? Vendor Plugin:以插件形式支持各种大数据处理架构。
l?? Cluster Configuration Manager:实现对集群配置的管理,可以配置节点、节点组、节点组模板、集群、集群模板。
l?? Data Access Layer是数据库的持久模型,类似如Nova中的conductor服务。
l?? Resource Orchestration Manager表示资源编排管理,通过调用Nova、Cinder、Glance等服务API或者使用Heat来实现大数据处理架构的自动部署。
从图1 上可以看出,Python Sahara Client处理从Horizon和命令发送行过来的请求,并调用Sahara-api服务,Sahara-api服务将请求路由到不同的模块处理。

部署大数据处理服务:详解OpenStack Sahara架构

功能概述
经过多个版本的迭代,现在Sahara支持多个重要功能,如提供数据永久性的块存储,为大数据计算任务提供数据存储的对象存储支持,集群的扩展等等功能,Sahara现在支持的功能有:

? 预防节点雷同?

在OpenStack平台上进行数据处理的时候,不能控制节点在哪些物理机上创建。不可能一直保证两个虚拟机创建在不同的物理机上。

如果在一台物理机上的话,无法保证集群中的复本是可靠的,因为所有的复本可能保存在同一台物理机上。为了解决这一问题,Sahara提供了一个anti-affinity的特性去保证虚拟机不会创建在同一台物理机上。?

从Juno版本开始,Sahara就有这个特性了。Sahara为每个集群创建服务组,把所有的虚拟机分配到受影响的服务组中。

支持块存储

OpenStack的块存储Cinder可以用作虚拟机上作为可供选择的临时的驱动。使用块存储会提高数据的准确定,这对HDFS服务很重要。?

用户可以挂载很多的容量不同的卷到虚拟机上。在集群创建和扩大的操作中被挂载。

? 集群扩展

集群扩展功能可以让用户改变集群中虚拟机的数量,这个操作是不需要重新创建集群的。在已经存在的集群上,用户可以增加或减少节点组,如果集群扩展失败,所有的修改会被回滚。
??? 数据局部性

为了最高的性能,最好是让数据处理应用工作在数据所在的机架上,如OpenStack计算节点或者虚拟机上。


Hadoop支持数据局部性的特性,并且把任务调度到输入流在本地的task tracker节点上。在这种方式下,task tracker节点可以直接和本地的数据进行传输。


虚拟机存储卷的本地化
如果虚拟机和卷在相同的物理机上,这将会是一件非常美好的事情,因为IOS操作非常快了。在Sahara配置文件中可以启动该功能。

分布式模式

Sahara的服务sahara-api和shahara-engin进程不光可以在一台机器上运行,而且还可以分开运行。


在分布式模式下,可以把sahara-api和sahara-engin部署到不同的机器上,这样sahara-api节点只处理请求,而sahara-engin则处理部署工作。


HDFS的HA
HDFS的高可用框架确保活跃的namenode死掉后继续工作,Hadoop是通过使用2个namenode来确保可靠性的,这两个节点一个处于active,另一个处理passive。HDFS的HA是通过使用节点日志实现的。Zookkeeper服务,和Zookeeper故障转移控制来实现的。
网络支持
Sahara支持nova-network和neutron两种网络实现方式。如果nova-network可以使用的话,Sahara优先使用nova-network。

对象存储支持
Sahara使用swift存储任务的二进制文件和数据资源

共享文件系统
Sahara可以通过OpenStack的文件共享服务Malina使用NFS文件共享系统任务的二进制文件和数据资源。更详细的内容可查看EDP。

安全组管理
可以在节点组和节点组模板中配置大数据处理架构集群的安全组,该选项默认值是一个空列表。Sahara还可以自动的创建一个安全组,为实例和Sahara引擎创建所需的端口,但是在生产环境里不建议这么做。

?共享和私有资源支持

Sahara允许在同一租户下创建共享的或者受保护的资源。实现方式是设置所有可以通过REST API访问的对象中的两个属性is_public和is_protected,True表示受保护的,是公开的;False表示是不受保护的,私有的。

部署大数据处理服务:详解OpenStack Sahara架构

集群创建
通过Sahara创建一个集群的过程是很简单的,只需按照图2 Hadoop的创建过程即可快速的创建一个Hadoop集群,而Storm和Spark的创建流程也是类似的。

部署大数据处理服务:详解OpenStack Sahara架构

图2 Hadoop集群创建流程
在创建集群的时候,首先要创建节点组模板,然后选择节点组模板创建集群模板,最后选择集群模型创建一个集群。

比如创建如图4模式的Hadoop集群时,先创建三个集群模板,然后在创建集群时再设置各个模板的节点个数,最后启动集群。

部署大数据处理服务:详解OpenStack Sahara架构

图4 三节点组的Hadoop集群
在Sahara提供集群服务之前,首先要提供详细的Hadoop集群配置,配置完成启动集群之后,可添加或删除节点,数据处理完成之后,可以选择删除集群。

而Sahara的“分析及服务”EDP的创建流程则更简单,只需进行如图3的流程创建任务之后,即可在集群中完成该任务。

部署大数据处理服务:详解OpenStack Sahara架构

图5 Hadoop任务执行流程


配置集群的过程中有几个重要的概念需要理清楚,下面以Hadoop为例:




? ?? 节点:部署Hadoop的一台虚拟机,与Hadoop的节点对应
  • 节点组:flavor相同、Hadoop服务相同的一组节点

l?? 节点组模板:用于创建一个节点组的模板,在该模板中定义了相同的flavor、Hadoop版本和服务,通过该模板可以创建一组相同的节点。
{?
????????????????”name”: “test-master-tmpl”,?
????????????????”flavor_id”: “2″,136); box-sizing: border-box !important; word-wrap: break-word !important;">????????????????”plugin_name”: “vanilla”,136); box-sizing: border-box !important; word-wrap: break-word !important;">????????????????”hadoop_version”: “2.4.1″,136); box-sizing: border-box !important; word-wrap: break-word !important;">????????????????”node_processes”: ["jobtracker","namenode"]?
????? }
l?? 集群:由多个节点组成的集群,而这些节点属于不同的节点组,。。。。
l?? 集群模板:用于创建集群的模板,通过该模板可以创建多个同样配置的集群。在集群模板中定义集群模板由哪几组节点组,以及每个节点组中的个数。以下是集群模板数据类型
??? ?{?
????????????”name”: “hadoop-cluster-template”,136); box-sizing: border-box !important; word-wrap: break-word !important;">????????????”plugin_name”: “vanilla”,136); box-sizing: border-box !important; word-wrap: break-word !important;">????????????”hadoop_version”: “2.4.1″,136); box-sizing: border-box !important; word-wrap: break-word !important;">????????????”node_groups”: [??
????????????????{?
????????????????????"name": "master",136); box-sizing: border-box !important; word-wrap: break-word !important;">????????????????????"node_group_template_id":"",136); box-sizing: border-box !important; word-wrap: break-word !important;">????????????????????"count": 1?
????????????????},136); box-sizing: border-box !important; word-wrap: break-word !important;">"name": "workers",
"node_group_template_id":"",136); box-sizing: border-box !important; word-wrap: break-word !important;">????????????????????"count": 2?
?????????????????}]?
?????? ???}

部署大数据处理服务:详解OpenStack Sahara架构

总结
从Sahara的spec可以看出,经过多个版本的迭代,Sahara支持的功能越来越完善了。虽然还存在许多的不足之处,但是在随着OpenStack版本的迭代,相信社区的贡献者会逐渐的完善各种功能。

原创文章,转载请务必在文首注明转自“九州云99Cloud”及原作者,谢谢配合~

KVM云技术社区微信群加入,联系北极熊:


KVM云技术社区QQ群,99.99%纯技术交流气氛

QQ 1群:434720759(已满)

QQ 2群:131961942,加入密码大写KVM

1000人VMWare技术交流群:494084329,加入密码小写vm

OpenNebula QQ群:495571573 加入密码Nebula

2000人OpenStack开发纯技术群: 334605713 加入密码nova

Cloudstack纯技术交流群:515249455密码cs

2000人桌面云行业讨论: 484979056 加入密码VDI

2000人超融合行业讨论群:65779632 加入密码大写HC

2000人云技术招聘求职群: 279875515 加入密码hr


(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读