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```

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章