Amazon s3 如何将HDFS与EMR结合使用?
我觉得将EMR连接到AmazonS3是非常不可靠的,因为它依赖于网络速度Amazon s3 如何将HDFS与EMR结合使用?,amazon-s3,hdfs,emr,amazon-emr,Amazon S3,Hdfs,Emr,Amazon Emr,我觉得将EMR连接到AmazonS3是非常不可靠的,因为它依赖于网络速度 我只能找到描述S3位置的链接。我想将EMR与HDFS一起使用-我该怎么做?您可以使用HDFS输入和输出路径,如hdfs:///input/ 假设您已将作业添加到群集,如下所示: hadoop fs -get hdfs://output/part-r-0000 /home/ec2-user/firstPartOutputFile ruby elastic mapreduce-j$jobflow--jar s3:/myjar
我只能找到描述S3位置的链接。我想将EMR与HDFS一起使用-我该怎么做?您可以使用HDFS输入和输出路径,如
hdfs:///input/
假设您已将作业添加到群集,如下所示:
hadoop fs -get hdfs://output/part-r-0000 /home/ec2-user/firstPartOutputFile
ruby elastic mapreduce-j$jobflow--jar s3:/myjar location/myjar.jar--args3:/input--args3:/output
相反,如果需要在hdfs上使用,可以按如下方式使用:
ruby elastic mapreduce-j$jobflow--jars3:/my jar location/myjar.jar--arghdfs:///input--arghdfs:///output
为了与EMR集群上的HDFS进行交互,需要将ssh连接到主节点并执行常规HDFS命令。
例如,要查看输出文件,可以执行以下操作:
hadoop fs -get hdfs://output/part-r-0000 /home/ec2-user/firstPartOutputFile
但如果您使用的是瞬态集群,则不鼓励使用原位HDFS,因为当集群终止时,您将丢失数据
此外,我还有一些基准测试证明,使用S3或HDFS不会带来太大的性能差异。
对于~200GB的工作负载:
-以S3作为输入源,作业在22秒内完成
-以HDFS作为输入源,作业在20秒内完成
EMR经过超级优化,可从S3读取/写入数据
对于中间步骤,最好将输出写入hdfs。
因此,假设您的管道中有3个步骤,那么您可能有如下输入/输出:
hadoop fs -get hdfs://output/part-r-0000 /home/ec2-user/firstPartOutputFile
- 步骤1:从S3输入,以HDFS输出
- 步骤2:从HDFS输入,以HDFS输出
- 步骤3:从HDFS输入,在S3中输出