XSKY星辰天合
作者XSKY星辰天合2022-02-24 18:02
技术支持, XSKY星辰天合

大数据存算分离方案上篇:基于分布式文件的数据就地分析

字数 6225阅读 1111评论 0赞 0

前言

目前,先进组织都已经建立或者正在规划建设自己的数据湖,用来支撑大数据分析业务。存储作为数据湖的底座,业界有两个技术流派:一是基于分布式文件,二是基于对象存储。

为满足大数据不同场景需求, XSKY 星辰天合基于对象存储、文件存储不同存储类型,提供不同大数据存算分离方案:

A.基于分布式文件存储的大数据方案

原生 HDFS 大数据方案: 主要适用于业务适合文件存储,对 Hadoop 组件兼容要求高,和大数据计算层无缝对接,计算层程序零改造的大数据场景。

B.基于对象存储的大数据方案

对象 XHFS 客户端大数据方案: 适用于业务适合对象存储,需要在对象存储上提供大数据分析能力,且可以无缝上下云,做云端分析或云端数据重建。

本文是 XSKY 星辰天合大数据存算分离解决方案的上篇,详细介绍基于分布式文件存储的大数据方案。基于对象存储的大数据方案在下篇章详细介绍,敬请期待!

一、 Hadoop 发展现状

市场现状
IDC 于 2021 年 6 月发布了《中国大数据平台市场研究报告 -2020 》,报告显示: 2020 年全球大数据软件市场规模达 4,813.6 亿元人民币,微软、 Oracle 、 SAP 作为 Top3 的厂商贡献了 30% 以上的市场份额;中国市场,包括硬软服在内的中国大数据市场规模达 677.3 亿元人民币。 **

Hadoop免费午餐结束,用户如何选择?

2018 年, Cloudera 和 Hortonworks 合并,紧接着 HPE (慧与)宣布收购 MapR ,这些迹象在说明,在 Hadoop 风光的表象之下,是企业经营困难。

2020 年底 Cloudera 宣布,从 2021 年 1 月 31 日开始所有产品线全面收费,包括历史的开源版本也要付费后才能获取,开源的产品不再面向全部用户,而是仅仅针对付费用户。过去一直被大家免费使用的 HDP 发行版,也不再维护和提供下载了,未来都合并到统一的 CDP 平台。

Apache Hadoop 可以免费使用,但是开源软件没有服务,也没有 SLA 保证,出了问题只能自己去研究和解决,有问题发到社区,然后慢慢等结果,同时市场上的 Hadoop 开发或运维工程师价格也是不菲的;

计算上面的替代品比较多,但是存储没有(计算可以自己做,但存储很难自己做)

二、引入商业存储,存算分离是必然趋势

存算分离优势

  1. 逻辑单元分开扩容:通过计算和存储的分离部署实现计算和存储的隔离,根据业务负载需求,对计算 / 存储按需扩容。
  2. 大数据能力云化:计算分离之后,可将其迁移到 K8S 或其他的云上面,使得计算更轻量化。
  3. 多数据平台整合:底层提供统一的存储给到不同的大数据平台,实现多个大数据平台数据的整合,加速流程,逐步构建企业内部数据湖。
  4. 获得最佳存储体验:导入云存储集群中的 HDFS (将原生 HDFS 替换成商业存储)具备了企业级别存储特性,实现最佳 TCO ( Total Cost of Ownership ),即总拥有成本,包括产品采购到后期使用、维护的成本。
  5. 实现大数据的容灾备份:大数据一般数据量比较大,传统的容灾备份都很难做。存算分离后,可以利用专业企业存储的容灾备份能力,如快照,复制等实现大数据业务的数据保护。

当前存算分离实现方案
客户端模式

HCFS ( Hadoop Compatible FileSystem ),即 Hadoop 兼容文件协议。以无服务的依赖库形式,可以被应用所依赖,目前大多主流云厂商和部分商业存储厂商都以通过 HCFS 方式实现对 HDFS 协议的支持。该方案需要在计算端安装专用的客户端并修改 hadoop 组件配置项,应用端零改造。

