在emr中访问s3中的数据

oiopk7p5  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(521)

我在s3中存储了一个大的文本文件,可以在多节点集群上使用's3:///folder/folder/file'格式从emr(比如pig)中直接访问它。
我的问题是关于数据传输到数据节点的效率。我相信s3中的数据以类似于hdfs的方式存储在块中。
读取文件时,如何将其拆分并发送到每个数据节点?
对数据节点的分配是否由主节点/作业跟踪器控制?
将文件复制到hdfs中然后访问它是否更有效?

cnh2zyt3

cnh2zyt31#

通常,在拆分时,从hdfs读取和从s3读取没有区别。s3filesystem类(s3输入的存储类)将使用公共位置和偏移量来获取s3文件块(使用http请求,包括头中的位置、偏移量信息)。更多细节,您可以在hadoop发行版中查看代码。
是的,与hdfs程序相同。
这取决于工作流程。如果您读取一次,查询多次,您可能希望将文件复制到hdfs,这将受益于本地i/o。否则,您可以直接使用s3作为存储。s3更稳定,有无限的存储空间,尽管这可能比hdfs慢一点(我知道netflix在很多情况下使用s3作为emr存储,正如他们所说的那样,它工作得很好)
ps:s3distcp可以帮助您在hdfs和s3之间进行快速复制。

相关问题