written by
Just4test

AWS认证 Big Data Specialty 学习笔记

4 min read , January 3, 2020

这篇笔记仅补足个人知识图谱,并非完整的知识体系,请谨慎参考😊

词汇表

Kinesis Data Streams

用于收集实时数据流的服务。也指该服务内的数据流

Kinesis Data Streams applications

消费Kinesis Data Streams 内数据的应用程序

KPL,Kinesis Producer Library

Kinesis生产者库,用于向Kinesis Data Streams发送数据

KCL, Kinesis Client Library

Kinesis消费者库,用于从Kinesis Data Streams读取数据

Kinesis Data Firehose

用于将实时流传输到目标(处理组件)

Kinesis Data Analytics

通过SQL对实时流进行查询,并将查询结果作为一个新的流输出。这是一个无服务器服务。

Kinesis Video Streams

用于收集实时视频流的服务

Apache Hadoop

一个分布式处理框架和编程模型。使用MapReduce方式,在大型集群上处理大量数据的框架。

SerDe

Serializer/Deserializer 的缩写,序列化/反序列化器。在Athena中用于解析不同的数据格式,例如 CSV、JSON、Parquet 和 ORC。

HDFS

Hadoop分布式文件系统

EMRFS

另一种HDFS实现,数据存储于S3。

Apache HBase

Hadoop的非关系型分布式数据库组件,运行于HDFS。

Apache Hive

运行在Hadoop集群上的开源数据仓库和分析套装软件,使用类似SQL的Hive QL执行查询。内嵌于EMR。相比于开源版,EMR Hive添加了以下功能:

  • 自动从S3加载表分区
  • 从S3加载脚本
  • 直接将查询结果写回S3
  • 导出元数据

Facebook Presto

一种快速 SQL 查询引擎,专为对来自多个源的大型数据集进行【交互式分析查询】而设计。内嵌于EMR。

Apache Phoenix

一个关系数据库引擎,以HBase作为后台存储。用于联机事务处理和操作分析,支持标准SQL和JDBC API。

Apache Sqoop

在 S3、Hadoop、HDFS 和 RDBMS 数据库之间传输数据的工具。内嵌于EMR。

Apache HCatalog

用于访问 Pig、Spark SQL 和/或自定义 MapReduce 应用程序中的 Hive 元存储表。HCatalog 具有 REST 接口和命令行客户端,可让您创建表或执行其他操作。随后,您使用 HCatalog 库编写应用程序以访问表。

Apache Tez

一个基于有向无环图的框架,某些情况下可以替代MapReduce。比如Pig和Hive既可在MapReduce中运行,也能在Tez中运行。

Apache Pig

把类似SQL的请求转化为MapReduce指令并在Hadoop上运行。这简化了数据分析过程,因为不用编写Java代码。

Apache Mahout

运行在Hadoop上的机器学习框架

Hadoop 用户体验,Hadoop Hue

用于 Hadoop 的开源Web图形用户界面。将多个不同的 Hadoop 生态系统项目组合在一起,形成一个可配置界面。

Apache Oozie

管理和协调Hadoop任务的工具。其Web界面可以在Hue中使用。

Apache Spark

与Hadoop MapReduce类似,是一个分布式处理框架和编程模型。最大的区别是Spark的数据存储在内存中,以及支持更丰富的编程模型。特别的,Spark支持机器学习。

Apache Livy

使用REST与Spark集群交互。可以使用 REST 接口或 RPC 客户端库提交 Spark 任务或 Spark 代码段、同步或异步检索结果并管理 Spark 上下文。

Apache Zeppelin

类似Jupyter的交互式笔记本

Ganglia

监控集群和网格,同时尽量减少对其性能的影响。可以生成报告并查看整个集群的性能,或检查单个节点实例的性能。此外还可提取和可视化 Hadoop 和 Spark 指标。

AWS Schema Conversion Tool, AWS SCT

数据库范式转换工具。可以将一种关系型数据库转换到另一种RDS数据库,以及将多种数据仓库转换为Redshift,还可以将Apache Cassandra转换为DynamoDB。


