大数据集群部署与管理 -尊龙凯时app

发表时间:2017-10-20 17:28

一、大数据集群技术的概述

让我们从有趣的 "啤酒与尿布" 故事说起,在美国沃尔玛连锁超市,人们发现了一个特别有趣的现象:尿布与啤酒这两种风马牛不相及的商品居然摆在一起,但这一奇怪的举措居然使尿布和啤酒的销量大幅增加了。这并非一个笑话,而是一个真实案例。原来,美国的妇女通常在家照顾孩子,所以她们经常会嘱咐丈夫在下班回家的路上为孩子买尿布,而丈夫在买尿布的同时又会顺手购买自己爱喝的啤酒。这个发现为商家带来了大量的利润,但是如何从浩如烟海却又杂乱无章的数据中,发现啤酒和尿布这个看似不相干的物品销售之间的联系呢?这就是大数据的威力。大数据在我们的生活中,发挥着越来越明显的作用。比如,大数据辅助购物平台推荐适合客户的产品,大数据辅助避免堵车,大数据辅助做健康检查,大数据娱乐等。

对于很多公司来说,数据是有的,但是是""数据,并不能发挥作用,或者产生的价值不到实际价值的冰山一角。如果想从大数据中获利,数据的采集、挖掘和分析等环节缺一不可,其中,大数据分析技术是重中之重,目前的大数据分析技术有 hadoopsparkstrom 中。要想从一大堆看似杂乱无章的数据中总结出规律,需要对这些数据进行一番非常复杂的计算分析。由于数据量之大,对计算的速度和精度要求都比较高,单纯的通过不断增加处理器的数量来增强单个计算机的计算能力已经达不到预想的效果,那么,大数据处理的方向逐渐的朝着分布式的计算集群来发展,将分布在不同空间的计算机通过网络相互连接组成一个有机的集群,然后将需要处理的大量数据分散到这个集群中,交由分散系统内的计算机组,同时计算,最后将这些计算结果合并得到最终的结果。尽管分散系统内的单个计算机的计算能力不强,但是由于每个计算机只计算一部分数据,而且是多台计算机同时计算,所以就分散系统而言,处理数据的速度会远高于单个计算机。

那么如何部署和管理大数据集群,则是业界持续讨论的话题,本文以 ibm platform converge 为例,来阐述大数据集群部署、架构以及管理。ibm platform converge 是一种复杂的大数据处理平台(方案),此方案可以从若干个物理机/虚拟机(可能在云端)开始,可以比较方便的部署一个大数据集群,并且管理和监控此集群。此平台包括了若干个大数据技术和集群技术,比如 xcatsparkelkgpfs 等。此集群的优点是节点的数量和存储的空间都具有弹性,也就是说,可以随时根据业务和应用的需求,来增加或者删除集群中的节点和存储空间,依次来节省成本。

二、大数据集群技术的架构与分析

一般来说,大数据集群的构架,主要分为几层:硬件层、os 层、基础设施管理层、文件系统层、大数据集群技术层以及上层应用,如下图 1 所示。


1 大数据集群的架构
2 spark on ego 构架图

egoschedulerbackend 根据 taskscheduler 提供的 task task stage 等信息,负责从目前的 ego 框架中获得资源。用户可以自定义资源分配方案,通过 consumer 来分配资源。egoschedulerbackend 一旦获得资源,就可以通过 ego container 接口开始运行 spark executoregoschedulerbackend 监控 spark executor 运行的生命周期,以及资源使用情况和 task 状态等,比如当 task 完成时,egoschedulerbackend 触发调度逻辑来满足更多资源的获取或者资源的释放。

最上层为应用和业务,客户只需要提交 spark application 即可,集群负责统一的管理和调度,并返回执行结果。

三、大数据集群的部署

3.1 硬件的部署

