在 AWS 上构建 Cloudera CDH 集群:实例和存储
Architect a Cloudera CDH cluster on AWS: instances and storage
我对在 AWS 上部署 CDH 有一些疑问。我阅读了参考架构文档和其他 material 我在 Cloudera 工程博客上找到的,但我需要更多关于它的建议。
1) CDH 部署是否仅适用于某些类型的实例,还是我可以将其部署在所有 AWS 实例类型上?
2) 假设我想创建一个 24x7 活动的集群。对于 long-运行 集群,我知道最好有一个基于本地存储实例的集群。如果我们考虑一个 2PB 集群,我认为 d2.8xlarge 应该是数据节点的最佳选择。关于主节点:- 如果我只想部署 3 个主节点,将它们也作为本地存储实例还是作为 EBS 附加实例更好,以便能够对可能的主节点故障做出快速反应? - 是否有一些关于主节点实例类型(EBS 或本地存储)的最佳实践?关于数据节点:- 如果一个数据节点出现故障,CDH 是否有一些自动化机制来自动启动一个新实例并将其连接到集群,以便在不停机的情况下恢复集群?我们必须从头开始构建脚本来做这件事吗?关于边缘节点:- 是否有一些关于实例类型(EBS 或本地存储)的最佳实践?
3) 如果我想在 S3 上备份集群: - 当我从 CDH 执行 distcp 到 S3 时,我可以直接将数据移动到 Glacier 而不是普通的 S3 上吗?如果我对数据应用了一些压缩(例如 snappy、gzip 等)并且我对 S3 执行了 distcp: - S3 上占用的 space 是相同的还是 distcp 命令解压缩副本的数据?
如果我有一个基于 EBS 附加实例的集群:- 是否可以拍摄磁盘快照并使用从快照重建的 EBS 磁盘重新附加数据节点?
4) 如果我将数据节点部署为 r4.8xlarge 并且我需要更大的马力,是否可以即时将集群从 r4.8xlarge 扩展到 r4.16xlarge?在几分钟内连接和分离磁盘?
非常感谢您的澄清,希望我的疑惑也能对其他用户有所帮助。
1) 对于 CDH 组件可以工作的实例类型没有明确的限制,但您需要选择具有最小马力的类型。例如,我不希望微型实例适用于任何东西。太小的类型通常会导致守护进程 运行 内存不足。参考架构针对某些情况建议了实例类型。
2) 对于实例类型的根卷,您应该坚持使用 EBS。有几个原因,包括较新的实例类型甚至不支持根磁盘的本地实例存储。
CDH 没有在数据节点发生故障时替换它们的机制。您可以自己滚动一些东西,可能需要 Cloudera Director 的帮助。
3) 您可以为 S3 中的数据设置生命周期规则,随着时间的推移将其从标准存储 class 迁移到 Glacier,或者您可以直接写入 Glacier;看起来不能通过 s3a 连接器直接访问 Glacier。我很确定 distcp 和 S3 不会 fiddle 压缩;您复制的内容肯定对 S3 不透明。您可以对 EBS 卷(根卷或额外附加的卷)进行快照,然后分离它们并将它们重新附加到不同的实例;这不一定是备份数据节点与 distcp 路由的好方法,因为每个数据节点都是唯一的,并且随着集群 运行s.
的变化而变化的数据
4) 您可以调整 EBS 支持的 EC2 实例的大小,而无需分离和重新附加磁盘。您必须停止实例才能调整它的大小。
仅第 3 点:
- 您需要 distcp 到 S3 并通过 AWS 设置将其移动到冰川
- 它对数据、压缩等没有任何作用
- 查看(hortonworks 文档)Distcp and S3 并阅读其 warnings/caveats。特别是,增量 distcp 不是基于校验和的,原子 distcp 不是,它只是 "really slow distcp"
我对在 AWS 上部署 CDH 有一些疑问。我阅读了参考架构文档和其他 material 我在 Cloudera 工程博客上找到的,但我需要更多关于它的建议。
1) CDH 部署是否仅适用于某些类型的实例,还是我可以将其部署在所有 AWS 实例类型上?
2) 假设我想创建一个 24x7 活动的集群。对于 long-运行 集群,我知道最好有一个基于本地存储实例的集群。如果我们考虑一个 2PB 集群,我认为 d2.8xlarge 应该是数据节点的最佳选择。关于主节点:- 如果我只想部署 3 个主节点,将它们也作为本地存储实例还是作为 EBS 附加实例更好,以便能够对可能的主节点故障做出快速反应? - 是否有一些关于主节点实例类型(EBS 或本地存储)的最佳实践?关于数据节点:- 如果一个数据节点出现故障,CDH 是否有一些自动化机制来自动启动一个新实例并将其连接到集群,以便在不停机的情况下恢复集群?我们必须从头开始构建脚本来做这件事吗?关于边缘节点:- 是否有一些关于实例类型(EBS 或本地存储)的最佳实践?
3) 如果我想在 S3 上备份集群: - 当我从 CDH 执行 distcp 到 S3 时,我可以直接将数据移动到 Glacier 而不是普通的 S3 上吗?如果我对数据应用了一些压缩(例如 snappy、gzip 等)并且我对 S3 执行了 distcp: - S3 上占用的 space 是相同的还是 distcp 命令解压缩副本的数据?
如果我有一个基于 EBS 附加实例的集群:- 是否可以拍摄磁盘快照并使用从快照重建的 EBS 磁盘重新附加数据节点?
4) 如果我将数据节点部署为 r4.8xlarge 并且我需要更大的马力,是否可以即时将集群从 r4.8xlarge 扩展到 r4.16xlarge?在几分钟内连接和分离磁盘?
非常感谢您的澄清,希望我的疑惑也能对其他用户有所帮助。
1) 对于 CDH 组件可以工作的实例类型没有明确的限制,但您需要选择具有最小马力的类型。例如,我不希望微型实例适用于任何东西。太小的类型通常会导致守护进程 运行 内存不足。参考架构针对某些情况建议了实例类型。
2) 对于实例类型的根卷,您应该坚持使用 EBS。有几个原因,包括较新的实例类型甚至不支持根磁盘的本地实例存储。
CDH 没有在数据节点发生故障时替换它们的机制。您可以自己滚动一些东西,可能需要 Cloudera Director 的帮助。
3) 您可以为 S3 中的数据设置生命周期规则,随着时间的推移将其从标准存储 class 迁移到 Glacier,或者您可以直接写入 Glacier;看起来不能通过 s3a 连接器直接访问 Glacier。我很确定 distcp 和 S3 不会 fiddle 压缩;您复制的内容肯定对 S3 不透明。您可以对 EBS 卷(根卷或额外附加的卷)进行快照,然后分离它们并将它们重新附加到不同的实例;这不一定是备份数据节点与 distcp 路由的好方法,因为每个数据节点都是唯一的,并且随着集群 运行s.
的变化而变化的数据4) 您可以调整 EBS 支持的 EC2 实例的大小,而无需分离和重新附加磁盘。您必须停止实例才能调整它的大小。
仅第 3 点:
- 您需要 distcp 到 S3 并通过 AWS 设置将其移动到冰川
- 它对数据、压缩等没有任何作用
- 查看(hortonworks 文档)Distcp and S3 并阅读其 warnings/caveats。特别是,增量 distcp 不是基于校验和的,原子 distcp 不是,它只是 "really slow distcp"