druid.io数据迁移之insert-segment-to-db Tool

在druid.io的services目录下,有比较多的druid.io的使用小工具,本结要说的就是这个insert-segment-to-db Tool工具,这个工具可以根据用户的druid.io的segments数据来对元数据进行重建,或者更新元数据,使用场景为数据迁移到其他集群,或者迁移druid.io数据存储地址,已经元数据损毁重建元数据.
这种重建方式需要注意的是他永远是以最新的segement的状态来重建你的元数据,这个可能会与你的正正的元数据有点差异.所以如果想保持与之前的元数据一直的话,最好是通话迁移元数据的方式来做dataSource数据迁移.
使用这个工具是比较容易的,需要在JVM中指定一些全局的系统参数,参数如下:

druid.metadata.storage.type   元数据存储数据库类型(mysql/oracle)
druid.metadata.storage.connector.connectURI  UAN数据存储的URL
druid.metadata.storage.connector.user   数据库用户名
druid.metadata.storage.connector.password 数据库登录密码
druid.storage.type    数据存储文件系统类型(HDFS/S3)

当然如果做数据迁移的话,需要将原先的segements迁移到新的文件路径,具体的存储目录格式如下:

Directory path: /druid/storage/wikipedia

├── 2013-08-31T000000.000Z_2013-09-01T000000.000Z
│   └── 2015-10-21T22_07_57.074Z
│           ├── 0_descriptor.json
│           └── 0_index.zip
├── 2013-09-01T000000.000Z_2013-09-02T000000.000Z
│   └── 2015-10-21T22_07_57.074Z
│           ├── 0_descriptor.json
│           └── 0_index.zip
├── 2013-09-02T000000.000Z_2013-09-03T000000.000Z
│   └── 2015-10-21T22_07_57.074Z
│           ├── 0_descriptor.json
│           └── 0_index.zip
└── 2013-09-03T000000.000Z_2013-09-04T000000.000Z
    └── 2015-10-21T22_07_57.074Z
            ├── 0_descriptor.json
            └── 0_index.zip

运行该工具的命令如下:

java 
-Ddruid.metadata.storage.type=mysql 
-Ddruid.metadata.storage.connector.connectURI=jdbc\:mysql\://localhost\:3306/druid 
-Ddruid.metadata.storage.connector.user=druid 
-Ddruid.metadata.storage.connector.password=diurd 
-Ddruid.extensions.loadList=[\"mysql-metadata-storage\",\"druid-hdfs-storage\"]   #需要用到的扩展包的集合
-Ddruid.storage.type=hdfs
-cp $DRUID_CLASSPATH   #druid-services的jar包存储路径 
org.apache.druid.cli.Main tools insert-segment-to-db --workingDir  #迁移后的segments路径 hdfs://host:port//druid/storage/wikipedia --updateDescriptor true (默认如果与当前元数据发生差异,覆盖元数据)

如果segments迁移到S3文件系统的话,具体执行命令如下:

java
-Ddruid.metadata.storage.type=mysql 
-Ddruid.metadata.storage.connector.connectURI=jdbc\:mysql\://localhost\:3306/druid 
-Ddruid.metadata.storage.connector.user=druid 
-Ddruid.metadata.storage.connector.password=diurd
-Ddruid.extensions.loadList=[\"mysql-metadata-storage\",\"druid-s3-extensions\"]
-Ddruid.storage.type=s3
-Ddruid.s3.accessKey=... 
-Ddruid.s3.secretKey=...
-Ddruid.storage.bucket=your-bucket
-Ddruid.storage.baseKey=druid/storage/wikipedia
-Ddruid.storage.maxListingLength=1000
-cp $DRUID_CLASSPATH
org.apache.druid.cli.Main tools insert-segment-to-db --workingDir "druid/storage/wikipedia" --updateDescriptor true

当然,在不同安装方式下,这写命令可能会发生一些错误,无法运行,这个一把是少jar包,或者路径指定不对的问题,例如我们使用的阿里云的druid.io,在运行该工具的时候,就发现保错无法运行,在对改命令充分理解之后,以及对阿里云druid
.io安装目录等熟悉偶发现,经过简单的修改后,该工具集可以顺畅的运行起来了,那么阿里云druid.io的运行命令如下:

java -Ddruid.metadata.storage.type=mysql  -Ddruid.metadata.storage.connector.connectURI=jdbc:mysql://emr-header-1:3306/druid  -Ddruid.metadata.storage.connector.user=root -Ddruid.metadata.storage.connector.password=EMRroot1234 -Ddruid.extensions.loadList=[\"/opt/apps/ecm/service/druid/0.12.3-1.1.0/package/druid-0.12.3-1.1.0/extensions/mysql-metadata-storage\",\"/opt/apps/ecm/service/druid/0.12.3-1.1.0/package/druid-0.12.3-1.1.0/extensions/druid-hdfs-storage\"] -Ddruid.storage.type=hdfs -cp .:/usr/lib/druid-current/lib/*:/usr/lib/druid-current/lib/druid-services-0.12.3.jar io.druid.cli.Main  tools insert-segment-to-db --workingDir oss://icsoc-emr-hadoop/druid-test/segments/TEST-CTI-PT30M-PT1H --updateDescriptor true```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值