APP下载

【DBS客座文章】星展银行如何打造大数据平台

消息来源:baojiabao.com 作者: 发布时间:2024-11-30

报价宝综合消息【DBS客座文章】星展银行如何打造大数据平台

本文为【星展银行授权转载文章】

译注:文中所称之“我们”、“星展银行”或“星展”皆系指新加坡星展银行,所提及之金融服务亦为新加坡国内之服务
作者:Ashish Bhan,Data Engineering | Cloud Engineering | Enterprise Architecture| Container Ecosystems | Big Data, Analytics and AI/ML Infrastructure | Automation | SRE | DevOps / 翻译:李沛衡
原文出处:Architecting Big data at Scale

背景

大数据分析是在处理庞大且复杂的资料集时所使用的进阶分析技术,这些资料集包括结构化、半结构化及非结构化资料,其资料量大小从TB到PB不等。大数据的重要性不在于资料量,而是在于资料的使用方式。您可以透过分析从各管道取得的资料,找到潜在价值,并达成以下目的:

• 降低成本
• 节省时间
开发与优化产品
• 更明智的决策

为了深入理解非结构化资料,并使我们的技术与时俱进,我们从2016年开始使用Cloudera Hadoop来扩展现有资料仓储架构。四年多来,包括Apache Hadoop(CDH)平台在内的Cloudera Distribution已成为我们资料架构和策略不可或缺的一部分。我们用它支援大部分的业务作业,从消金、企金、投资银行到法令遵循,开发共超过40个应用程序。其中的精采案例,包括:

• 反洗钱和反诈骗
• 企金报告
• 风险监管平台
• 交易平台
• 金融平台
• 成本分配
• 客户科学
• 客户尽职调查即服务(Customer due diligrance as a service)

利用弹性架构迎向挑战并推进

随着相关应用与学术的发展,我们不得不在2019年重新设计整个企业之资料平台,以克服几个未来的挑战,例如:

A. 储存和计算需求间的落差导致资源浪费
B. 硬件采购与供应延迟导致更替时间缓慢
C. 数个硬件故障将影响服务之可用性
D. 使用单一丛集处理所有工作造成的资源抢夺风险
E. 处理多租户(multi tenancy)造成的“Noisy Neighbor”问题
F. 资源需求预测失准布署新的资源及允许进行实验

我们从GCP及AWS在大数据领域的发展汲取灵感,设计了这个可以更有效处理多租户(multitenancy)、降低资源抢夺风险及营运成本的平台,并确保我们的关键应用程序得以正常运行。成功建构及运行一个高可扩展性的资料平台,关键是通过落实以下几点,将计算与储存功能加以分离:

A. 资料储存平台-具有高弹性和高效能的核心资料储存平台。
B. 微服务-将独立服务容器化,来封装多种复杂的大数据工具配置和管理,让不同应用程序可以按照各自的需求来使用这些容器化的微服务。
C. 使用GPU农场共享GPU-利用整合持久丛集(persistent cluster)与临时丛集(transient cluster)上的GPU来加速运算。

资料储存平台

软件定义储存系统(Software Defined Storage)具有许多优势,因此我们在2019年利用vSAN重新设计我们的资料储存平台,这种创新的设计包括:

1. 整合丛集中每个ESXi主机储存个体
2. 利用快闪储存方式优化的解决方案
3. 基于VM的资料操作和政策驱动的管理原则
4. 基于分散式RAID架构的弹性设计

这种新架构减轻了我们过去在硬件上遇到的痛点,帮助我们取得了卓越的成效。

新设计现在能够做的

增强多租户(multitenancy)以提高性能:我们根据use case和对CDH的存取量对丛集进行分割。如此将允许丛集独立运行,尤其是在管理程式码和正式环境问题查询时提高我们IT团队的效率。

降低资源抢夺风险:同一丛集中执行过多的应用程序可能导致资源抢夺风险,进而导致效能问题和严重停机。我们透过丛集分割最大限度地降低相关风险并提高了校能。

即时同步:Active-Active的设计将确保正式环境和灾难复原环境之间的即时同步。随着我们资料量的提升,我们必须建立可以确保两个站点始终同步以满足目标复原时间的能力。

•为了确保这个active-active的服务器始终拥有数据块(Data Block)的副本,我们必须更改其放置策略并在HDFS建立客制化的规则。

下方程式码对BlockPlacementPolicyWithNodeGroup的源代码进行扩充,因为星展银行目前使用此类别来支援布署在VMware hypervisor的资料节点。此段程式码与现有的HDFS专案会存在于同一个套件中(org.apache.hadoop.hdfs.server.blockmanagement)。原先会如此定义是因为有一些受保护的类别无法从外部访问。

