Menu

Tez Check

module.exports = header: 'Tez Check', handler: ({options}) ->

Check HDFS

  remote_dir = "check-#{options.hostname}-tez-hdfs"
  @system.execute
    header: 'Check HDFS'
    cmd: mkcmd.test options.test_krb5_user, """
    hdfs dfs -rm -r -skipTrash #{remote_dir} 2>/dev/null
    hdfs dfs -mkdir #{remote_dir}
    echo -e 'foo\\nbar\\nfoo\\nbar\\nfoo' | hadoop fs -put - #{remote_dir}/test.txt
    hadoop jar /usr/hdp/current/tez-client/tez-examples-*.jar orderedwordcount #{remote_dir}/test.txt #{remote_dir}/output
    hadoop fs -cat #{remote_dir}/output/*
    """
    unless_exec: unless options.force_check then mkcmd.test options.test_krb5_user, "hdfs dfs -test -d #{remote_dir}/output"
  , (err, {executed, stdout}) ->
    throw Error "Invalid output" if executed and stdout?.trim().split('\n').slice(-2).join('\n') isnt 'bar\t2\nfoo\t3'

Dependencies

mkcmd = require '../lib/mkcmd'