EMR Druid 使用S3协议使用COS

2023-01-09 16:41:50 浏览数 (1)

注,该方法只支持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

0 人点赞