横向辨析

压缩算法

输入

  • Kinesis Data Streams:API/SDK、KPL、Kinesis Agent
  • Kinesis Data Firehose:API/SDK、Kinesis Agent、Data Streams、IoT、Cloudwatch Logs、Cloudwatch Events
  • Kinesis Analytics SQL: Kinesis Data Streams、Firehose。还可以指定存储在S3中的引用数据。如有需要,指定Lambda进行数据预处理。
  • Kinesis Analytics for Java: Kinesis Data Streams。此外还可使用Flink支持的其他数据源。
  • Kinesis Video Streams:PutMedia API、创建者库(Producer SDK)

输出

  • Kinesis Data Streams:API、KCL、Firehose、Kinesis Analytics、Lambda(使用触发器)、EMR连接器,其他基于KCL的库:Kinesis Storm Spout、Kinesis Connector Library
  • Kinesis Data Firehose:S3、Redshift、ES、Splunk
  • Kinesis Analytics SQL:Kinesis Data Streams 、Firehose、Lambda
  • Kinesis Analytics Java: S3、Amazon DynamoDB、Amazon Kinesis Data Streams、Amazon Kinesis Data Firehose
  • Kinesis Video Streams:API、解析器库(parser library)

加密和访问控制

Athena

支持SSE-S3、SSE-KMS、CSE-KMS

Kinesis Data Streams

支持KMS加密。包含AWS托管CMK和用户CMK。

Kinesis Firehose

  • 当数据来源是Data Streams时,直接利用Data Streams作为静态加密
  • 否则,支持KMS加密。包含AWS托管CMK和用户CMK。

EMR

  • EMRFS:SSE-S3、SSE-KMS、CSE-KMS、CSE-C(通过自定义Java类)
  • HDFS:开源加密、Instance Storage的内建加密(默认,不可取消或更改)、EBS(账户级开启的Region默认加密或从EBS选项中开启)、LUKS加密(不应用于根卷)
  • 传输加密:由各个开源程序自身设置。
  • 当使用Kerberos身份验证时,支持用户名/密码和Microsoft AD。
  • 也可使用SSH密钥直接连接EC2。

Redshift

  • 仅启动集群时可选集群静态加密。和
  • 可通过IAM及集群安全组限制对集群的访问。
  • 可以使用SSL连接到集群,还可以配置集群以拒绝非加密连接。
  • 使用增强型VPC路由配合Service Endpoints及其他网络组件确保集群使用内网连接。

ElasticSearch

  • 只有创建域时才可以启用基于KMS的静态加密。包含AWS托管CMK和用户CMK。
  • 索引、ES日志、交换文件、应用目录中所有其他数据、自动快照会加密。手动快照不会加密。可以手动关联KMS的CMK以开启ES的CloudWatch Logs加密。
  • 只有创建域时才可以启用节点到节点加密。
  • 可启用“要求到域的所有流量都使用HTTPS”。
  • 建议使用IP白名单使Kibana可以匿名访问。结合代理服务器、VPN或SSH隧道控制来源用户。可以使用Nginx与Cognito的组合进行身份验证。

KMS的CMK类型

  • 客户托管CMK:客户对该CMK有完全控制权。收取存储费用和使用费用。
  • AWS托管(managed)CMK:AWS对该CMK有控制权。客户可以看到,但无法控制,包括轮换、删除、变更访问策略等。不收存储费用,但需要使用费。每个客户的托管CMK是互相隔离的。
  • AWS拥有的(owned)CMK:用户不可见,不可感知,使用中完全无感,也不收取任何费用。客户们使用相同的CMK。

数据库、数据仓库和数据湖

Database, Data Warehouse(DW or DWH) and Data Lake
数据库为支持在线业务设计。有的业务对一致性(事务)有很高要求,有的业务需要支撑大量并发用户。有时会使用缓存或从业务层面拆分查询语句以提高并发处理性能,有时会将历史数据存档以减少数据库存储容量。
其主要优化方向是在低延迟的情况下每秒处理大量事务。