大多数功能都保持不变,除了以下BlockPlacementPolicyDefault类别中的函数原型被加以修改以处理数据块配置。

•此函数在延伸类别中被重新implement以改写在同一个rack中放置多个副本的预设数据块配置行为。

准确的容量调整:为了能更准确地预测专案的IT资源使用情况,我们设计了一个仪表板。透过准确的预测,我们确保配置足够的资源以准时完成专案,并减少延误和不必要的支出。

•计算和储存的分离:新平台能让运算单元和储存单元独立增长,因此我们得以只针对其中一个部分进行扩展。如此一来我们便能准确且有效地分配必要资源。

•支应未来的大数据模版:重新建构一个敏捷且可扩展的运算框架层,让我们能以最小的成本适应未来的大数据技术。

•建立强有力的治理模式以减低成本:随着平台重新设计,我们纳入了一个强大的治理框架,以减少投资成本并防止计算和内存资源的浪费。我们将此框架转移到Hadoop平台,优化了我们的计算和资料导入框架,避免因为糟糕的架构设计、批次处理作业和各类查询引起的系统意外。我们也进一步使用Cloudera API来监控和追踪需要调整或出现异常的作业。

•处理小型档案:应用程序倾向于撰写成小型档案,因此这需要平台不断增加NN内存。我们隔离了集群以降低由于高CPU处理而导致性能不佳的风险。此外,我们启用了回报机制以确保应用程序将分区中的档案合并,以满足128 MB的建议大小。

透过新设计,我们实现了以下目标:

a) 成本最佳化
透过整合计算和储存,我们可以避免因设计、批次处理作业和查询不佳而导致的技术债。2019年,我们透过最佳化计算框架减少了约20%的成本。我们还降低了约75%的布署成本。这些改良的效益在银行整体业务中已能具体感受到,其中对于产出风险报告和财务报告感受尤甚。新架构已帮助我们节省了数百万(新币)的授权成本。

b) 提高生产力和上线时间
随着布署的速度加快,我们的IT团队在布署相关的工作效率提高了约25%,将我们的布署时间从三个月减少到四小时。如今他们能更有效率地为各单位提供服务,以更快的速度提供所需要的环境。

特别是对于开发人员来说,新的设计架构给了他们莫大的助力。此架构为他们提供了基于诠释资料(metadata)的框架,使他们在开发新功能和处理新专案时所需的时间几乎减少了一半。IT团队从过去需要几个月的开发时间,到现在可在不到三周的时间内,将应用程序或服务上线以满足新的业务需求。迄今为止,星展银行已在此平台上启用了超过四十个应用程序。

c) 降低风险
自该架构推出以来,没有任何利用率损失(availability loss),这代表我们已经100%降低了资源抢夺风险,同一丛集内的元件不再抢夺计算资源。丛集根据使用模式和CDH元件使用情况进行分割。我们还将Impala和Spark各自的工作量分离开来,并切换改用SSD上的vSAN,从而全面改善I/O。

d) 愉快且顺畅的客户体验计划
我们将读取传输量提高了十倍,写入速度提高了两倍,批次回应时间加快了约72%。IT团队在处理新的应用布署方面更有信心。该专案还增强了我们的预测分析能力,借此改善我们组织内客户的用户体验。有了自动化系统的加入,客户满意度提高了约14%。

微服务

为了支援不断增长的技术需求,我们建构的资料微服务来加强Cloudera的随选资料服务。资讯安全框架与CDH紧密结合,使我们能够遵守银行业严格的法遵规定。

我们的核心平台在Cloudera上运行,并遵循共享数据体验(SDX)的原则,并将临时丛集作为微服务的消耗品。

微服务的构建响应我们的云端策略,其中一些常见的资料服务可以被虚拟化并以随选方式提供,并提高资源利用率。这么做能让混合云策略在不更改程式码的情况下更加顺畅。

A. 微服务的底层是VMware整合容器和软件层。

B. 服务框架包括:

a. 控制层 — 负责用户与微服务的互动,使他们能够自助操作。这个界面是一个自行开发的Angular前端,它与动态内容管理服务连接,让服务能够不用写程式就上线。

b. 后端自动化 — 负责执行资源的布署和管理。我们使用Ansible和基于Python的编排器,它与Bitbucket整合,并根据来自前端的选项为每个应用程序创建一个动态的docker compose。

