Menu

Druid Broker Check

Todo: move to a druid client module. Here because the broker service is the latest service to be started.

module.exports = header: 'Druid Broker Check', handler: (options) ->

Register

  @registry.register 'hdfs_upload', 'ryba/lib/hdfs_upload'

Load from HDFS

  @call
    header: 'Load from HDFS'
    unless_exec: unless options.force_check then """
    echo #{options.krb5_user.password} | kinit #{options.krb5_user.principal} && {
      hdfs dfs -test -f quickstart/#{options.hostname}.success
    }
    """
  , ->
    @file.json
      header: 'Enrich Index'
      target: "#{options.dir}/quickstart/wikiticker-index.json"
      transform: (data) ->
        return data if data['hadoopDependencyCoordinates'] and "org.apache.hadoop:hadoop-client:2.7.3" in data['hadoopDependencyCoordinates']
        data['hadoopDependencyCoordinates'] = ["org.apache.hadoop:hadoop-client:2.7.3"]
        data
      merge: true
      pretty: true
      backup: true
    @system.execute
      header: 'Decompress'
      cmd: """
      if [ ! -f quickstart/wikiticker-2015-09-12-sampled.json  ]; then
        gunzip quickstart/wikiticker-2015-09-12-sampled.json.gz
      fi
      """
      cwd: options.dir
    @hdfs_upload
      header: 'Upload sample'
      target: "/user/#{options.user.name}/quickstart/wikiticker-2015-09-12-sampled.json"
      source: "quickstart/wikiticker-2015-09-12-sampled.json"
      cwd: options.dir
      owner: options.user.name
      krb5_user: options.hdfs_krb5_user
    @system.execute
      header: 'Index'
      cmd: """
      job=`curl -L -XPOST -H 'Content-Type:application/json' \
        -d @quickstart/wikiticker-index.json \
        #{options.overlord_fqdn}:#{options.overlord_runtime['druid.port']}/druid/indexer/v1/task \
        | sed 's/.*"task":"\\(.*\\)".*/\\1/'`
      echo "Current job is $job"
      sleep 5
      while [ "RUNNING" == `curl -L -s #{options.overlord_fqdn}:#{options.overlord_runtime['druid.port']}/druid/indexer/v1/task/${job}/status | sed 's/.*"status":"\\([^"]*\\)".*/\\1/'` ]; do
        echo -n '.'
        sleep 5
      done
      [ 'SUCCESS' == `curl -L -s #{options.overlord_fqdn}:#{options.overlord_runtime['druid.port']}/druid/indexer/v1/task/${job}/status | sed 's/.*"status":"\\([^"]*\\)".*/\\1/'` ]
      """
      cwd: options.dir
      trap: true
    @system.execute
      header: 'Query'
      cmd: """
      count=`curl -L -XPOST -H 'Content-Type:application/json' \
        -d @quickstart/wikiticker-top-pages.json \
        #{options.fqdn}:#{options.runtime['druid.port']}/druid/v2/?pretty \
        2>/dev/null \
        | wc -l`
      if [ $count -lt 50 ]; then sleep 10; fi
      if [ $count -lt 50 ]; then exit 1; fi
      echo "Got $count results"
      echo #{options.krb5_user.password} | kinit #{options.krb5_user.principal} && {
        hdfs dfs -touchz quickstart/#{options.hostname}.success
      }
      """
      cwd: options.dir
      trap: true
  # http://worker1.ryba:8090/console.html
  # curl  -L -XPOST -H 'Content-Type:application/json' --data-binary quickstart/wikiticker-top-pages.json http://master3.ryba:8082/druid/v2/?pretty -v
  # Broker
  # http://master1.ryba:8082/druid/v2/datasources
  # Coordinator
  # http://worker2.ryba:8081/#/