开发者学堂课程【数据湖 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
我们在计算集群上部署一套 Jindo FS,Jindo FS 具有分布式缓存的能力,它可以解决我们上面提到的两个问题,第一点,可以利用计算机学闲置资源,比如说云盘,hdd 或者内存进行数据缓存来做加速计算。
第二点,进行流量控制,避免计算机群占用核心集群过多资源。
这张图就详细介绍 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 路径得到一样 的数据,并且获得了加速效果。
相关资源
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 和 smartdate
可以看见 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 加速缓存的效果,可以看到效果还是比较明显的。