环境描述

  • 两套Druid集群:Druid-A(source)、Druid-B(target)
  • 两套HDFS集群:HDFS-AHDFS-B
  • Druid元数据存在MySQL
  • 两套HDFS集群互通,记得在source中配置target的Host

目标描述

  • Druid-A中的数据迁移到Druid-B

操作描述

  1. HDFS中的数据迁移,以HDFS-A中存储的两天的segmnets为例

    1
    hadoop distcp hdfs://HDFS-A:8020/druid/segments/api_request_us/20180531T000000.000Z_20180601T000000.000Z hdfs://HDFS-A:8020/druid/segments/api_request_us/20180601T000000.000Z_20180602T000000.000Z webhdfs://HDFS-B:50070/druid/segments/api_request_us
  2. 确保Druid机器为安全的状态(对要插入的段无写操作,建议down掉KIS)

  3. Druid目录(阿里为/usr/lib/druid-current)中启动insert-segment-to-db,可参考官网的链接

    1
    2
    3
    4
    5
    6
    7
    8
    9
    java -Ddruid.metadata.storage.type=mysql -Ddruid.metadata.storage.connector.connectURI=jdbc\:mysql\://localhost\:3306/druid -Ddruid.metadata.storage.connector.user=root -Ddruid.metadata.storage.connector.password=pwd -Ddruid.extensions.loadList=[\"mysql-metadata-storage\",\"druid-hdfs-storage\"] -Ddruid.storage.type=hdfs -cp "$DRUID_HOME/lib/*" io.druid.cli.Main tools insert-segment-to-db --workingDir hdfs://HDFS-B:8020/druid/segments/api_request_us
    p.s.
    > druid.metadata.storage.connector.connectURI 为JDBC URL
    > druid.metadata.storage.connector.user 为用户名
    > druid.metadata.storage.connector.password 为密码
    > workingDir 可指定到具体那一天的目录也可以在dataSource的目录
    e.g. /druid/segments/api_request_us/20180601T000000.000Z_20180602T000000.000Z
  4. 若发现FileNotFound,将HDFScore-site.xml放置到Druid配置文件的_commom中(阿里为/etc/ecm/druid-conf)