AWS EMR Bootstrap 操作 "aws s3 cp ..." 下载 11GB 文件由于 [Errno 28] 没有 space 留在设备上而失败
AWS EMR Bootstrap action "aws s3 cp ..." to download 11GB file failing due to [Errno 28] No space left on device
我正在尝试使用 AWS 控制台启动一个 EMR 集群(包括 HBase 和 Zookeeper),该集群的启动脚本从 s3 下载 11GB 的数据,然后将该文件放入 HDFS。
我有一个 shell 脚本,其中包含行
aws s3 cp s3://path/to/eleven/gb/of/data local/ --recursive
hdfs dfs -put local/ /
脚本在 s3 上,当我启动集群时,我包含一个 Bootstrap 操作,指向 s3 上的 shell 脚本。
但是,集群无法启动并出现此错误:
Terminated with errors: On the master instance (i-036fb1c03d99115a8), bootstrap action 1 returned a non-zero return code
当我查看日志时,我在 stderr 输出中看到了这个
download failed: s3://path/to/eleven/gb/of/data/d/95d969cadfa644de8d1b2793e0df7822 to local/d/95d969cadfa644de8d1b2793e0df7822 [Errno 28] No space left on device
stdout输出的最后一行是
Completed 5.1 GiB/11.0 GiB (49.5 MiB/s) with 1 file(s) remaining
在集群的配置中,对于每个节点,我都将根设备 EBS 卷大小设置为 100GB,所以我不太清楚为什么下载 5.1 后设备上没有 space GB 的数据。
EMR bootstrap 作为 hadoop
用户运行,工作目录 /home/hadoop
.
主目录没有太多存储空间。
根据您的配置,它似乎限制为 5.1 GB。
您可以将文件放在主目录以外的其他位置(例如 /etc/temp
)。
或者更好的方法是使用 1 步过程而不是 2 步过程,即使用 s3-dist-cp
从 S3 直接复制到 HDFS。
您可以找到更多详细信息 here.
而且我认为这将是无需任何配置更改的最佳解决方案,因为 EMR 预装了 s3-dist-cp
。它还可以通过并行复制文件来节省时间。
还有一个方法:
您可以使用 EMRFS.
而不是 HDFS
有了这个你根本不需要下载,但比普通的 S3 成本更高。但也有很多优势。
您可以从 this
开始
我正在尝试使用 AWS 控制台启动一个 EMR 集群(包括 HBase 和 Zookeeper),该集群的启动脚本从 s3 下载 11GB 的数据,然后将该文件放入 HDFS。 我有一个 shell 脚本,其中包含行
aws s3 cp s3://path/to/eleven/gb/of/data local/ --recursive
hdfs dfs -put local/ /
脚本在 s3 上,当我启动集群时,我包含一个 Bootstrap 操作,指向 s3 上的 shell 脚本。
但是,集群无法启动并出现此错误:
Terminated with errors: On the master instance (i-036fb1c03d99115a8), bootstrap action 1 returned a non-zero return code
当我查看日志时,我在 stderr 输出中看到了这个
download failed: s3://path/to/eleven/gb/of/data/d/95d969cadfa644de8d1b2793e0df7822 to local/d/95d969cadfa644de8d1b2793e0df7822 [Errno 28] No space left on device
stdout输出的最后一行是
Completed 5.1 GiB/11.0 GiB (49.5 MiB/s) with 1 file(s) remaining
在集群的配置中,对于每个节点,我都将根设备 EBS 卷大小设置为 100GB,所以我不太清楚为什么下载 5.1 后设备上没有 space GB 的数据。
EMR bootstrap 作为 hadoop
用户运行,工作目录 /home/hadoop
.
主目录没有太多存储空间。
根据您的配置,它似乎限制为 5.1 GB。
您可以将文件放在主目录以外的其他位置(例如 /etc/temp
)。
或者更好的方法是使用 1 步过程而不是 2 步过程,即使用 s3-dist-cp
从 S3 直接复制到 HDFS。
您可以找到更多详细信息 here.
而且我认为这将是无需任何配置更改的最佳解决方案,因为 EMR 预装了 s3-dist-cp
。它还可以通过并行复制文件来节省时间。
还有一个方法:
您可以使用 EMRFS.
而不是 HDFS
有了这个你根本不需要下载,但比普通的 S3 成本更高。但也有很多优势。
您可以从 this