数据仓库为支持分析决策设计。这种分析通常使用很复杂的查询语句,进行复杂的连表查询,并涉及到大量历史数据。
主要优化方向为在大存储量下单一复杂查询的性能。

数据湖是企业原始数据的集中存放地。数据库和数据仓库在写入数据之前通常需要预先设计schema,并将符合schema的数据导入。数据湖则直接存放原始数据格式,在进行查询分析时才读出并转换为需要的schema。除了运行SQL查询外,还可以进行大数据分析、全文搜索、实时分析和机器学习等。
AWS上的数据湖通常使用S3存储数据,使用AWS Glue或自定义方式转换数据,使用Athena、EMR、Redshift或用户自有软件进行分析查询。

Athena

使用Presto提供SQL查询,并使用Apache Hive提供DDL功能。因此可以和Glue很好地结合。Athena可以使用Glue数据目录,也可以使用Athena内部的数据目录。

加密:支持SSE-S3、KMS支持的服务端和客户端加密(SSE-KMS和CSE-KMS)、,不支持用户提供密钥的服务端加密和非KMS支持的客户端加密。

DynamoDB

支持自动缩放和按需。

  • 自动缩放,Auto Scalling:指定已使用容量比例范围,从而在高于该范围时自动扩容,低于该范围时自动缩容。但自动缩放有延迟,仍可能遇到限流。
  • 按需,On-Demand:不会遇到限流问题,但较贵。
  • 突增容量,Burst Capacity:DynamoDB保留300s的未使用容量,并用于偶尔突发的大量读写。突增容量消耗完之前不会限流。突增不适合按需。
  • 分区,Partitions:DynamoDB将数据存储和读写流量分配到不同的服务器(用户不可见)上,每个这样的服务器称为一个分区。单分区最多存储10G数据,并提供3000RCU和1000WCU。因此当单个分区的存储、WCU、RCU超限时,会自动拆分成两个分区。
  • 适应性容量,Adaptive Capacity:指当单个DynamoDB表具有多个分区时,不同的分区可以长期具有明显差异的读写容量。如果流量明显失衡,该功能还将自动在分区间平衡数据。但由于主键相同的一组项目总是存储在同一分区,因此任何主键相同的项目的总读写流量不能超过3000RCU/1000WCU。

TTL:可以为特定表指定一项属性名,并为该表中的所有记录添加该属性以允许该记录过期。
记录过期后通常在48小时内被后台的TTL服务自动删除。删除前该记录仍然可正常使用,即查询仍包含已经过期的记录。
没有ttl属性或已经过期5年以上的记录不会删除。
可以从DynamoDB流中获取被TTL服务自动删除的记录。

分区键随机化后缀:考虑以下情况:某表中记录的分区键是生成新记录的日期,形如2020-01-01;那么今天的所有新记录都将具有相同的分区键,导入对应分区写入过载。一个办法是在分区键末尾添加随机数,形如2020-01-01.xx,xx取值0-99。这样写入操作就可以分布到不同分区。但如果想查询某天的所有记录,需要针对所有可能的xx取值进行查询并合并查询结果。这个策略显著提高写吞吐量,但会复杂化读取。
如果xx是根据另一个业务参数计算得来,比如是用户id的哈希,则在查询该用户当天的所有记录时,可计算得知该用户的xx值,即可得知完整的分区键。善用这种策略可以改善读取,但并非所有业务都能使用此策略。

Data Pipeline

  • 管道定义:指定业务逻辑。可以通过console交互式设计或直接编写管道定义文件
  • 管道:在上传了管道定义后,管道创建EC2实例以执行工作。
  • 通过控制台可视化设计管道,或编写JSON格式的管道定义文件并通过CLI上传。
  • 使用DynamoDB、RDS、S3、Redshift存储数据,使用EC2、EMR转换数据。
  • 管道组件, Pipeline Components:提供管道的业务逻辑。包括数据源(data source)、活动(activities)、计划(schedule)和先决条件(preconditions)。
  • 任务运行程序, Task Runner:Pipeline的任务执行Agent,它轮询Pipeline以获取任务。Pipeline启动的EC2和EMR主节点上会自动安装TaskRunner。也可以在自己的设备上安装TaskRunner
  • 实例, Instances:Pipeline会编译管道组件并创建一组可操作EC2实例。每个实例包含特定任务所需信息。
  • 尝试, Appempts:自动重试失败操作,直到允许的重试次数上限。