服务端模式

实现存算分离的另一种方式则是服务端模式,即通过在存储端实现 HDFS 的 NameNode 和 DataNode 服务接口,使计算节点通过原生 HDFS 客户端即可访问存储系统。服务端模式无需在计算节点上安装私有客户端,以低耦合的方式交互。

三、 XSKY 基于分布式文件的大数据方案

原生 HDFS 大数据方案

方案介绍

上图为 XSKY XGFS 大数据存算分离方案架构图, XSKY XGFS 在大数据存算分离方案中主要提供基于原生 HDFS 协议的 HDFS 网关能力以及元数据管理和数据管理能力, XGFS 在 HDFS 网关中模拟 HDFS 的 NameNode 和 DataNode 角色,可收发原生 HDFS 协议的请求,亦可直接访问 XGFS 元数据与数据。同时可无缝对接大数据计算层各个组件。

XGFS HDFS 网关是模拟 NameNode 和 DataNode 角色,所以不会直接存储元数据和数据,所有元数据和数据将分别存储在 XGFS 的元数据集群和数据集群中。

通过 XSKY XGFS 大数据存算分离方案,可以解决 HDFS 所面临的以下挑战:

  1. 通过 XGFS 的协议兼容性以及对 XGFS 本身的用户和用户组权限控制的兼容性,解决 HDFS 存算绑定的问题。 XGFS 可直接兼容原生 HDFS 协议,且 XGFS 用户和用户组权限控制与 HDFS 的权限控制机制相近,利用这两大兼容特性,实现和大数据计算层的无缝对接
  2. XGFS 支持 NFS 、 SMB/CIFS 、 POSIX 、 FTP 、 HDFS 、 CSI 、 S3 等协议互通,具备多协议融合互通特性,可以很好的解决应用跨多存储协议数据拷贝问题
  3. 通过成熟稳定的数据 EC 纠删码存储机制,解决 HDFS 3.x EC 不可商用的问题,同时也降低了数据存储成本
  4. XGFS 从元数据落盘、统一命名空间、整池扩容、在线设定存储池角色和无状态的分布式网关等方面,加强了存储的弹性扩展,可以解决长期困扰 HDFS 的扩展性弱的问题
  5. XGFS 作为一款企业级分布式文件存储系统,提供专业的运维 Portal 和运维接口,具备极简运维特性,可解决 HDFS 运维困难的问题;
  6. XGFS 作为企业级专业存储,将提供完备的数据容灾备份方案,解决客户大数据的运维及灾备方面的问题。

下面我们将对上面提到的特性逐个进行详细介绍:

方案优势

◆ 协议兼容性 -- 原生 HDFS 协议

如图上所示, XGFS 包含了 HDFS GW (即 HDFS 分布式网关,简称为 HDFS 网关)以及元数据管理集群和数据管理集群三大模块, XGFS 在 HDFS 网关模块模拟了 HDFS 中的 NameNode 和 DataNode 两个角色,由 NameNode 和 DataNode 将对外提供原生 HDFS API ,并负责接发、转送客户端发过来的数据读写请求。元数据和数据不会保存在 NameNode 和 DataNode 角色中,而是分别存储于 XGFS 的元数据管理集群和数据管理集群。

通过在 HDFS 网关中模拟 NameNode 和 DataNode ,客户端可通过原生 HDFS 协议直接访问 HDFS GW ,可带来如下价值:

  1. 通过 XGFS 提供的原生 HDFS 协议能力,可对接市场上常见的大数据平台;
  2. 除了支持常用的接口外,还支持 append 、 rename 、 hflush 、 flush 、 concat 、 setfacl 、 setxattr ;
  3. 在 XGFS 和计算层对接时,无需在计算层安装任何专用客户端。在大数据平台配置中心设置 XGFS 大数据网关的相关配置后,计算层程序零改造,可直接通过配置找到 XGFS 网关。

◆ 用户和用户组权限兼容性

