1

我想将 TB 的数据从 S3 传输到 EC2 Windows Server,然后再传输回来,这在使用基本的AWS CLI Copy 命令时需要几个小时。为了帮助加快速度,我想使用AWS Data Pipeline , AWS Data Pipeline文档中的图形似乎表明数据至少可以从 EC2 流向 S3:

然而,我发现很难理解如何做到这一点。我见过的最接近的例子是通过使用ShellCommandActivity将数据从 S3 DataNode传输到 EC2,然后再将其复制回 S3 来暂存数据的概念。

相反,我想在已经运行的 Windows 实例上从 S3 复制数据,然后再将更多数据复制回 S3。

4

4 回答 4

1

我相信这可以在没有数据管道的情况下完成——主要是为了消除一些复杂性。这项工作可以使用 AWS CLI 完成,Windows XP 及更高版本也提供此服务。如果您的机器上没有 AWS CLI,请查找 MSI 安装程序。

在 *nix 上:

aws s3 cp --recursive s3://somebucket ./

将 s3 存储桶内容复制到执行目录。

于 2015-05-13T17:42:27.280 回答
1

简而言之,我认为您无法在此用例中使用 AWS DataPipeline 获得任何性能优势。

原因是Windows 平台不支持Task Runner(Data Pipeline 使用的执行程序)。因此,您尝试运行的任何活动实际上都会在不同的平台上运行,然后您会将其 scp/sftp 到您的机器上。

有多种方法可以将数据拉入其他平台上的 EC2 实例:

  1. 使用 ShellCommandActivity:它不仅允许您使用 env vairables从 S3 上传和下载,例如 INPUT1_STAGING_DIR。尽管他们的文档没有提到他们的实现或性能改进,但我相信它正在使用 S3 的多部分 API 进行并行拉取。
  2. 使用EMR + s3distcp并将其放入 HDFS,然后使用getMerge从 HDFS 将其放入本地磁盘
于 2015-05-18T23:40:23.753 回答
1

您需要 Windows 机器上的所有这些数据吗?还是您要间歇性地访问它?

您可以尝试仅安装您的 S3 存储桶。

它仍然是远程的,但会像 Windows 中的普通安装驱动器一样工作。如果您需要进行一些数据处理,那么只需将您当时需要的文件复制到本地磁盘。您可以使用 S3browser、Cloudberry 或其他一百个 S3 客户端安装 S3。

于 2015-05-19T20:53:58.283 回答
1

最后,我能够使用数据管道将数据从 ec2 传输到 s3。

脚步:

  1. 首先,我们需要让一个任务运行器运行到 ec2 机器上。
  2. aws s3 无法与您的 ec2 集群一起使用,因为 ec2 没有您的 s3 存储桶的权限;使用 aws configure 添加访问密钥和密码。
  3. 创建一个数据管道,架构师添加 shellcommand 活动。为您的 sh 使用脚本路径,该路径可能具有诸如 aws s3 cp /var/tmp/xyz s3://abc; 之类的命令 最重要的是添加工作组,它表示您在 ec2 上启动的任务运行器。

    参考:http ://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-how-task-runner-user-managed.html

于 2016-05-12T11:28:12.600 回答