Elasticsearch Service, ES

默认安装Kibana。Kibana与Cognito集成以提供身份验证,或者使用基于IP的策略/安全组。可以和代理服务器结合使用。

Logstash可以用于批量向ES上传数据。Logstash支持非常多的数据源,包括S3和Cloudwatch;支持过滤器,比如将非结构化数据转化为结构化数据、将IP转换为地理坐标、匿名化敏感字段等;然后输出到包含ElasticSearch之内的目标。

IoT

  • 设备网关:使设备能够安全高效地与 AWS IoT 进行通信。
  • 消息代理, Message Broker:实现基于主题的发布订阅,以便设备和应用程序互相通讯。还提供必要的安全机制。
  • 主题:消息代理使用主题将消息从发布者路由到订阅者。主题类似“Sensor/temperature/room1”。
    订阅主题时可使用通配符。
    有很多特别的主题可以触发动作,或监听事件。
  • 规则引擎:使用SQL过滤消息,并发送给其他服务。
  • 注册表:列出每台设备及其关联的资源。
  • 组注册表:将设备分组以便使用组管理多台设备。组是树状结构。
  • 设备影子:用于存储和检索设备的当前状态信息的JSON文档。
  • 设备影子服务:提供设备的永久性表示。当设备因为网络问题离线时,仍然可以检索该设备离线之前的状态,并向设备发布指令,以便设备连线后执行这些指令。

RedShift

基于PostgreSQL改进得来。
为了优化COPY速度,可以从S3上的多个文件中并行摄入数据
建议将大型数据文件分拆1G~1M的尺寸。建议使用128M以内的文件尺寸以获得最佳并行度。

增强型VPC路由,Enhanced VPC Routing:默认情况下Redshift的COPY和UNLOAD操作通过公网访问S3和其他服务。启用后,将使用VPC组件限制该访问的网络,以便利用安全组、VPC Endpoints、Internet网关等组件。

时间序列表:如果数据有固定保留期,可以将数据组织到一系列数据表中。比如,数据保留12个月并在每月初进行数据清理,则可以每月创建一个数据表,然后在月初使用“DROP TABLE”删除不需要的数据表。这远比在单个表中运行DELETE命令快得多。在查询时,使用 UNION ALL 视图。
如果以时间戳列排序数据,则加载数据速度更快。

顾问,Advisor:提供自动化的性能改进建议。通过分析集群的性能和使用量指标来制定其定制建议。可以在控制台查看这些建议。

工作负载管理, WLM:当在数据库中同时运行多个查询时,有时需要为不同用户发起的查询指定不同优先级,或者让后发起的短查询比先发起的长查询更快完成。可以使用WLM特性添加多个用户队列,并为用户队列指定优先级、用户组和查询组、并发扩展模式等。
WLM还支持短查询加速(SQA)。

分配方式,Distribution Style
另见:选择最佳分配方式选择最佳排序键评估查询计划

  • EVEN 分配:默认方式,自动切片
  • KEY 分配:按表中的指定列的值分配。经常用于多个表按特定列连接的场景。
  • ALL 分配:将表完整存储于所有节点。用于需要和其他表连接且当前表足够小的场景。
  • 除此之外,如果不指定分配方式,Redshift会自动选择合适的分配方式。

系统表和视图

常用命令

  • COPY:从数据文件或DynamoDB中读取数据并追加到当前表。
  • INSERT:插入单条或多条数据。单个SQL语句最大16MB,因此不应使用此语句承载大量数据插入Redshift。但此语句适合将一个表的数据拷贝到另一个表。“insert into target select * from stage;”
  • UNLOAD:将查询结果卸载到S3。支持以下加密:SSE-S3、SSE-KMS、CSE-CMK
  • VACUUM:对行重新排序,并回收指定表或当前数据库中所有表的空间。需要表所有者或者超级用户权限。
  • TRUNCATE:清除表。此命令比DELETE快得多。需要表所有者或者超级用户权限。

