如何管理海量数据,是很多企业都需要解决的问题。要高效管理数据并充分发挥数据信息应有的价值,前提是要对大数据进行有效存储。
下图是京东数据平台架构图。
京东数据平台的整体架构主要由六部分组成,其中数据存储作为计算存储层的底层组件支撑着上游的计算引擎调度,以及更高层的工具层、服务层和应用层。在整个数据平台架构中,底层数据存储起到了基建的作用,是整个大数据平台的基础。
在跨域存储架构应用之前,跨机房数据的同步主要通过业务方在不同机房之间进行Distcp实现,这种方式便会存在一些隐患问题:
第一个问题:元数据一致性由业务方保证,数据迁移需要业务介入,成本高时间长。
第二个问题:跨机房的流量不受控,影响同步任务,需要借助外部调度系统和存储。
第三个问题:产生多份冗余数据,数据共享和同步成本高,比如在不同机房不同数据节点间载入了多份相同数据,导致冗余。
第四个问题:不具备多机房集群的容灾系统,未充分利用多机房优势。
(1)跨越存储的架构
基于以上,京东大数据平台在底层存储模块设计了一个跨域数据同步功能来解决历史数据存储同步带来的问题。选择在底层解决该问题不仅可以把控跨域数据的一致性,还提供了业务无感知的跨域数据同步与分享功能,以减少业务方重复工作,使存储系统具备跨域迁移和跨域容灾的能力。
京东该跨域存储架构的主要思路是通过“全量存储+全网拓扑”,实现跨机房故障域,最终实现大数据关键数据异地容灾及跨机房存储能力。
(2)跨域存储——跨域数据流
在实现跨域存储过程中,采用了两种数据流方式:
将数据先写到本地机房,再通过namenode(NN)自动进行跨域同步。该数据传输方式写入性能与现有未跨域场景一致,同步时延优于 distcp 方案。
建立pipeline数据管道,串联机房全部datanode(DN),一次将数据同步。该种传输方式针对数据一致性和可靠性要求高的业务。
(3)跨域存储——拓扑与机房感知
拓扑与机房感知是解决“节点定位”这一跨域存储核心问题的关键模块。基于该模块可控制数据块分布和控制客户端流量。该模块主要从两个方面解决问题:
通过改造节点的拓扑方式,在拓扑管理中增加一个机房维度,同时选块逻辑要基于全网拓扑模块进行适配,以兼容多机房。
针对跨域版本的客户端,可通过在RPC头部携带机房信息,以便识别和检索;针对不支持跨域版本的客户端,可通过京东网络服务团队提供的ip映射到机房的服务, 实现客户端对应机房的检索和查询。
(4)跨域存储——跨域标识
跨域标识模块是解决“数据跨机房存放”问题的关键设计,我们采用一个支持副本和EC的属性标签来描述数据的跨域属性。EC包含数据块和校验块两种类型,相对于副本模式其跨域同步的支持更加复杂,需要支持在同机房内的数据重构和重构条件不具备时的跨域数据拷贝,以减少 EC 数据在跨域场景下的跨域同步流量。
加快整体跨域数据处理的速度,采用了三种方法:
(5)跨域存储——跨域补块及流控
针对跨域补块和流控,采用了三种方法保证了性能:
京东的数据分层存储是为了解决原有框架所存在的问题,主要是:冷热数据未区分对待的问题、不同硬件类型未区分对待的问题,以及数据治理工作推进困难的问题。
(1)分层存储的架构
京东分层存储的架构,整个框架主要是在NN内部实现的:
(2)分层存储——核心设计
分层存储的核心设计,可以分为两个模块,一个是元数据上根据目录树进行标签管理,对数据进行冷热数据分配;另一块是节点拓扑树,采用虚拟多拓扑树在逻辑上将不同标签的节点进行区分,不同标签类型会有自己独立的拓扑树,实现更高效的选节点性能。虚拟拓扑树有两种更新方式,分别为根据节点权重进行异步更新和上下线数据进行同步更新。
增量数据和存量数据在处理流程上有以下差异:
以上内容节选自吴维伟老师的《京东大数据存储跨域及分层实践》。
当前题目:如何对大数据进行高效存储、管理与应用?
文章地址:http://www.mswzjz.cn/qtweb/news25/312675.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能