注,该方法只支持cos普通桶,且访问权限为 私有读写。
添加S3的支持
在 common.runtime.properties中的 druid.extensions.loadList 中添加 "druid-s3-extensions" 。最终如下
代码语言:javascript复制druid.extensions.loadList=["druid-s3-extensions","druid-hdfs-storage","mysql-metadata-storage","druid-kafka-indexing-service","druid-datasketches","druid-kerberos","druid-histogram","druid-lookups-cached-global"]
添加S3的配置
common.runtime.properties 中修改 druid.storage.type、druid.indexer.logs.type 为 s3;
新增druid.s3.accessKey、druid.s3.secretKey、druid.s3.endpoint.signingRegion、druid.s3.endpoint.url、druid.storage.baseKey、druid.storage.bucket 、druid.indexer.logs.s3Bucket、druid.indexer.logs.s3Prefix配置项
配置项 | 解释 |
---|---|
druid.storage.type | druid的深度存储的类型 |
druid.s3.accessKey | 对应的是cos的secretId |
druid.s3.secretKey | 对应的是cos的SecretKey |
druid.s3.endpoint.signingRegion | 对应的是cos桶所在地域,例如ap-guangzhou,ap-beijing |
druid.s3.endpoint.url | 对应的是cos服务地址,形式为:cos.<Region>.myzijiebao.com |
druid.storage.bucket | 深度存储桶的名称,对应的是cos桶的名称,格式为<BucketName-APPID> |
druid.storage.baseKey | 深度存储桶中的路径,对应的是cos桶中的存储路径 |
druid.indexer.logs.type | druid的索引日志文件存储类型 |
druid.indexer.logs.s3Bucket | druid的索引日志文件使用的存储桶的名称,对应的是cos桶的名称,格式为<BucketName-APPID> |
druid.indexer.logs.s3Prefix | druid的索引日志文件存储桶中的路径,对应的是cos桶中的存储路径 |
例如添加广州的一个cos桶,配置如下:
代码语言:javascript复制druid.storage.type=s3
druid.s3.accessKey=xxxxxxxxx
druid.s3.secretKey=yyyyyyyyyyy
druid.storage.baseKey=druid/segments3
druid.storage.bucket=wangxp-12xxxxx
druid.s3.endpoint.signingRegion=ap-guangzhou
druid.s3.endpoint.url=cos.ap-guangzhou.myzijiebao.com
druid.indexer.logs.type=s3
druid.indexer.logs.s3Bucket=wangxp-12xxxxx
druid.indexer.logs.s3Prefix=druid/indexing-logs
重启druid的所有服务
在控制台重启各个druid的服务
(可选)更新数据
如果需要从s3中迁移数据到cos中,则需要在导入数据后,变更一下桶的名称
代码语言:javascript复制---使用 druid 库
use druid ;
--导入元数据,建议操作前,先备份
source /root/druid_output_file.sql ;
--替换存储桶的名称,就bucket 中的值,例如将druidsegments.test 桶名替换为 druidsegment-1314626
update druid.druid_segments set `payload` = replace(payload,'payload,'druidsegments.test','druidsegment-1314626');
注,如果数据量较大,建议导入前先停止druid服务,否则可能产生大量的错误日志和缓存。
验证
在druid的web页面中 Load data 中选择 Local disk
然后在Base director中输入 /usr/local/service/druid/quickstart/tutorial/wikiticker-2015-09-12-sampled.json.gz ,在File filter中选择*.json.gz ,点击 Apply,然后点击下一步
之后一直点击下一步,到有 Primary partitioning (by time)这个页面上Segment granularity上选择hour
然后继续点击下一步,最后点击提交按钮
提交后调整到task页面,可以看到刚才提交的任务
待任务成功后,可以在segments 页面看到对应的 segment,点击查看原数据信息,此时可以看到配置都是s3的。
最后在cos上也可以看到生成的目录
参考:
https://cloud.tencent.com/document/product/436/41284
https://druid.apache.org/docs/latest/development/extensions-core/s3.html