您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 亚马逊 AWS大数据架构模式和最佳实践_曹玮祺
AWS大数据架构模式和最佳实践AWS大数据架构模式和最佳实践曹玮祺博士AWS中国解决方案架构师团队高级主管weiqicao@amazon.com曹玮祺博士AWS中国解决方案架构师团队高级主管weiqicao@amazon.com前所未有的大数据容量速率种类大数据的演进•批处理•报表•实时•警报•预测•预报应接不暇的大数据工具AmazonGlacierS3DynamoDBRDSEMRAmazonRedshiftDataPipelineAmazonKinesisCassandraCloudSearchKinesis-enabledappLambdaMLSQSElastiCacheDynamoDBStreams简化大数据的处理摄取/收集存储处理/分析消费/可视化数据解答应答时间(延迟)吞吐量成本数据类型•事务处理–数据库读写(OLTP)–缓存•搜索•日志•流•文件–日志文件(/var/log)–日志收集和框架•流–日志记录–传感器和IoT数据数据库文件存储流存储AiOSAndroidWeb应用Logstash日志记录应用程序事务性数据文件数据流数据移动应用搜索数据搜索收集存储物联网流存储AiOSAndroidWeb应用LogstashAmazonRDSAmazonDynamoDBAmazonESAmazonS3ApacheKafkaAmazonGlacierAmazonKinesisAmazonDynamoDBAmazonElastiCacheSearchSQLNoSQLCacheStreamStorageFileStorage事务性数据文件数据流数据移动应用搜索数据数据库文件存储搜索收集存储流存储选项•AWS托管服务•AmazonKinesis→流•DynamoDBStreams→表+流•AmazonSQS→队列•AmazonSNS→发布/订阅•非托管的•ApacheKafka→流日志记录应用程序物联网为什么使用流存储?•解耦生产者和消费者•持久的缓存•收集多个流•保留客户端顺序•流式MapReduce•并行消费44332211432143214321432144332211生产者1Shard1/Partition1Shard2/Partition2消费者1CountofRed=4CountofViolet=4消费者2CountofBlue=4CountofGreen=4生产者2生产者3生产者NKey=VioletKafkaTopicDynamoDBStreamKinesisStream我应该使用哪个流存储?AmazonKinesisDynamoDBStreamsAmazonSQSAmazonSNSKafka托管YesYesYesNo有序YesYesNoYes分发最少执行一次只执行一次最少执行一次最少执行一次有效期7天24小时14天可配置复制3可用区3可用区3可用区可配置吞吐量没有限制没有限制没有限制~节点并行客户端YesYesNo(SQS)YesMapReduceYesYesNoYes记录大小1MB400KB256KB可配置成本低较高(tablecost)低-中低(+admin)文件存储AiOSAndroidWeb应用LogstashAmazonRDSAmazonDynamoDBAmazonESAmazonS3ApacheKafkaAmazonGlacierAmazonKinesisAmazonDynamoDBAmazonElastiCacheSearchSQLNoSQLCacheStreamStorageFileStorage事务性数据文件数据流数据移动应用搜索数据数据库搜索收集存储日志记录应用程序物联网为什么AmazonS3善于处理大数据?•支持大数据框架(Spark,Hive,Presto,etc.)•不需要为存储运行计算集群(不像HDFS)•能瞬间运行Hadoop集群&AmazonEC2Spot实例•多个不同的(Spark,Hive,Presto)集群能使用相同的数据源•不限数量的对象存储•非常高的带宽–没有总吞吐量的限制•高可用性–可以容忍AZ失败•为99.999999999%持久性设计•分级存储(Standard,IA,AmazonGlacier)通过Life-cycle的策略•安全–SSL,客户端/服务端数据加密•低成本HDFS&AmazonGlacier•使用HDFS用于高频繁访问(热)数据•使用AmazonS3标准用于频繁访问数据•使用AmazonS3标准–IA用于非频繁访问数据•使用AmazonGlacier归档冷数据数据库+搜索层AiOSAndroidWeb应用LogstashAmazonRDSAmazonDynamoDBAmazonESAmazonS3ApacheKafkaAmazonGlacierAmazonKinesisAmazonDynamoDBAmazonElastiCacheSearchSQLNoSQLCacheStreamStorageFileStorage事务性数据文件数据流数据移动应用搜索数据收集存储日志记录应用程序物联网最佳实践—用正确的工具做正确的事情DataTierSearchAmazonElasticsearchServiceAmazonCloudSearchCacheRedisMemcachedSQLAmazonAuroraMySQLPostgreSQLOracleSQLServerMariaDBNoSQLCassandraAmazonDynamoDBHBaseMongoDB数据库+搜索层实例化视图数据结构和访问模式访问模式使用什么?Put/Get(Key,Value)Cache,NoSQLSimplerelationships→1:N,M:NNoSQLCrosstablejoins,transaction,SQLSQLFaceting,SearchSearch数据结构使用什么?FixedschemaSQL,NoSQLSchema-free(JSON)NoSQL,Search(Key,Value)Cache,NoSQL•数据结构→固定的模式、JSON格式、键-值对格式•访问模式→按照你将访问的格式存储数据•数据/访问特征→热数据、温数据、冷数据•成本→适合的成本我应该使用什么数据存储?你的数据/访问的温度是怎样的?数据/访问特征:热,温,冷HotWarmCold容量MB–GBGB–TBPB数据项大小B–KBKB–MBKB–TB等待时间msms,secmin,hrs持久性低–高高非常高请求率非常高高低成本/GB$$-$$-¢¢¢热数据温数据冷数据我应该使用什么数据存储?AmazonElastiCacheAmazonDynamoDBAmazonAuroraAmazonElasticsearchAmazonEMR(HDFS)AmazonS3AmazonGlacier平均等待时间msmsms,secms,secsec,min,hrsms,sec,min(~size)hrs数据容量GBGB–TBs(nolimit)GB–TB(64TBMax)GB–TBGB–PB(~nodes)MB–PB(nolimit)GB–PB(nolimit)数据项大小B-KBKB(400KBmax)KB(64KB)KB(1MBmax)MB-GBKB-GB(5TBmax)GB(40TBmax)请求率高–非常高非常高(没有限制)高高低–非常高低–非常高(没有限制)非常低存储成本GB/month$$¢¢¢¢¢¢¢¢¢/10持久性低–中等非常高非常高高高非常高非常高热数据温数据冷数据热数据温数据冷数据成本意识的设计举例:我应该使用AmazonS3还是AmazonDynamoDB?•“我们目前正在做一个项目,将大大增加我的团队使用AmazonS3的用量。希望你能回答一些问题。当前迭代的设计将访问很多小文件,峰值也许到十亿。总大小接近1.5TB每月…”请求率(Writes/sec)对象大小(Bytes)总大小(GB/month)每月的对象30020481483777,600,000请求速率(写/秒)对象大小(Bytes)总大小(GB/月)每月的对象3002,0481,483777,600,000AmazonS3还是AmazonDynamoDB?请求速率(写/秒)对象大小(Bytes)总大小(GB/month)每月的对象方案13002,0481,483777,600,000方案230032,76823,730777,600,000AmazonS3AmazonDynamoDB选用选用分析AiOSAndroidWeb应用LogstashAmazonRDSAmazonDynamoDBAmazonESAmazonS3ApacheKafkaAmazonGlacierAmazonKinesisAmazonDynamoDBAmazonRedshiftImpalaPigAmazonMLStreamingAmazonKinesisAWSLambdaAmazonElasticMapReduceAmazonElastiCache搜索SQLNoSQLCache流处理批量分析交互式分析日志流存储IoT应用文件存储热冷温热热机器学习事务性数据文件数据流数据移动应用搜索数据采集存储分析日志记录应用程序物联网数据处理/分析•交互式分析–需要大量的数据(温数据/冷数据)–秒级得到结果反馈–样例:自服务仪表板•实时分析–需要小量热数据和提出问题–短时间内得到结果反馈(毫秒级或者是秒级)–实时(事件)•数据流实时响应事件•样例:账单/欺诈警报–近实时(微-批量)•近乎实时的小批量数据流事件处理•样例:1分钟指标•批量分析–需要大量的数据(温数据/冷数据)–分钟级或者是小时级得到结果反馈–样例:生成每天,每周。或者是每月的报告•通过机器学习预测–机器学习给计算机学习的能力,并且不需要显示的编程–机器学习算法:–监督式学习←“teach”程序•分类←这是交易欺诈吗?(Yes/No)•回归分析←客户终身价值?–非监督式学习←让它自己学习•聚类←市场划分分析工具和框架•机器学习–Mahout,SparkML,AmazonML•交互式分析–AmazonRedshift,Presto,Impala,Spark•批量分析–MapReduce,Hive,Pig,Spark•流处理–微-批量:SparkStreaming,KCL,Hive,Pig–实时:Storm,AWSLambda,KCLAmazonRedshiftImpalaPigAmazonMachineLearningStreamingAmazonKinesisAWSLambdaAmazonElasticMapReduce流处理批量分析交互式分析机器学习分析我应该使用什么流处理技术?SparkStreamingApacheStormAmazonKinesisClientLibraryAWSLambdaAmazonEMR(Hive,Pig)规模/吞吐量~Nodes~Nodes~NodesAutomatic~Nodes批处理or实时实时实时实时实时批处理可管理性Yes(AmazonEMR)DoityourselfAmazonEC2+AutoScalingAWSmanagedYes(AmazonEMR)容错性SingleAZ可配置Multi-AZMulti-AZSingleAZ编程语言Java,Python,ScalaAnylanguageviaThriftJava,viaMultiLangDaemon(.Net,Python,Ruby,Node.js)Node.js,JavaHive,Pig,StreaminglanguagesQueryLatencyHigh(Lowisbetter)我应该使用什么数据处理技术?AmazonRedshiftImpalaPrestoSparkHive查询延迟性LowLowLowLowMedium(Tez)–High(MapReduce)持久性HighHighHighHi
本文标题:亚马逊 AWS大数据架构模式和最佳实践_曹玮祺
链接地址:https://www.777doc.com/doc-6163383 .html