加密:可以将现有未加密集群迁移到KMS加密集群。迁移过程中集群处于只读模式,状态为“正在调整大小”。“跨区域快照复制”必须禁用。
无法为已有集群启用HSM加密。必须新建一个HSM加密集群,并稍后迁移数据。

Redshift 表设计最佳实践

  • 选择最佳排序键和最佳分配方式
  • 自动选择压缩编码而不是指定压缩编码
  • 列大小尽可能小
  • 使用日期数据类型而不是文本
  • 定义主键和外键约束——这有助查询优化,但必须注意并不会真正约束表中的数据。指定主键后仍然可以插入重复的主键,并且查询结果将出现异常。

Redshift 查询设计最佳实践

  • 根据最佳实践设计表
  • 仅包含需要的列。不要使用 "select *"
  • 使用CASE表达式执行复杂聚合代替同一表多次选择,以避免多次扫描表。
  • 避免使用交叉连接。
  • 如果查询中有一个表只用于谓词条件并且子查询返回的行数较少 (不足 200 行),可以使用子查询。
  • 使用谓词或WHERE尽可能限制数据集。
  • 使用谓词中的低成本运算符。避免在谓词中使用函数。
  • 在 GROUP BY 子句中使用排序键

Redshift Spectrum

类似Athena,直接对S3上的数据进行查询。相比Redshift,Spectrum无需预先COPY数据,并极具扩展性,可以处理EB级数据。
绝大部分的查询工作在Spectrum的有数千台EC2的池中执行,这一部分是Serverless的。但仍需要一个现有Redshift集群以完成一些预处理和后处理任务,并与用户现有的Redshift工作流程交互。因此用户必须已有一个Redshift集群才能使用该“Serverless”服务。
Spectrum 可以结合查询S3上的外部表和Redshift集群中的内部表。通常将大型事实表保存在S3,小型维度表保存在集群内。外部数据库和外部表的元数据存储在外部数据目录中。默认在 Athena 数据目录中,可以在Athena 控制台中查看。也可以放在Glue或其他Hive元存储中。

Kinesis

Kinesis Data Streams

  • 写入数据时,每个分片支持1000条记录/s,以及包括分区键的1MB/s限制。
  • 读出数据时,每个分片支持5次请求/s,以及2MB/s。可以使用增强扇出提升吞吐量。
  • 集合,Collection:使用“PutRecords”在单个API调用中写入多条记录。
    这减少了API调用开销,但无法影响1000条记录/s的限制。
  • 聚合,Aggregation:当使用KPL时,在单条Data Streams记录中存储多条KPL记录。
  • Data Streams向CloudWatch metrics发布流级指标,免费
  • 可以针对单个流启用付费的分片级指标。
  • KCL和KPL向CloudWatch metrics发布自定义指标,需要付费。
  • Kinesis 代理是一个Java程序,用于监控一组文件,将新数据发送到Data Streams或Data Firehose。通常用于发送日志文件。
  • 仅支持基于KMS的服务端加密。包括用户管理的主密钥和AWS管理的密钥。

KPL

  • 用于从单个机器上向Streams发送数据流,并最大化利用吞吐量。
  • 仅KPL支持聚合。
  • 内置的重试机制
  • 批量发送数据在提高了吞吐量的同时也带来了延迟(RecordMaxBufferedTime属性,默认100ms)。需要无延迟发送时,建议使用AWS SDK/API

聚合,Aggregation

单个Data Streams分片同时受1MB/s的吞吐量限制和1000条/s的记录数限制。这意味着如果记录平均大小小于1KB,则分片会因为记录数限制而无法到达吞吐量上限。
聚合是KPL的特性,允许在单条Data Streams记录中存储多条逻辑记录。因此这实际上提升了单个分区每秒能够写入的记录数量。
如果使用“聚合”写入记录,则读取记录时必须取消聚合,以便将多条逻辑记录从单条Data Streams记录中提取出来。KCL1.4.0版本以上会自动取消聚合。
经过聚合的数据从Data Streams传输到Firehose后,Firehose会自动取消聚合
或者使用KPL库手动取消聚合。
聚合还会破坏基于序列号的标识方式,因为多条逻辑记录会共享同一Data Streams记录的序列号。