c. API界面 — 负责以程式码存取和管理资源。这些API作为动态协和框架(Orchestration framework)的一部分,并允许用户以API而非UI的方式来执行操作及更改脚本。如此可以灵活地以批次方式启动和执行脚本。

这种配置大量的简化了IT工作,例如服务目录编纂、资安和管理。

在重新设计的架构中,我们在Hadoop丛集中的工作几乎100%都是自动化。这让IT团队腾出了大量的时间和精力,能将精神用在服务组织内外的客户,并帮助银行善用资料工程的准则,以应对快速的变化。

我们花了将近两年的时间将所有应用程序转移到新的云原生架构。随着科技发展,我们已准备好继续扩充及加快我们的计算框架,让应用程序和业务部门都能受益,并为企业创造价值。迁移到软件定义储存系统和使用固定计算单元(immutable compute)是建构大规模大数据平台的一个重要里程碑。

对于大数据而言,运算工作是一个不断成长的挑战,需要不断寻求创新技术新来减少运算足迹和加速批次处理。

GPU计算

大多数传统资料湖泊都是建构在传统的多核心CPU技术上。即使显著地加强了储存、内存和网络子系统,几乎每个企业用户和系统都被效能所限制,无法使用企业资料湖泊或资料仓储中的资料进行瞬间爆量的资料分析。

GPU技术是由Nvidia等公司多年的研发开创,过去十年在产业中快速成长。在GPU中所含的数千个核心让它本身就能够平行处理资料。

GPU通常被放入服务器中用以增强主要的CPU。它们还提供了更快的I/O,增加CPU和GPU之间往返传输的资料量。

GPU加速器能够在执行繁重运算任务时带来巨大的优势,但GPU的价格昂贵且要能为应用程序采用亦有一定的学习曲线。因此星展银行使用vSphere Bitfusion虚拟化硬件加速器(如GPU)来支援AI、ML的工作。vSphere Bitfusion将实体资源从服务器的特定环境中分离。

此平台可在虚拟化基础架构中共享GPU,作为网络可存取的资源池,而非让个别服务器中的资源独立。Bitfusion可跨AI框架、云端、网络以及在虚拟机、容器和Jupyter notebook等环境运行。随着新硬件加速器的导入,Bitfusion随时可以将其虚拟化。

星展银行选择vSphere Bitfusion的原因有:

a. 可任意动态配置GPU — Bitfusion可拆解GPU运算单元并可向连结远端储存单元一般动态地将GPU连接到资料中心的任何位置。

b. 提高部分GPU效率 — Bitfusion能利用任意部分的GPU。在测试及开发阶段支援更多用户。

c. 标准化加速器存取 — 在基础架构中充分利用GPU,并随着标准的制定,整合不断发展的技术。

d. 应用程序执行时间虚拟化 — Bitfusion在程式执行时根据CUDA调用GPU资源,最大限度地提高网络中任何GPU服务器的利用。

e. 与任何应用程序一起使用 — Bitfusion是一个通透层(transparent layer),它可与任何工作、框架、容器或Jupyter运作。

星展银行使用Apache Spark作为Cloudera框架的一部分,Cloudera框架是一个开源的通用丛集运算框架,为大规模资料处理提供整合分析引擎。

Spark利用pyspark函式库来加速Python程式码,快速运算Pytorch、Tensorflow等套件。但这也意味着批次程式必须将Scala改写成Python。

我们利用Apache 3.0并结合了基于CUDA-X AI的开源函式库RAPIDS。Apache Spark的RAPIDS Accelerator具备了RAPIDS cuDF函式库的强大功能和Spark分散式运算的优点。它使开发人员不需要修改Spark程式码,就可以在GPU上运行并加速。

RAPIDS cuDF函式库的启用可透过设定spark configuration classpath和以下设定来达成

spark.conf.set(‘spark.rapids.sql.enabled’,’true’)

在开源社群和云端供应商的大力推动之下,资料架构和大数据领域不断快速发展。星展银行致力于在科技与现代化资料架构下取得平衡,并确保我们的应用程序皆能具有良好的成本效益。

 

免责声明和重要通知

本文章(英文)系由DBS LTD提供并经星展银行(台湾)(下称“本行”)翻译为中文,仅供参考,本行及DBS LTD不对使用本文章所引起之任何损失或损害负任何责任。如您有任何疑问或欲参考本文章而为行事之依据,本行建议您咨询您的专业顾问之意见,以保障您的权益。非经本行之事前书面同意,任何人不得对本文章为复制、转载、引用、抄袭、修改、散布或为任何其他方式之使用

 

2021-09-02 15:45:00

相关文章