指定表和分区来预先缓存,查询分析更高效 | 学习笔记

开发者学堂课程【数据湖 JindoFS + OSS 实操干货36讲指定表和分区来预先缓存,查询分析更高效】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/833/detail/13974


指定表和分区来预先缓存,查询分析更高效


内容介绍

一、背景介绍

二、功能介绍

三、实观原理

四、实操演示


一、背景介绍

1.1传统集群架构  

 存储计算一体  

 存储量与计算量无法始终匹配  

 存储无法水平扩展  

计算节点 计算节点 计算节点

NodeManager NodeManager NodeManager

DataNode DataNode DataNode

为什么需要指定表和分区来预先缓存,首先讲一下传统的集群架构。

传统的大数据分析,通常采用存储、计算一体的方式,计算节点上既有存储服务,也有计算服务。

这种方式存储量和计算量没法做到始终匹配,比如扩充一台节点,就需要计算资源和存储资源一起。

然后第二点,它存储服务无法做到水平扩展,因为受到 HDFS 的单点限制,集群扩大到一定规模的时候就无法继续扩展,因为一般它都将原数据都保存在内存,单机的内存毕竟是有限的,现在我们通常建议采用的是存算分离的架构。

1.2存算分离架构  

 计算资源动态伸缩  

 海量的存储空间  

 稳定可靠的存储服务  

 计算节点剩余的磁盘、内存资源可以用于缓存加速  

计算节点 计算节点 计算节点

NodeManager NodeManager NodeManager

缓存 缓存 缓存

OSS 对象存储

计算节点上只部署计算服务,部署存储服务存储,使用远端的OSS对象存储。

这种方式,有四个优点

第一点,是计算资源,可以动态的扩缩容释放节点,不会导致数据丢失。

第二,它具有海量的存储空间,OSS的存储空间非常大。

第三,OSS 的服务非常稳定可靠。

第四,点式计算节点,剩余的磁盘内存资源可以用于缓存加速,利用缓存加速,我们可以同时利用本地磁盘 OS 的贷款,提高计算速度。

这是 TBCDS 生成的一份标准输仓的数据,其中的围表,比如说是比较经常访问的,因此我们可以先缓存适时表,通常采用时间分区,对于接近最近几天的数据,也可以预先缓存有一些比较老的,比如说一两个月之前的数据,是比较冷的,这些数据只保存在 OSS 就可以了。


二、功能介绍

 Jindo Namespace Service  

 Jindo Storage Service  

 Jindo SDK

JindoFS缓存服务的架构图,包含三个部分,Namespace服务保存文件的元数据和缓存原始信息的元数据。

Jindo SDK 是客户端,部署spark服务上。

Storage服务负责管理缓存块的数据,整个流程是计算服务,通过Jindo SDK访问数据,记录 SDK,从Namespacs服务查询缓存位置信息,然后向集群中的 storage 服务,读取出缓存数据,如果命中缓存直接返回,如果没有命中缓存,则从OSS读取数据,并且将缓存写入到 storage 服务供下次使用。


三、实观原理

 部署缓存服务  

1. 下载最新 Release 包 b2smartdata-x.x.x.tar.gz,解压并部署到集群所有节点上  

2. 修改配置文件conf/bigboot.cfg

[bigboot-storage]  

storage.rpc.port - 6101  

storage.data-dirs =/mnt/disk1/bigboot,/mnt/disk2/bigboot,/mnt/disk3/bigboot,/mnt/disk4/bigboot  

storage.data-dirs.capacities = 527371075584,527371075584,527371075584,527371075584

storage.namespace.rpc.address = emr-header-1:8101  

storage.watermark.high.ratio-0.4 storage.watermark.low.ratio-0.2  

[bigboot-namespace] namespace.rpc.port = 8101  

namespace.meta-dir =/mnt/disk1/bigboot  

3. 修改 sbin/nodes,配置所有storage service的节点列表  

4. 启动所有服务./sbin/start-service.sh  

详细文档可参考:https://github.com/aliyun/alibabacloud-jindofs/blob/master/docs/jindofs_cache_mode deploy.md

 部署Jindo SDK  

1. 安裝jar包:下载最新的jar包 jindofs-sdk-xx.xjar,在所有 Hadoop 节点安裝。  

cp ./jindofs-sdk-*.jar/share/hadoop/hdfs/lib/jindofs-sdkjar  

2. 配置 JindoFS 实现类:将 JindoFS 实现类配置到Hadoop的core-site.xml中。  

3. 将 OSS 的 A ccess Key、Access Key Secret、Endpoint 等预先配置在 Hadoop 的core-site.xml中。

 指定表和分区来预先缓存

-cache  

•语法  

jindo table -cache {-t}[-p] 【-pin]  

•功能  

表示缓存指定表或分区的数据至集群本地磁盘上。  

表或分区的路径需要位于 OSS 或 JindoFS。指定表时使用 database.table 的格式;指定分区时使用 partitionCol1  

=1,partitionCol2=2,...的格式;指定-pin 时,在缓存空间不足时尽量不删除相关数据。  

•示例:缓存2020-03-16日db1.t1表的数据至本地磁盘上。  

jindo table -cache -t db1.tl -p date=2020-03-16  

-uncache  

•语法  

jindo table -uncache {-t}[-p]  

•功能  

表示删除集群本地磁盘上指定表或分区的缓存数据。  

对应的路径需要位于 OSS 或 JindoFS。指定表时使用 database.table 的格式,指定分区时使用 partitioncol1=1,  

partitionCol2=2,...的格式。

相关资源  

JindoFS SDK https://github.com/aliyun/alibabacloud- jindofs/blob/master/docs/indofs _sdk download.md  

JindoFS 缓存服务 https://github.com/aliyun/alibabacloud- jindofs/blob/master/docs/indofs cache mode deploy.md


四、实操演示

下载最新版本的 SDK 和s martdate

程序安装好后进行配置部署

然后准备测试数据

Overview  

Start Time: Sun Jun 27 23:06:53 2021

Status:   Active

Meta Backend:  RocksDB (Standalone) emr-header-1.cluster-234515:8101 [192.168.0.30](Active)

Node:  Live Nodes:[3], Decommission Nodes:[0]  

Version:  3.6.0

Build No:  1d2d462e9844d63d587127504ece7c87b58ad/42

Namespace Info (3)  

Namespace: ifs:/ftest/  

Namespaces:  test

Mode:  BLOCK_MODE

Backend URI:  oss://chengli-sh-test/uyue/C-DBD8BBF30589E5BE  

Summary:  Directory Count:[1], File Count: [0], File Size:[0], Task Count:[0], Computed at 2021-06-27 23:07:01

Storage Overview  

Node: emr-worker-2.cluster-234515:6101

Start Time:  Sun Jun 27 23:06:53 2021

Status: online  

Version:  3.6.0

Build Version: 1d2d462e9844d63d587f27504ece7c87b58adf42

Storage Lists (1)  

Volume Storage Type Used/Capacity  Last Eviction Time  Diskid

/mnt/disk1/bigboot Disk oBRp3.57 GB

 1

   

上一篇:《统计会犯错——如何避免数据分析中的统计陷阱》一第1章 统计显著性简介


下一篇:缓存|学习笔记