HDFS 实现了一套兼容 POSIX 的文件权限模型,包括粗粒度的 POSIX UGO 模型和细粒度的 POSIX ACLs 协议, XGFS 文件存储可很好的兼容 HDFS 权限控制。

◆ 多协议融合互通


XGFS 目前已支持 NFS 、 SMB/CIFS 、 POSIX 、 FTP 、 HDFS 、 S3 、 CSI 等协议之间互通,同一份文件既可以通过原生 HDFS 接口访问,又可以使用其他文件协议接口访问,无须协议间做数据拷贝。

要做到文件多协议之间的互通,首先需要打通用户和元数据层也就是统一用户、统一命名空间。在 XGFS 界面创建一个本地用户后,可以配置开启 S3 协议访问权限,也可将同一文件目录通过不同的文件协议共享出去供不同的上层应用访问,且每个协议均可访问其他协议上传的文件。例如在 S3Browser 上可以看到桶 user01bucket 中由 HDFS 、 CIFS 和 NFS 协议写入的文件。

同时用户可针对不同的上层应用场景,灵活地选择适用的文件协议,例如:

  1. 针对数据分析业务可以考虑直接采用原生 HDFS 协议;
  2. 针对海量数据分析和 AI 训练业务,则可考虑通过私有客户端进行支持;
  3. 通过自有 CSI Driver 支持金融传统业务容器化转型, 简化业务 IT 架构的同时解除对业务的锁定。

另外对于基础设施和运维团队来说,可以不需要为不同的应用维护各种协议的存储系统,也不需要在多个存储系统中拷贝同一份数据。

◆ EC纠删码

如上图所示, EC ( Erasure Coding )纠删码技术是将一份数据切分成 K 块原始数据,基于 K 块原始数据块中计算出 M 个校验块,并将 K+M 块数据分别存放在存储系统中的不同存储节点上,当其中任意 M 块数据出错时,存储系统可通过数据恢复算法恢复出原来的 K 块数据,实现冗余和容错的目的。

如上图所示, HDFS3.x EC 纠删码目前只支持 2+1 、 3+2 、 6+3 、 10+4 模式,默认为 6+3 模式,最高为 10+4 模式,得盘率 71.43% 。而 XGFS EC 纠删码的得盘率最高为 88.89% ,且 XGFS 支持精简 EC ,如 4+2:1 、 8+2:1 和 16+2:1 ,在资源有限的情况下尽量提高得盘率,降低成本。

另外 XGFS 支持用户自定义 K+M 具体值,方便用户根据资源情况自定义 K+M ,使得资源使用最大化。

◆ 扩展性


如上图所示,相比较于 HDFS , XGFS 具备很强的扩展性,主要通过以下几个方面实现:

  1. 元数据落盘: 通过 XGFS 大数据存算分离方案,文件元数据将保存在 XMDS 元数据池,元数据将直接写入 NVMe/SCM/SATA SSD 盘,不会产生内存空间的瓶颈问题。通过大容量的 NVMe/SCM/SATA SSD 的元数据空间,可以轻松保存和处理百亿规模文件;
  2. 统一命名空间: XGFS 统一命名空间同时支持多个存储池,用户添加存储池时无需添加新的命名空间,不会增加管理负担;
  3. 整池扩容: XGFS 支持整池扩容,当在线添加新的存储池时,已有存储池无需重平衡,不影响在线业务;
  4. 在线设定存储池角色: XGFS 支持在线设定存储池角色:活动池和非活动池。当某一存储池设定为非活动池后,将不再接受新文件的分配写入,只支持已有文件的数据读、写、删除操作;
  5. 无状态网关: XGFS HDFS 网关提供无状态服务,不保存状态数据,实例可以水平拓展,通过负载均衡将请求分发到各个节点。

