天天看点

云上计算云下数据: HDFS 缓存加速 | 学习笔记

开发者学堂课程【数据湖 JindoFS + OSS 实操干货36讲:云上计算云下数据: HDFS 缓存加速】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:

https://developer.aliyun.com/learning/course/833/detail/13975

云上计算云下数据:HDFS 缓存加速

内容介绍

一、背景介绍

二、功能介绍

三、实观原理

四、实操演示

传统的大数据服务,通常是自己部署一套 Hive、Spark、HDFS 在线下的 IDC 机房,现在的云计算越来越成熟,云计算可以带来弹性扩容,运维方便,节省成本等优点。

因此,越来越多的企业开始将他们的大数据平台搬到云上。

第一步他们先会将 Hive、Spark 等服务搬到云上,在云上执行计算,云下 IDC HDFS 集群存在着一些历史数据,所以,HDFS 集群的数据搬到云上需要一定的时间,并且有些客户的存在一些敏感数据,倾向于继续保留在云下。

或者说还有一些历史原因,会保存在其他云下集群上。因此这时候就涉及到跨机房跨云房访问 HDFS 数据。

云上访问余下HDFS数据,存在一些问题:

 集群之间网络延迟或者带宽限制。

 作业突发流量,线下 HDFS 资源相对于云上来说会比较有限,核心集群磁盘/网络被打满。

为了解决这些问题,就必须引入 HDFS 跨机房服务。

 Jindo Namespace Service  

 Jindo Storage Service  

 Jindo SDK

云上计算云下数据: HDFS 缓存加速 | 学习笔记

我们在计算集群上部署一套 Jindo FS,Jindo FS 具有分布式缓存的能力,它可以解决我们上面提到的两个问题,第一点,可以利用计算机学闲置资源,比如说云盘,hdd 或者内存进行数据缓存来做加速计算。

第二点,进行流量控制,避免计算机群占用核心集群过多资源。

云上计算云下数据: HDFS 缓存加速 | 学习笔记

这张图就详细介绍 Jindo FS 缓存服务的系统架构。

包含三个部分,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-x.x.xjar,在所有 Hadoop 节点安装。  

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

2. 将 namespace地址配置到Hadoop的core-site.xml中。  

fs.jfs.namespace.rpc-address 172.16.xx.xx:8101,172.16.xx.xx:8101,172.16.xx.xx:8101

通过 JindoFS 加速访问 HDFS  

我们通过 jfs:///路径访问,跟直接访问远端 HDFS 路径得到一样 的数据,并且获得了加速效果

云上计算云下数据: HDFS 缓存加速 | 学习笔记

相关资源  

JindoFS SDK

https://github.com/aliyun/alibabacloud-

jindofs/blob/master/docs/indofs _sdk download.md  

JindoFS缓存服务

jindofs/blob/master/docs/indofs cache mode deploy.md

下载最新版本的 SDK 和 smartdate

云上计算云下数据: HDFS 缓存加速 | 学习笔记

可以看见 Jindo FS 的详细使用流程和配置方法,参考 Jindo FS 兼容模式部署,程序安装好后参考使用流程来进行配置部署。

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:48:03

每个节点都有700GB的内存

利用 Jindo FS 加速缓存的效果,可以看到效果还是比较明显的。