Kinesis Agent

KCL

  • 支持取消聚合,增强扇出
  • 对于每个应用,KCL会自动创建单独的DynamoDB表。表中的每一个记录代表应用程序正在处理的分片。该表具有默认10/10的读写容量,因此有可能发生吞吐量异常。
  • 使用PUSH模型。注册消息处理器,消息会自动推送到处理函数。相比来说,SDK/API使用PULL模型。

增强扇出,Enhanced Fan-Out

每个分片受2MB/s的吞吐量限制,由所有消费者共享。
但可以通过付费的增强扇出功能,在每个分片上提供额外2MB/s的吞吐量,由单个消费者独享。
需要KCL2.0以上版本,或者使用API。还可以使用console删除增强扇出消费者(但不能注册)
每个流可以注册20个增强扇出消费者。

Kinesis 连接器库,Kinesis Connectors

一个基于KCL的Java库,用于连接Data Stream到DynamoDB、Redshift、S3和Elasticsearch。

Kinesis Data Firehose

  • 用于将流输出到存储或批量分析工具。单条记录最大1000KB。
  • 支持的数据源:AWS SDK、Data Stream、Kinesis Agent、CloudWatch Logs、CloudWatch Events、AWS IoT。
  • 输出目标:S3(缓冲区1-128M,缓冲时间60-900s)、Redshift(由COPY速度决定)、ES Service(1-100M,60-900s)、Splunk(5M,60s)。
  • 数据转换,Data Transformation:在输出到目标前可以使用Lambda进行批量数据转换。将缓冲默认3MB(可调整为最大6M)的数据,然后同步调用Lambda进行转换。建议使用Lambda蓝图以创建自定义数据转换函数。
  • 数据转换可以:
    将KPL或GZIP格式转换为Data Analytics适用的JSON或CSV格式
    复杂的字符串转换
    将存储在同一字符串的数据展开为多个列
    使用外源性数据或其他AWS服务进行数据丰富
  • 当数据转换失败时会重试3次,如果仍然失败,将在存储桶的“processing-failed”文件夹中存储失败日志。
  • 格式转换,Record Format Conversion:当输出目标是S3时,还可以进行额外的格式转换,将JSON转换为Parquet或ORC,这可以显著提高Athena的查询速度。如有必要,先使用Lambda将数据转换为JSON。
  • 支持GZip、Zip、Snappy压缩,或者不使用压缩。

用于将流输出。在输出前可以先通过Lambda进行数据转换。
加密:如果Data Firehose以Data stream为数据源,则直接在Data Stream上开启KMS加密。否则,使用StartDeliveryStreamEncryption指令开启服务端加密。
可输出到以下目标:

  • S3
  • Redshift,先传输到S3再自动使用COPY指令载入Redshift。可同时备份到另一个S3。
  • Amazon ES,可同时备份到S3
  • Splunk,可同时备份到S3

Kinesis Data Analytics for SQL

窗口式查询

  • 滑动窗口:在单一数据流下,使用固定时间间隔或固定行数限制查询。
    使用WINDOW子句。
  • 滚动窗口:当每隔特定间隔更换新数据流时,在单一数据流上的查询。
    使用GROUP BY子句。
  • 交错窗口:当数据流可能以非特定的时间间隔打开,查询可能跨越多个数据流时使用。
    使用WINDOWED BY STAGGER子句。

可以引用外部S3表,但限制为1GB。

  • ROWTIME,处理时间:在第一个传入流中自动插入的时间戳列。单调递增。
  • APPROXIMATE_ARRIVAL_TIME,接收时间:将记录添加到流式传输源的时间戳,也称为服务器时间。由于流数据的分布特点,偶尔会出现顺序问题。

