我正在尝试在Amazon EKS集群上运行我的Spark作业。我的Spark作业需要在每个数据节点/工作人员/执行者处有一些静态数据(参考数据),并且该参考数据可在S3上获得。
有人可以帮助我找到一个干净且性能优异的解决方案,以将S3存储桶安装在吊舱上吗?
S3 API是一个选项,我正在将其用于输入记录和输出结果。但是“参考数据”是静态数据,因此我不想在我的spark作业的每次运行/执行中下载它。在第一次运行时,作业将下载数据,而即将进行的作业将检查数据是否在本地可用,而无需再次下载。
答案 0 :(得分:3)
我们最近开放了一个项目,该项目旨在为您自动化这些步骤:https://github.com/IBM/dataset-lifecycle-framework
基本上,您可以创建一个数据集:
apiVersion: com.ie.ibm.hpsys/v1alpha1
kind: Dataset
metadata:
name: example-dataset
spec:
local:
type: "COS"
accessKeyID: "iQkv3FABR0eywcEeyJAQ"
secretAccessKey: "MIK3FPER+YQgb2ug26osxP/c8htr/05TVNJYuwmy"
endpoint: "http://192.168.39.245:31772"
bucket: "my-bucket-d4078283-dc35-4f12-a1a3-6f32571b0d62"
region: "" #it can be empty
然后您将获得一个可以安装在吊舱中的pvc
答案 1 :(得分:0)
通常,您只是不这样做。相反,您应该直接与S3 API交互以检索/存储所需的内容(可能通过aws cli等工具)。
在AWS中运行时,可以通过以下方式配置IAM:节点可以访问“基础结构”级别上授权的特定数据,或者可以通过secrets / confogmaps / env等提供S3访问令牌。
S3不是文件系统,所以不要指望它像一个文件系统(即使有FUSE客户端可以模拟FS来满足您的需求,这也不是正确的解决方案)