查看原文
其他

实战 | 多集群场景下数据访问控制和路由机制的探索与实践

金融电子化 金融电子化 2022-09-24

欢迎金融科技工作者积极投稿!

投稿邮箱:newmedia@fcmag.com.cn

                                           ——金融电子化

文 / 中国农业银行研发中心    孟洋 信聪

在大数据飞速发展的时代,随着银行业务的不断扩展,各条线业务产生的数据也在飞速增长,某银行大数据平台体系下对应的各类Hadoop集群也在不断增加。这些集群因历史建设原因,软硬件版本和型号都千差万别,容量大小也各有不同,各集群上面存储了大量在线数据和历史数据,对于银行业务开展具有举足轻重的作用。但是,下游系统在使用这些数据进行数据分析与挖掘的时候,需要访问多个集群,且需要知道具体数据对应的集群,使用起来十分不方便。下游系统必须熟知大数据平台体系底层细节才能有效使用数据。另外,大数据平台体系下面Hadoop集群以及集群上面的数据一旦发生变动,例如集群下线、数据迁移到其他集群上存储等情况,下游系统就要改变访问策略,这种传统架构将导致下游系统和大数据平台耦合性较高,不利于各系统稳定运行和日常运维。


为了解决上述问题,农行大数据团队进行了大量的探索和实践,基于Nginx、Flume、Kafka、Flink等工具和技术设计并实现了一种数据访问控制和路由机制,取得了较好的实践效果。本文将重点介绍该机制的实现方式。


多集群场景下的数据访问控制和

数据路由面临的困境

当前,传统的大数据平台往往会根据应用和数据的使用场景和使用热度,将数据存放在不同的Hadoop集群上,另外因系统历史建设等原因,大数据平台下也会衍生出多套Hadoop集群。这种独立的、彼此物理隔离的集群架构设计虽然在提升应用运行效率和数据安全性上有些优势,但也带来的一系列问题,主要如下。


1.数据访问管理难度较大

因各集群有自己的用户体系,大数据平台需要针对每个集群维护一套下游系统的访问控制策略,管理工作内容重复、工作量大。


2.数据获取难度较大

因数据分散在不同的独立Hadoop集群上,下游系统必须遍历访问几乎所有集群才能获取到所需数据,因此下游系统必须知晓所有集群的访问地址和访问细节信息,导致下游系统和大数据平台的耦合度过高。


农行大数据团队探索使用过多种方法来解决上述问题。


首先,考虑建立一个Hadoop集群来替代多个Hadoop集群的方式。但是单组Namenode在大规模集群中存在较大的局限性。在单个Hadoop集群中,集群所能处理的文件和目录是与集群Namenode的内存大小存在正相关性的,随着集群中文件和目录的个数不断膨胀,必将达到Namenode内存可处理的上限,而要对Namenode进行升级扩容,必须要对整个Hadoop停机处理,这样势必影响高时效作业的正常运行。


其次,考虑采用Hadoop联邦架构集合多个Hadoop集群构建统一的Hadoop联邦集群的方式。但在不断深入研究后,发现该方式存在以下缺陷:联邦架构并没有对外提供统一的命名空间,各NameNode相互独立,相对应的命名空间也是相互独立的,也就是下游要用数据仍需事先知道数据所在的命名空间等底层细节,否则将无法访问到所需数据。


多集群场景下的数据访问控制和

数据路由解决方案

针对上述提到的多集群场景下的数据访问控制和数据路由困境,农行大数据团队通过深入调研,设计了一种基于Nginx、Flume、Kafka、Flink等工具和技术数据访问控制和数据路由机制,较好解决了多集群场景下的数据访问控制和数据路由难题。


1.数据访问控制和数据路由机制实现方式

大数据平台数据路由和访问控制主要是基于Nginx等工具技术实现多集群间的数据路由和访问控制。主要思路是在多集群的外围建立数据访问层,对下游系统的访问进行控制,同时屏蔽大数据平台多集群的底层细节,对外提供统一的数据访问接口。该方法采用无侵入式设计思想,可适配兼容多种类型的Hadoop集群,极大提升了下游系统使用大数据平台数据的方便程度。下面重点介绍一下该方法的具体实现流程。


(1)该技术使用Nginx集群作为访问接口层,数据消费应用将消费请求发送到Nginx集群;


(2)Nginx集群将相关请求发送到访问控制与数据路由服务集群(Web服务集群);