输入到Data Analytics的数据源被映射为内部流(in-application stream)。流可理解为不断更新的临时表。然后使用数据泵(pump)不断将新的行插入该流。数据泵可理解为连续运行的插入查询。

Kinesis Data Analytics for Java Applications

以无服务器的形式运行基于Flink框架的流式分析程序。该程序在本地构建并上传到S3。

  • 连接器,Connectors:用于将数据移入和移出应用的组件。包含源,接收器和异步IO。
  • 源,Sources:从Data Streams,文件或其他数据源读入数据。
  • 接收器,Sinks:将数据发送到Data Streams、Firehose或其他数据目标。
  • 异步IO,Asynchronous I/O:以流事件形式提供对数据源的异步访问
  • 运算符,Operator:将一个或多个数据流转换为新的数据流。详见Apache Flink文档。可以使用
  • 转换运算符,Transform Operators:
  • 聚合运算符,Aggregation Operators:

Kinesis Video Streams

  • Video Stream可以传输视频、音频以及其他时间编码的数据流,比如雷达流。
  • 每块数据称为Video Streams chunks,由流数据块、业务元数据、Video Streams特定元数据组成。
  • 元数据:使用Key-Value字符串标记视频流。Key最长128,不能以“AWS”开头;Value最长256。每个视频片段最多附加10个元数据。
  • 持久性元数据:用于附带诸如摄像头经纬度坐标等数据。一直有效直到主动取消。
  • 非持久元数据:只对当前片段有效的数据。比如指示该片段中是否检测到运动。
  • 创建者库,Producer Libraries:虽然Video Streams提供了 创建者API,但更常用的是可运行在多个设备平台上的创建者库,或在Java和安卓平台提供的更高级封装创建者客户端 Producer Client。
  • 支持实时HLS输出,只需使用GetHLSStreamingSessionURL创建HLS会话URL。
    延迟通常在3-5s。单个流支持5个并发HLS会话。
  • 通过使用者API可以实时获取顺序视频流、以离线方式获取指定时间片段的视频流。

QuickSight

  • SPICE:QuickSight的超快并行内存内存式计算引擎。对于数据库数据源,可以选择将数据导入SPICE,或者直接在数据库中运行查询。对于非数据库数据源,必须使用SPICE。数据导入SPICE后,限制为1000个列,以及标准版:2500万行,25GB,企业版:1亿行,200GB。
  • 数据源:支持几乎全部全部AWS托管关系数据库、数据仓库、数据存储和外部数据库,但不支持DynamoDB、Elasticsearch、Neptune。
    支持JSON、CSV/TSV、ELF/CLF、XLSX。如果文件位于S3,还可以自动解压缩zip和gzip
  • 联接表:可以连接多个表并生成一个SPEIC数据集。除了最大的表之外,其余表的总和应小于1G。当所有被连接的表来自于同一个SQL数据源时,可以使用自定义SQL查询;否则,只能使用图表模式。图表模式可指定表之间的等价列,并使用内部联接、左外部联接和右外部联接、完全外部联接生成结果。
  • 视觉对象,Visuals:一个图表。每个视觉对象最初都由AutoGraph自动指定,但用户可以自行选择样式。
  • 数据分析, Data Analyses:创建视觉对象并与其交互的工作区
  • 视觉对象, Visuals:一个图表。每个视觉对象最初都由AutoGraph自动指定,但用户可以自行选择样式。
  • 建议的见解, ML Insights:自动根据数据评估提出可能有用的视觉对象。
  • 工作表, Sheets:一组放置在同个页面中一起查看的视觉对象。
  • 场景, Scene:使用“捕获”操作获得的当前分析中的视觉对象的当前状态。
  • 情节, Stories:一组场景的集合。可以像幻灯片一样播放一系列场景,例如用来查看分析的不同侧面。
  • 分析, Analyses:一组相关视觉对象和情节的容器。
  • 控制面板, Dashboard:分析的只读快照。可以与其他 QuickSight 用户共享,以便进行报告。
  • 用户:标准版可使用IAM凭证创建用户账户,或者使用Email创建。限100个用户。
    企业版可使用Microsoft AD、联合登陆或电子邮件邀请创建用户,数量无限。

