AWS的大数据生态2

AWS的一系列大数据服务都与IAM等基础服务集成,而且服务之间也相互集成,数据在服务间的传输快、成本低,这样使用起来就方便很多。就单个服务来说,AWS与该领域的最流行的开源工具或第三方产品相比往往是有差距的,有时差距还比较大,但统筹考虑整体,AWS还是有它的优势。一方面服务的实现统一,服务间集成方便,另一方面AWS的对自己各种服务的改进速度还比较快,再者AWS的生态开放,用户可以自行在EC2或者EMR之上搭建自己想要的工具软件,所以经常是用户先使用一两个基础服务,然后不断再去试用更多服务。

Collection

数据收集主打Kinesis和SQS。Kinesis又分Kinesis Stream和Kinesis firehose,Firehose相当于Stream的简化版和connector。Firehose是完全由AWS管理的服务,Shard和缓存扩展都自动完成,而Stream则要预先手动配置好Shard;Firehose直接接入到S3, Redshift、ElasticSearch和Splunk(注意没有DynamoDB),而Stream则由用户配置consumer。Firehose可以做为Stream的connector接入AWS服务中。

SQS是AWS的最早的服务之一。SQS和Kinesis有很多相似之处,可以说Kinesis也是一种分布式消息队列。SQS支持的最大消息是256KB,而Kinesis是1MB,但对于大于256KB的消息可以先上传到S3,再放metadata放入队列中。Kinesis可以直接与S3等服务集成,也可以与Kinesis Analytics集成进行实时的数据分析,另外Kinesis支持Reply,多个consumer可以按照相同的顺序提取消息。SQS就是单纯的消息队列,使用简便,可以与Autoscaling搭配使用,一个经典使用案例是上传图片到S3中,S3发event到SQS,然后Autoscaling根据队列的长度来配置EC2处理图片。就使用费率来说,Kinesis更适合使用大量的流式消息收集,尤其适用于IoT的应用场景。Kinesis按Shard计费,单个Shard支持1MB/s写和2MB/s读,而SQS是按Transaction计费,所以当消息数据量很大时,Kinesis的费用就要比SQS便宜很多,单个Kinesis Shard的吞吐量折算到等量的SQS,费用要高三到四倍。

IoT也是大数据的重要来源,AWS IoT服务由Rule Engine负责数据收集,Rule Engine可以直接把数据直接送入S3,DynamoDB,Kinesis等很多服务中,但不能直接送入Redshift,因为先要对规整数据源。Data Pipeline是数据迁移服务,适合一次性或者重复的数据迁移工作,比如从RDS或者Redshift中备份数据到S3。Data Pipeline比一般的cron job强大的地方是它可以在数据迁移过程中调度EMR进行数据处理,另外Data Pipeline还提供on-premise的task runner,从on-premise迁移数据到AWS。EMR Sqoop则是一个开源版本和数据迁移服务。

GB到几个TB级别的数据传输使用网络很方便,但到百TB或者PB级别使用物理方法搬运数据往往更快,这就是AWS的Snowball,其实就是数据的物理快递服务。企业使用网络向AWS迁移数据时一般要建立专线Direct Connec连接,另外可以启用S3 Transfer Acceleration服务以加快S3写入。

Storage

数据存储首推S3,然后NoSQL使用DynamoDB,OLTP (online transaction processing) SQL使用RDS,OLAP (online transaction analysing) SQL使用Redshift,log分析使用ElasticSearch。S3中的数据可以直接由Athena进行数据分列,Redhift使用Copy或Unload从S3读或写数据的效率最高。Reshift是列存储数据库,适合分析但不适合按行操作的Transcaional操作。OLTP SQL数据库一般都建议使用RDS,自行搭建的意义不大,但基于EMR架设的NoSQL HBase和SQL warehouse Hive却比较常见,因为HBase和Hive相比DynamoDB和Redshift都具有很多不好替代的特点,比如对DynamoDB中item最多400KB,而HBase的每项数据大小灵活可设,默认值 为10GB,最高可达100GB。

EMR支持HDFS和EMRFS,HDFS是建立在EBS存储上的,EMR集群终止后EBS也将被删除,而EMRFS是建立的S3之上,可以持续的保持EMR文件系统中的数据。S3支持Eventually Consistent,为了保证读取写入数据的一致性需要打开EMRFS consistent view。

数据的备份一般都使用S3,Redshift直接与S3集成,DynamoDB和RDS可以使用Data Pipeline备份数据到S3。在S3中可以设置Policy将数据放入Glacier中,这是普遍的使用场景。注意不能直接写入Glacier,必须先将数据放在S3中。S3还支持 cross-region replication,使用AWS的Backbone网络快速进行多区域数据备份。

Process

Kinesis与Lambda可以实现对于流式数据的轻量级实时处理,由Lambda进行数据转换、格式转换和检查等操作,再写入到数据存储中。这种serverless架构使用非常方便,但要注意lambda有运行5分钟的限制,从Kinesis中读取数据也消耗Shard读带宽,需要设置合适的批处理(batch size)大小。复杂的处理需要借助Kinesis consumer,这些都在数据预理的范畴,当大量数据存入到S3中后,就要使用EMR进行进一步的处理。

EMR适用于离线的大量数据处理,对于非全时的任务可以考虑使用Transient集群和spot task node,当任务结束后就终止,以节省使用费用。

你可能感兴趣的:(AWS的大数据生态2)