(3)访问控制与数据路由服务集群会根据请求URL中的用户、密码以及文件路径信息到OLTP数据库中查找对应记录以确认该用户是否有权限访问所请求的文件(相关用户权限信息可在前台维护),如果有权限则进行后续操作,如果没有权限则返回验证失败的信息给Nginx集群,Nginx集群转发失败信息给数据消费应用,从而实现访问控制;


(4)如果访问访问验证通过,访问控制与数据路由服务集群会继续到OLTP数据库中查找所请求文件具体对应的Hadoop集群IP地址,并将Hadoop集群IP地址返回给Nginx集群;


(5)Nginx集群收到Hadoop集群IP地址后将用户请求URL中的IP地址替换为Hadoop集群IP地址,并将数据访问请求发往对应Hadoop集群,从而实现数据路由;


(6)Hadoop集群接收到访问请求并处理后,将相关返回数据发给Nginx集群;


(7)Nginx集群转发返回数据给数据消费应用,完成整个访问控制和数据路由流程。


具体技术实现如图1所示。

图1    数据访问控制和数据路由机制示意图

 

2.数据访问控制和数据路由机制持续优化

因数据路由功能需要定期更新数据库中的Hadoop集群路径清单,以满足针对访问者请求查询对应集群的需求,而更新Hadoop集群路径清单的时间因集群数据量大小各有不同,现在较大的Hadoop集群更新一次需要数个小时,较小的Hadoop集群更新一次需要将近半个小时左右,在更新完成前,Hadoop集群路径清单将维持较旧版本的内容。为了进一步优化该问题,农行大数据团队将优化清单更新功能,具体如下。


首先,农行大数据团队不断优化更新程序的策略,例如改之前全量更新为增量更新(每次更新周期内只更新近7天经常会变动的数据路径,只在每日凌晨零点访问请求较少的时段全量更新一次),以期提升更新效率,减少清单更新时间,使得访问者能更及时的获取到最新的Hadoop数据。该方式虽然较大程度上提升的Hadoop集群路径清单的更新速度,但仍不是实时更新,只能满足数据探查、数据分析类等较低时效的下游应用,对于高时效加工批量仍差强人意。


其次,农行大数据团队探索实时更新Hadoop集群路径清单方法的可行性,该方法具体思路是实时采集Hadoop集群NameNode日志,并通过Kafka传递给Flink进行实时加工,并将加工后的清单结果存储到数据库,或者存储到Redis缓存。该方法将极大提高路径清单更新的时效性,可以更好地提升访问多Hadoop集群的体验。农行大数据团队针对该思路研发了功能原型,证明了该思路的可行性,后续将进一步在原型基础上进行优化提升。


数据访问控制和

数据路由机制技术优势

该机制采用无侵入式设计思想,可适配兼容多种类型的Hadoop集群,极大提升了下游系统消费大数据平台数据的便利性,主要优势如下。


➤ 相对于Ranger只能实现单一集群内的数据访问控制,该技术实现了多集群间的访问控制,满足大数据平台多Hadoop集群的场景。


➤ 该技术在实现访问记录的同时,可以提供路由控制,满足多集群场景的读取数据请求分发需求,实现屏蔽多集群访问细节,简化访问方式。


➤ 该技术可以有效管理外界对Hadoop集群数据的访问,记录数据访问信息,已被后续查验和分析。


➤ 该技术在已有Hadoop集群基础上采用无侵入、松耦合的架构设计,可支持底层异构集群的访问控制和数据路由。


总结与展望

针对多集群场景下的数据访问控制和数据路由的问题,农行大数据团队进行了有价值的探索和实践,验证了基于Nginx等工具技术实现多集群间的数据路由和访问控制的方法的可行性,并基于该思路完成了功能研发和测试。后续农行大数据团队将根据实际使用情况继续对该功能进行优化提升,并不断扩展该功能的适用范围,比如增加对对象存储的访问控制和数据路由,从整体上进一步提升大数据平台的服务能力。






往期精选:

(点击查看精彩内容)


● 实战 | 全光网络在金融行业的建设与应用

● 实战 | 轮胎受损检测识别技术在保险业中的应用实践

● 实战 | 统一管控欺诈风险,同盾推出银行反欺诈门户中心解决方案

● 实战 | 探索网络虚拟世界的“藏宝图”——网络空间地图技术与市场分析

● 实战 | 量子通信构建银行安全通信新格局









《金融电子化》新媒体部:主任 / 邝源  编辑 / 傅甜甜 潘婧

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存