数据存储在S3与HDFS上

vjrehmav  于 2022-12-09  发布在  HDFS
关注(0)|答案(1)|浏览(464)

我是一个Pyspark新手,最近加入了一个项目,该项目使用Pyspark中开发的ETL框架/ETL管道,从S3摄取CSV文件(通过阅读DF中的数据)并处理它们,然后将它们加载到配置单元表中框架接受一个ETL配置文件,其中包含Spark SQL语句形式的转换(使用临时视图)。然后,它从临时表中读取数据并应用这些转换,最后将数据加载到DWH目标中的配置单元表中。上述转换将提交到在YARN上运行Spark(2.4)的EMR集群。
在这种情况下,S3与HDFS(EMR)的关系是什么?我已经向团队中的其他人提出了这个问题,但没有得到完整的了解。
现在,根据我的理解,Hive表的输入文件沿着底层数据文件都存储在S3上。当我对特定表运行以下ls命令时,它会显示构成该表的数据的所有10分区-
aws s3 ls s3://my_bucket/cust_dw/cust_dm_customer_dtls/

2022-05-02 08:24:24   15236547 part-00000-42384ef3-05ae-4b64-abd9-9fe48b9852bf-c000.snappy.parquet
2022-05-02 08:24:24   47685934 part-00001-42384ef3-05ae-4b64-abd9-9fe48b9852bf-c000.snappy.parquet
2022-05-02 08:24:24   59204612 part-00002-42384ef3-05ae-4b64-abd9-9fe48b9852bf-c000.snappy.parquet
2022-05-02 08:24:24   81294375 part-00003-42384ef3-05ae-4b64-abd9-9fe48b9852bf-c000.snappy.parquet
2022-05-02 08:24:24   84390123 part-00004-42384ef3-05ae-4b64-abd9-9fe48b9852bf-c000.snappy.parquet
2022-05-02 08:24:24   19238712 part-00005-42384ef3-05ae-4b64-abd9-9fe48b9852bf-c000.snappy.parquet
2022-05-02 08:24:24   19348723 part-00006-42384ef3-05ae-4b64-abd9-9fe48b9852bf-c000.snappy.parquet
2022-05-02 08:24:24   28934198 part-00007-42384ef3-05ae-4b64-abd9-9fe48b9852bf-c000.snappy.parquet
2022-05-02 08:24:24   18398123 part-00008-42384ef3-05ae-4b64-abd9-9fe48b9852bf-c000.snappy.parquet
2022-05-02 08:24:24   93478230 part-00009-42384ef3-05ae-4b64-abd9-9fe48b9852bf-c000.snappy.parquet

现在,根据我的理解,EMR基本上是一个有很多节点的HDFS集群,我还认为数据文件是以分布式的方式存储在HDFS上的,每个节点上存储一部分数据,并有一定程度的复制。
因此,我的问题是-如果数据存储在S3上,那么它就不是存储在HDFS上,对吗?
既然在这种情况下,数据被存储在S3上,我们为什么需要HDFS?是不是在这种情况下,EMR只是被用作一个分布式环境来处理Spark(在宽转换期间)打乱的数据?HDFS不存储实际数据,而是存储在S3上?
因此,在这种环境中,输入数据存储在S3上,然后由PySpark框架读取,而后者又使用HDFS节点,通过在shuffle期间分发数据,以分布式方式处理数据?

imzjd6km

imzjd6km1#

您混淆了这两者。您不能在EMR * 中使用S3而不是Hadoop HDFS文件系统。
HDFS和EMR文件系统(EMRFS)(使用Amazon S3)都与Amazon EMR兼容,但它们不能互换。HDFS是Hadoop FileSystem API的实现,它模拟POSIX文件系统行为。EMRFS是一个对象存储,而不是文件系统。
您可能会从阅读对象存储与文件系统的Hadoop文档中受益。
要了解有关AWS EMR存储和文件系统以及何时使用的更多信息,请阅读this
最后,如果你觉得这很有用,别忘了读这篇文章。

相关问题