图表样式

  • 表格
  • 数据透视表:显示两个维度的交集的度量值
  • 热度图:类似数据透视表,但带有颜色,适合识别趋势和离群值。
  • 地图
  • 折线图
  • 柱形图
  • 组合图:组合折线图和柱形图
  • 圆环图和饼图:比较维度中项目的值。此类图的最佳用途是显示总金额的百分比。
  • KPI:可视化关键值与其目标值之间的比较。
  • 量规图
  • 散点图:可视化维度的两个或三个度量。用平面上的气泡位置表示两个度量;可用气泡大小表示第三个度量。
  • 树形图:可视化维度的一个或两个度量。用矩形的大小表示一个度量;可用颜色表示第二个度量。
  • 文字云

EMR

EMR加密相当复杂,如果考我就放弃了

实例队列,Instance fleets:
允许在集群中方便地使用Spot实例。可指定最多5种实例类型及能接受的最高Spot价格。AWS会尝试启动指定容量的Spot实例,并以按需实例补足。
主节点、核心节点和任务节点各有一个实例队列。核心节点和任务节点的实例队列需要指定目标容量。主节点队列的容量始终是1。

默认情况下,Hive 会在主节点的文件系统上的 MySQL 数据库中记录元存储信息。当集群终止时,主节点会被终止导致元存储丢失。如果需要持久化元存储,可以将元存储指向外部MySQLAWS Glue Data Catalog

AWS Glue

通过数据目录自动发现并绘制数据,推荐并生成ETL代码以将源数据转换成目标架构。ETL将在全托管的Spark集群中运行。

  • 数据目录:中央元数据存储库,兼容Hive元存储(Hive Metastore)
  • ETL引擎:可自动生成Scala或Python代码
  • 计划程序:处理依赖关系、作业监控、重试
  • 爬网程序和分类器,Crawlers and Classifiers:可以扫描所有类型的存储库中的数据,对其进行分类,从中提取架构信息,并自动在 AWS Glue 数据目录中存储元数据。可用于指导ETL 操作。
  • ETL 操作, ETL Operations:
  • 作业系统,作业系统:

Amazon Comprehend

使用机器学习从文本中提取见解。可以处理以下内容:

  • 提取关键词:从一段文本中自动提取关键词,给出关键词出现次数和置信度。
  • 实体识别:类似提取关键词,但只提取实体。给出实体类型(组织、人物、地点等)。
  • 医学实体和关系提取(NERe):类似实体识别,但仅涉及医学部分;同时会指出相关关系,比如药品名和对应的用量。
  • 自定义实体:使用私有示例训练自定义模型,以进行实体识别
  • 语言检测:识别文本的语言。支持一百多种语言。
  • 情绪检测:给出文本情绪属于正面、负面、中性或混合的置信度。
  • 语法分析:把一段文本按单词切分,给出各个单词的词性。

Amazon Rekognition

用于图像和视频识别。可以识别以下内容:

  • 识别已经预训练的物体,指出其位置和标签
  • 识别不和谐的内容
  • 识别图像中的文本
  • 对于面孔,指出性别、年龄、眼镜、毛发、表情、情绪等数据
  • 存储面孔元数据,并在图像中对比发现数据库中的面孔
  • 识别名人
  • 在视频中识别人物运动轨迹

Amazon Mechanical Turk,MTurk

众包工作平台,常用于大量的数据标定。

Amazon Machine Learning

支持二分模型、分类模型、回归模型。

  • 二分模型:预测是或否。使用曲线下面积 (Receiver Operating Characteristic, AUC)作为准确性指标。
  • 分类模型:预测对象最可能属于多个类别中的哪一个。使用宏平均F1分数(Macro Average F1 Score)作为准确性指标。
  • 回归模型:预测数值指标。使用均方根误差(Root Mean Square Error, RMSE)衡量准确度。
  • 交叉验证:用于检测过拟合。将数据集拆分成k个子集(或称折叠),然后每次指定其中一个子集作为验证集,其他k-1个子集称为训练集,重复k次,最终得到k个模型。