Amazon s3 如何将HDFS与EMR结合使用?

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

我觉得将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 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中输出

在每一轮之后,我都会得到很多输出文件,在进入下一步之前,我如何才能将它们转换为一个文件?另外,如何使用amazon emr更改S3/HDFS块大小?我正在使用控制台,是否应该转到amazon cli?