dremio 分布式存储以及云存储缓存简单说明
实际上以前我也简单介绍过,以下主要是对于这些有一些整体的介绍
分布式存储
paths.dist 配置属性,包含了加速,表,job 结果,上传以及下载的数据,支持包含了共享存储(nas,hdfs,以及对象存储)
对于对象存储实际上还是hdfs,只是处理上配置不一样
paths: {
dist: "dremioS3:///<bucket_name>/<folder1>/<folder2>"
}
同时我们需要配置core-site.xml ,具体就是s3a 的一些参数了,具体参考官方文档
注意默认fs.s3a.buffer.dir 配置默认为/tmp/hadoop-dremio/s3a ,建议修改,然后重启服务(主要是执行节点)
云存储缓存
对于一些数据源,是支持云存储缓存的(s3,adls,azure,hdfs。。。)实际上从名字名并不是数据放到远端,而且我们将云端或者
一些延迟比较大的存储数据缓存到本地,实现数据的加速(特别类似现有的juicefs 以及alluxio)
对于这些我们可以在添加数据源的时候配置
设置缓存路径以及目录
需要注意的项
- 数据路径,实际上就是存储缓存数据的牡蛎
- 缓存目录,存储关联数据的挂载点,注意如果路径改变以及执行器重启缓存失效
- 配置
需要配置executor.cache.path.db以及executor.cache.path.fs (推荐使用ssd 以及nvme )
一个参考配置
paths: {
# the local path for dremio to store data.
local: "/mnt/resource/dremio/data"
# the distributed path Dremio data including job results, downloads, uploads, etc
#dist: "pdfs://"${paths.local}"/pdfs"
}
services: {
coordinator.enabled: false,
coordinator.master.enabled: false,
executor.enabled: true
executor.cache.path.db : "/mnt/cachemanagerdisk/db",
executor.cache.path.fs : [ "/mnt/cachemanagerdisk/dir1","/mnt/cachemanagerdisk/dir2","/mnt/cachemanagerdisk/dir3","/mnt/cachemanagerdisk/dir4"]
}
zookeeper: "lak-azure-perf:"${services.coordinator.master.embedded-zookeeper.port}
- 反射数据缓存
可以通过dist.caching.enabled以及reflection.cloud.cache.enabled解决,注意需要重启集群 - 最佳实践
使用ssd 以及nvme 为了更好的性能,对于不常用的会进行清理,对于cache 添加额外的存储
如果需要移除本地数据的缓存:数据源移除cache 配置,删除缓存管理数据以及文件夹
说明
分布式存储解决的是数据共享的问题,云储存缓存解决的是对于延迟较大存储的加速,实现数据本地化,加速查询处理
参考资料
https://docs.dremio.com/software/deployment/dist-store-config/
https://docs.dremio.com/software/deployment/cloud-cache-config/