我编写了一个 Hadoop 程序,该程序需要在 HDFS 中进行特定布局,之后我需要将文件从 HDFS 中取出。它适用于我的单节点 Hadoop 设置,我渴望让它在 Elastic MapReduce 中的 10 个节点上运行。
我一直在做的是这样的:
./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
所以虽然这种方法有效,但它很笨重,不是我想要的。有没有更清洁的方法来做到这一点?
谢谢!