Я написал программу Hadoop, которая требует определенной компоновки в HDFS, а затем мне нужно получить файлы из HDFS.Он работает на моей установке Hadoop с одним узлом, и мне не терпится заставить его работать с 10-ю узлами в Elastic MapReduce.
То, что я делал, выглядит примерно так:
./elastic-mapreduce --create --alive
JOBID="j-XXX" # output from creation
./elastic-mapreduce -j $JOBID --ssh "hadoop fs -cp s3://bucket-id/XXX /XXX"
./elastic-mapreduce -j $JOBID --jar s3://bucket-id/jars/hdeploy.jar --main-class com.ranjan.HadoopMain --arg /XXX
Это асинхронно, но когда работа завершена, я могу сделать это
./elastic-mapreduce -j $JOBID --ssh "hadoop fs -cp /XXX s3://bucket-id/XXX-output"
./elastic-mapreduce -j $JOBID --terminate
Так что пока этот своего рода работает, но он неуклюжий и не тот, который я хотел бы.Есть ли более чистый способ сделать это?
Спасибо!