在此集群部署中,借助了比较成熟的硬件部署工具 extreme cloud administration toolkit (xcat), xcat 是一个开源的集群管理工具,能用于裸机部署,其架构如图 3 所示。xcat 可以自动发现硬件,开机之后,可以由 xcat 从裸机自动引导安装,当然,也可以提前导入 client node 信息,xcat 可以基于 ipmi 进行远程硬件控制,如开关机,如收集 cpu 的温度等状态信息,支持 x86_64powersystem z 等硬件类型。支持的目前所有主流的操作系统,如 rhel,centos, fedora, ubuntu, aix, windows, sles, debian 等。xcat 各个组件的结构和流程如下图所示。在 xcat 部署的集群中,主要有三种 node: 管理节点(management node)、服务节点(service node)、计算节点(compute node),如果并非特别大的集群,一般情况下,服务会被省略掉,只有管理节点和计算节点。管理节点上启动 dhcpdtftpdhttpddnsntpdsyslogddb 等服务。

3 xcat 构架图

3.2 软件的部署

软件部署主要在集群已经建立完成的基础上,并行在各个节点上安装大数据分析处理系统,在"资源管理和大数据集群"层,部署 spark cluster,并和 platform ego 深度集成,一些管理和监控等方面的程序也相继安装。还有,在提交应用之前,需要先创建 sigspark instance group),并启动 sig,在创建 sig 之后,也为 platform ego 来管理和控制其相关的服务。

3.3 高可用性(ha)部署

ibm platform converge 中,高性能部署的构架如下图所示。通常有三个节点构成,分别为主管理节点 management node 1(mn1)、次管理节点 management node 2mn2)和第三管理节点 management node 3mn3)。但是需要说明的是,在 failover 切换的过程中,必须保证 mn1 mn2 其中一个健在,因为 mn3 只是负责 ibm spectrum scale ha 过程,主要的服务和进程只运行在 mn1 mn2 上,在这二者之间进行切换。高可用性的部署如图 4 所示。

4 高可用性部署图

四、大数据集群的管理与监控

在大数据集群中,管理和维护是一件非常麻烦的事情,有可能会出现各种各样的问题,如果出现了,最好的办法是分析 log 和监控,在运维过程中,管理员需要不时的查看监控,并善于从监控中找到问题,及时的分析和解决 cluster 中的报警(alert)。以下展示了基本的 cluster 的监控指标,比如 cpu、内存、存储资源、网络等。在此集群中,监控主要采用的是 elk 的日志监控分析系统,大致流程为,有 beats 来收集日志和数据,然后发给 logstash 来分析和处理日志再由 elasticsearch 存储和检索,最后由 kibana 来在 web gui 页面上展示出来。接下来,我们展示出几个方面的集群的监控。

4.1 cpu 的监控

5 展示了 spark 集群中的 cpu 利用率的监控。如果 spark 集群中的节点可能较多,可以使用 kibana 的功能,来展示出 cpu 利用率最高的几个节点(图中展示的是 5 个节点的情况),以便了解哪些节点的负载较重,当然也可以展示出整个系统平均的负载情况。

5 cpu 监控

4.2 内存的监控

众所周知,spark 是一种内存利用率非常高的技术,换句话说,spark 集群对内存的要求较高。spark 集群的管理者需要实时的掌握内存的使用情况。如图 6 所示,展示出了集群中内存占用率比较高的节点的情况。

6 内存监控

4.3 磁盘和文件系统的监控

7 展示了总体磁盘的个数,有问题磁盘的个数,和总体磁盘的使用率,对磁盘利用率的监控可以有效的防止因存储空间不够而影响应用的运行。

7 磁盘监控

五、结束语

近几年来,数据的价值正得到越来越多的人的重视,如何让数据"活起来",一直是 it 界持续讨论的话题,在这种利益的驱动下,大数据的分析技术可谓是"遍地开花",大数据集群的部署方案也层出不穷,针对不同的场景和不同的需求,各大 it 公司都在争先恐后的提出各种各样的方案和技术。如何选择合适的方案,主要可以从技术选题、稳定问题、高可用性、可扩展性、监控等方面入手。


网站地图