登陆 | 注册 | 留言 | 设首页 | 加收藏
当前位置: 网站首页 > 前沿技术 > 文章 当前位置: 前沿技术 > 文章

大数据存储分离的架构设计及搭建

时间:2024-08-19    点击: 次    来源:网络    作者:佚名 - 小 + 大

1.2. 为何选择存算分离

MPP(Massive Parallel Processing)架构为OLAP类数据库最普遍采用的技术架构。在MPP架构下,计算存储共享一个节点,每个节点有自己独立的CPU、内存、磁盘资源,互相不共享。数据经过一定的分区规则(hash、random、range),打散到不同的节点上。处理查询时,每个节点并行处理各自的数据,互相之间没有资源争抢,具备比较好的并行执行能力。这种将存储资源、计算资源紧密耦合的架构,不太容易满足云时代不同场景下的不同workload需求。

例如数据导入类的任务,往往需要消耗比较大的IO、网络带宽,而CPU资源消耗不大。而复杂查询类任务往往对CPU的资源消耗非常大。因此面对这两种不同的workload,在选择资源规格时,需要结合不同的workload分别做不同的类型选择,也很难用一种资源规格同时满足这两种类型。因为业务不停在发展,workload也不停在变化,比较难提前做好规划。
当业务发展,对CPU资源提出了更高的需求,我们扩容集群扩充CPU资源时,也会引发数据的reshuffle,这会消耗比较大的网络带宽、以及CPU资源。即便是基于云平台构建的数据仓库,在查询低峰期时,也无法通过释放部分计算资源降低使用成本,因为这同样会引发数据的reshuffle。这种耦合的架构,限制了数据仓库的弹性能力。
而通过分离存储资源、计算资源,可以独立规划存储、计算的资源规格和容量。这样计算资源的扩容、缩容、释放,均可以比较快完成,并且不会带来额外的数据搬迁的代价。存储、计算也可以更好的结合各自的特征,选择更适合自己的资源规格和设计。

1.3. 传统存算分离面临的问题

传统计算存储分离,解决了计算量和存储量不匹配问题, 实现了算力的按需使用,大幅节省了运维规划时间以及闲置的算力成本。但直接使用计算存储分离架构,也引入了新的问题:

1、在IO密集型的场景下,网络带宽会成为瓶颈, 可能导致计算 、存储资源利用不充分;

2、数据本地化不够,导致很多shuffle过程的重复计算,造成部分浪费计算资源的浪费;

3、可能存在多种甚至异构的存储源,增加了管理难度。

2. 架构方案

2.1. 方案一:对象存储SDK集成Hadoop方式

优点:

1、灵活性、可扩展性:可以根据不同的协议(HDFS,OBS,OSS....)存储到对应的存储中;

缺点:

业务层需要修改,修改量小,

  • hbase的存储路径需要修改为obs://
  • hive需要存储OBS的修改alter location obs://


2.2. 方案二:对象存储挂载本地系统方式

优点:

只需要修改hdfs-数据存储的路径即可,上层业务不需要做任何修改;

缺点:

数据存储的扩展性差、不够灵活,数据最终只能存到一种存储上,即挂在的对象存储。

***目前测试数据写入时效性差****

2.3. 方案三:统一数据湖引擎对接存储,湖仓一体


3. 面向对象存储OBS

4. 存算分离方案的实现

4.1. 对象存储SDK集成Hadoop方式实现(推荐)

一、华为SDK安装

a. 在官方Github下载hadoop-huaweicloud:下载地址

b. 将hadoop-huaweicloud-x.x.x-hw-y.jar拷贝到/opt/hadoop-xxx/share/hadoop/tools/lib和/opt/hadoop-xxx/share/hadoop/common/lib目录下


下面为3.1.1的SDK

hadoop-huaweicloud-3.1.1-hw-45.jar.zip

二、配置hadoop的core-site.xml

<property>
<name>fs.obs.impl</name>
<value>org.apache.hadoop.fs.obs.OBSFileSystem</value>
</property>
<property>
<name>fs.AbstractFileSystem.obs.impl</name>
<value>org.apache.hadoop.fs.obs.OBS</value>
</property>

<!-- 此处为AK-->
<property>
<name>fs.obs.access.key</name>
<value>*****</value>
<description>HuaweiCloud Access Key Id</description>
</property>
<property>

<!-- 此处为SK-->
<name>fs.obs.secret.key</name>
<value>*****</value>
<description>HuaweiCloud Secret Access Key</description>
</property>
<property>

<!-- 此处为endpoint-->
<name>fs.obs.endpoint</name>
<value>obs.cn-south-1.myhuaweicloud.com</value>
<description>HuaweiCloud Endpoint</description>
</property>

上一篇:C-V2X通讯标准应用层标准

下一篇:大数据工具(一)parquet文件生成与上传

推荐阅读
鲁ICP备2022041402号  |   QQ:8346417  |  地址:山东青岛