通过以上四个扩展性方面的强化, XGFS 可以带来以下客户价值:

  1. XGFS 通过元数据落盘解决了 HDFS 一直以来因为 NameNode 元数据内存瓶颈导致的扩展受限的问题;
  2. 相比较于 HDFS 通过 HDFS Federation 联邦带来的多组 NameNode 、多个 NamesSpace 管理运维困难问题, XGFS 统一命名空间支持多个存储池,减少了运维管理上的问题;
  3. 存储资源池存储空间不足时,可通过硬件设备创建一个新的存储资源池,并实现整池扩容,用户可在不改变业务访问路径的情况下实现扩容,有效避免了类似 HDFS 在扩容后需要手动进行数据重平衡的问题,避免了扩容对在线业务性能的冲击。同时多存储池间故障隔离,可以有效应对极端异常时批量坏盘场景;
  4. 客户可按需将已有写满的数据池设置为非活动池,作为数据长期存储使用;
  5. XGFS HDFS 分布式网关都是无状态网关,横向扩展不受限制,可以随着集群规模的扩展近似线性地提升 IOPS 性能。

◆ 数据灾备

XGFS 在大数据容灾场景支持同步复制和异步复制两种方式:

同步复制

可通过延展集群的方式实现园区或同城的数据中心级双活及数据灾备,实现 RPO=0 ,数据零丢失。延展集群是分布式存储实现数据跨站点双活的解决方案。延展集群将存储集群从单个站点扩展到两个站点,存储池中数据副本跨站点分布,实现了更高级别的可用性。延展集群可以替代传统共享存储集群或存储镜像集群等解决方案,实现园区或同城的数据中心级双活及灾难恢复。很好的解决了 HDFS 无原生双活方案的问题,通过引入 HDFS 分布式网关,就能快速的实现数据和业务双活部署的需求。

异步复制

将多个 XGFS 部署在不同的机房(站点),通过 X3DS 数据管理工具,实现不同站点间的文件数据异步复制,当主站点故障后,大数据应用可切换至备站点,从而满足大数据应用容灾备份的需求,提高业务可靠性; 同时, X3DS 在进行数据异步复制的同时,可灵活配置复制策略及数据复制 QoS 控制,降低业务影响。

四、典型场景

与原 HDFS 共存 —— Viewfs

针对大数据体系非常庞大,业务使用场景复杂的用户,可以使用新旧存储共存的方案。小规模高性能实时场景仍然使用 HDFS ,其他大规模的数据可以存放在 XGFS 。因大规模的数据都在 XGFS 中,所以后续扩容主要是针对 XGFS 的扩容,可以降低对 HDFS 的依赖,存储计算各自按需扩容。

新旧存储共存方案可通过 VIewfs 实现 XGFS 与原 HDFS 的共存。在集群的 core-site 配置中, fs.defaultFS 被设置为 ViewFS 的 root 目录,也就是指定的 mount-table 。 XGFS 、 HDFS 的挂载目录则在 mount-tables 中分别指定。

替换原有 HDFS

针对 HDFS 替换场景,原 HDFS 数据可通过 X3DS 迁移至 XGFS ,同时新产生的数据可以直接写入 XGFS 。且 XGFS 支持对接多套大数据集群,各个集群无需进行数据的复制迁移,可直接通过原生 HDFS 协议读取同一套 XGFS 中的数据。另外 XGFS 5.2 具备全协议特性,除原生的 HDFS 协议以外,还可以兼容 NFS/CIFS/FTP/S3 等不同协议的上层应用。

做 HDFS 二级存储——同城 / 异地

针对用户存在大量冷数据,但是需要随时被 HDFS 调用的场景,可将 XGFS 作为 HDFS 的二级存储使用。通过将大量访问频率不高的冷数据从 HDFS 迁移至 XGFS 中作为备份归档用,在实现分级存储的同时又可减轻 HDFS 存储的压力,扩容方面也可实现一定的按需扩容,而不用和计算资源强绑定。

另外,为应对冷数据随时可能被 Hadoop 调用的可能, XGFS 可以考虑通过 viewfs 实现 Hadoop 计算集群的对接,方便 Hadoop 计算层通过原生 HDFS 协议调用 XGFS 中的冷数据。同时, XGFS 具备全协议特性,针对不同协议的上层应用,可直接访问 XGFS 中的数据。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广