问:什么是 Amazon Redshift?
Amazon Redshift 是一种快速且完全托管的数据仓库,可让您以轻松而经济的方式使用标准 SQL 和现有商业智能(BI)工具分析您的所有数据。使用该数据仓库,您可以使用复杂的查询优化、高性能本地磁盘中的列式存储以及大规模执行的并行查询对 PB 级结构化数据运行复杂的分析查询。只需几秒即可返回大多数结果。使用 Redshift 时,您可以从无需承诺的每小时费用入手,并以不到传统解决方案十分之一的成本扩展至 PB 级数据。Amazon RedShift 还包含 Amazon Redshift Spectrum,允许您对 Amazon S3 中的 EB 级非结构化数据直接运行 SQL 查询。无需加载或转换,而且您可以使用包括 Avro、CSV、Grok、Ion、JSON、ORC、Parquet、RCFile、RegexSerDe、SequenceFile、TextFile 和 TSV 等在内的开放数据格式。Redshift Spectrum 会根据检索的数据自动扩展查询计算容量,因此针对 Amazon S3 的查询可快速运行,不受数据集大小的影响。
传统数据仓库,尤其是大型数据集,需要投入大量的时间和资源进行管理。此外,与构建、维护和发展自行管理的本地数据仓库相关的财务成本非常高。随着数据量的增长,您必须不断权衡要加载到数据仓库的数据和要存档到存储中的数据,以便管理成本、保持较低的 ETL 复杂性并提供出色的性能。Amazon Redshift 不仅可以显著降低数据仓库的成本和运营开销,还可以利用 Redshift Spectrum 轻松分析大量本机格式的数据,而无需加载数据。
Redshift Spectrum 是一项 Amazon Redshift 功能,允许您对 Amazon S3 中的 EB 级非结构化数据运行查询,而无需加载或执行 ETL 流程。当您发出查询时,它将转到 Amazon Redshift SQL 终端节点,该终端节点会生成并优化查询计划。Amazon Redshift 将确定哪些数据在本地以及哪些数据在 Amazon S3 中,生成一项计划来最大限度地缩小需要读取的 Amazon S3 数据量,然后请求共享资源池中的 Redshift Spectrum 工作程序读取和处理来自 Amazon S3 的数据。
如有需要,Redshift Spectrum 可以扩展到数千个实例,因此无论数据大小如何,查询都会快速运行。而且,您可以在 Amazon S3 数据中使用当前用于 Amazon Redshift 查询的相同 SQL,并使用相同的 BI 工具连接到同一 Amazon Redshift 终端节点。借助 Redshift Spectrum,您可以将存储和计算分隔开来,独立扩展。您可以根据需要设置任意数量的 Amazon Redshift 集群来查询 Amazon S3 数据湖,从而实现高可用性和无限并发性。借助 Redshift Spectrum,您能够以所需格式将数据存储在所需位置,并在需要时让其可供处理。
问:什么是 Amazon Redshift Spectrum?
Redshift Spectrum 是一项 Amazon Redshift 功能,允许您对 Amazon S3 中的 EB 级非结构化数据运行查询,而无需加载或执行 ETL 流程。当您发出查询时,它将转到 Amazon Redshift SQL 终端节点,该终端节点会生成并优化查询计划。Amazon Redshift 将确定哪些数据在本地以及哪些数据在 Amazon S3 中,生成一项计划来最大限度地缩小需要读取的 Amazon S3 数据量,然后请求共享资源池中的 Redshift Spectrum 工作程序读取和处理来自 Amazon S3 的数据。
如有需要,Redshift Spectrum 可以扩展到数千个实例,因此无论数据大小如何,查询都会快速运行。而且,您可以在 Amazon S3 数据中使用当前用于 Amazon Redshift 查询的相同 SQL,并使用相同的 BI 工具连接到同一 Amazon Redshift 终端节点。借助 Redshift Spectrum,您可以将存储和计算分隔开来,独立扩展。您可以根据需要设置任意数量的 Amazon Redshift 集群来查询 Amazon S3 数据湖,从而实现高可用性和无限并发性。借助 Redshift Spectrum,您能够以所需格式将数据存储在所需位置,并在需要时让其可供处理。
问:Amazon Redshift 可代我管理哪些内容?
Amazon Redshift 管理设置、运行和扩展数据仓库所需的工作,从预置基础设施容量到自动执行持续管理任务(如备份和修补)一概囊括。Amazon Redshift 可自动监控节点和驱动器,帮助您从故障中恢复。对于 Redshift Spectrum,Amazon Redshift 可管理所有计算基础设施、负载均衡、计划、调度以及对 Amazon S3 中存储的数据执行的查询。
问:与大多数传统数据库相比,Amazon Redshift 在数据仓库和分析方面性能如何?
Amazon Redshift 采用多种创新技术,其数据仓库和分析工作负载方面的性能比传统数据库高出 10 倍:
列式数据存储:Amazon Redshift 不是将数据存储为一系列行,而是按列组织数据。与基于行的系统(最适合事务处理)不同,基于列的系统最适合数据仓库和分析,其中查询通常涉及在大型数据集上执行聚合。由于仅处理查询中涉及的列,并且在存储媒体上按顺序存储列数据,基于列的系统所需的 I/O 要少得多,从而大大提高了查询性能。
高级压缩:由于类似的数据按顺序存储在磁盘上,列式数据存储比基于行的数据存储更容易压缩。Amazon Redshift 采用了多种压缩技术,相对于传统的关系数据存储,它通常可以实现极大的压缩比。此外,Amazon Redshift 不需要索引或实体化视图,因此比传统的关系数据库系统使用的空间更少。将数据加载到空表中时,Amazon Redshift 会自动对数据进行采样,并选择最合适的压缩方案。
大规模并行处理(MPP):Amazon Redshift 自动跨所有节点分发数据和查询负载。Amazon Redshift 可以轻松地向数据仓库添加节点,并使您能够在数据仓库增长时保持快速的查询性能。
Redshift Spectrum:您可借助 Redshift Spectrum 对 Amazon S3 中的 EB 级数据运行查询。无需加载或执行 ETL 流程。即使您未在 Amazon Redshift 中存储任何数据,仍可使用 Redshift Spectrum 查询与 Amazon S3 中的 EB 级数据集大小类似的数据集。当您发出查询时,它将转到 Amazon Redshift SQL 终端节点,该终端节点会生成查询计划。Amazon Redshift 可确定哪些数据在本地以及哪些数据在 Amazon S3 中,生成计划来尽量减少需要读取的 Amazon S3 数据量,请求共享资源池中的 Redshift Spectrum 工作程序读取和处理来自 Amazon S3 的数据,然后将结果返回 Amazon Redshift 集群进行任何剩余处理。
问:如何开始使用 Amazon Redshift?
只需几分钟,即可从 Amazon Redshift 详情页面或通过 亚马逊云科技管理控制台注册并开始使用。如果您还没有 亚马逊云科技账户,系统将提示您创建账户。
要使用 Redshift Spectrum,您需要先将数据存储在 Amazon S3 中。然后,您可以在 Amazon Redshift 集群中定义有关这些数据的元数据,或在集群中注册 Hive 元数据存储中可能已经存在的元数据。您可以在 Amazon Redshift 集群中发出 CREATE EXTERNAL SCHEMA SQL 命令,从而在 Amazon Redshift 内将目录中的数据库定义或注册为外部 schema。然后,您可以使用本地表中采用的同一 SQL 以及目前支持 Amazon Redshift 的任何 BI 工具,发出针对 Amazon S3 的查询。您使用 Amazon Redshift SQL 创建的外部数据库定义将在 Amazon Athena 使用的同一数据目录中注册。您也可以选择通过 Amazon Athena Catalog 管理外部数据库定义。
问:如何创建和访问 Amazon Redshift 数据仓库集群?
您可以使用 亚马逊云科技 管理控制台 或 Amazon Redshift API 轻松创建 Amazon Redshift 数据仓库集群。您可以从单节点的 160GB 数据仓库开始,只需在 亚马逊云科技管理控制台中单击几次或调用一次 API 即可将数据一直扩展到 PB 级别或更多。
单节点配置使您能够以经济高效的方式快速开始使用 Amazon Redshift,并随着需求增长扩展到多节点配置。Redshift 数据仓库集群可以包含 1-128 个计算节点,具体取决于节点类型。有关详细信息,请参阅我们的文档。
多节点配置需要一个领导节点来管理客户端连接和接收查询,以及两个计算节点来存储数据并执行查询和计算。系统将自动为您预置领导节点,您无需为此付费。
只需指定您的首选可用区(可选)、节点数量、节点类型、主名称和密码、安全组、备份保留首选项以及其他系统设置即可。选择所需配置后,Amazon Redshift 将预置所需资源并建立数据仓库集群。
数据仓库集群可用后,您可以从 亚马逊云科技管理控制台或使用 Redshift API 检索其终端节点及 JDBC 和 ODBC 连接字符串。然后,您可以将此连接字符串用于您最喜欢的数据库工具、编程语言或商业智能 (BI) 工具。您需要将网络请求授权给运行中的数据仓库集群。
问:领导节点有何用途? 计算节点有何用途?
领导节点可接收来自客户端应用程序的查询、解析查询并制定执行计划,即处理这些查询的一组有序步骤。然后,领导节点会与计算节点协调这些计划的并行执行、聚合这些节点的中间结果,并最终将结果返回客户端应用程序。
计算节点将根据执行计划执行指定步骤,并相互传输数据以处理查询。系统将中间结果发回领导节点进行聚合,然后再将其发回客户端应用程序。
问:每个计算节点的最大存储容量是多少? 为实现最佳性能,每个计算节点的推荐数据量是多少?
您可以使用密集存储(DS)节点类型或密集计算(DC)节点类型创建集群。利用密集存储节点类型,您能够以非常低的价格使用硬盘驱动器(HDD)创建超大型数据仓库。利用密集计算节点类型,您可以使用高速 CPU、大量 RAM 和固态硬盘(SSD)创建超高性能数据仓库。
密集存储(DS)节点类型有两种大小可供选择:超大型和八倍超大型。超大型(XL)节点有 3 个硬盘驱动器,共 2TB 的磁盘存储,而八倍超大型(8XL)节点有 24 个硬盘驱动器,共 16TB 的磁盘存储。DS2.8XLarge 有 36 个 Intel Xeon E5-2676 v3(Haswell)虚拟核心和 244GiB 的 RAM,DS2.XL 有 4 个 Intel Xeon E5-2676 v3(Haswell)虚拟核心和 31GiB 的 RAM。有关更多详细信息,请参阅我们的定价页面。
密集计算(DC)节点类型也有两种大小可供选择。大型节点具有 160GB 的 SSD 存储,2 个 Intel Xeon E5-2670v2(Ivy Bridge)虚拟核心和 15GiB 的 RAM。八倍超大型节点是大型节点的 16 倍,具有 2.56TB 的 SSD 存储、32 个 Intel Xeon E5-2670v2 虚拟核心和 244GiB 的 RAM。您可从单个 DC2.Large 节点开始,然后一路扩展至 128 个 8XL 节点,从而获得 326TB 的 SSD 存储、3200 个虚拟核心和 24TiB 的 RAM。
使用 Amazon Redshift 的 MPP 架构,您可以通过增加数据仓库集群中的节点数量来提高性能。每个计算节点上的最佳数据量取决于您的应用程序特性和查询性能需求。Amazon Redshift 数据仓库集群可以包含 1-128 个计算节点,具体取决于节点类型。
问:分别在哪些时候使用 Amazon Redshift 和Amazon RDS?
Amazon Redshift 和 Amazon RDS 都可让您在云中运行传统的关系数据库,同时卸下数据库管理工作的重担。客户将 Amazon RDS 数据库用于在线事务处理(OLTP)以及报告和分析。Amazon Redshift 利用多节点的规模和资源并进行各种优化,相比传统数据库具有显著改进,适用于非常大的数据集的分析和报告工作负载。随着数据和查询复杂性的增加,或者需要避免报告和分析处理干扰 OLTP 工作负载的性能,Amazon Redshift 提供了上佳的横向扩展方案。
问:为什么应该使用 Amazon Redshift,而不是在 Amazon EC2 上运行我自己的 MPP 数据仓库集群?
Amazon Redshift 会自动处理大量与管理您自己的数据仓库相关的耗时任务,包括:
设置:使用 Amazon Redshift,您只需创建数据仓库集群、定义 schema,然后开始加载和查询数据。Amazon Redshift 会代您管理所有预置、配置和修补工作。
数据持久性:Amazon Redshift 会在数据仓库集群中复制您的数据,并将数据持续备份至 Amazon S3,旨在达到 99.999999999% 的持久性。Amazon Redshift 会将每个驱动器的数据镜像到集群中的其他节点。如果驱动器发生故障,查询将继续进行,只是延迟会略有增加,同时 Redshift 会从副本重建驱动器。如果出现节点故障,Amazon Redshift 会自动预置新节点,并开始从集群内的其他驱动器或 Amazon S3 中恢复数据。它会优先恢复查询最频繁的数据,以便最常执行的查询能够快速恢复性能。
扩展:当容量和性能需求发生变化时,只需调用一次 API 或在 亚马逊云科技管理控制台中单击几次,即可在 Amazon Redshift 数据仓库集群中添加或删除节点。
自动更新和修补:Amazon Redshift 会自动应用升级并修补数据仓库,以便您专注于应用程序本身而非管理工作。
EB 级查询功能:您可借助 Redshift Spectrum 对 Amazon S3 中的 EB 级数据运行查询。无需加载或执行 ETL 流程。即使未在 Amazon Redshift 中存储任何数据,仍可使用 Redshift Spectrum。