初创公司基于AWS构建数据平台初创公司基于AWS构建数据平台英语流利说HaitaoYao@haitao_yao英语流利说HaitaoYao@haitao_yao英语流利说•2000万+用户的选择•苹果官方中国区2013年度精选App•唯一语言类App•唯一中国团队出品的教育类App被预装到中国所有苹果店展示豌豆荚设计奖各大安卓应用商店市场推荐、教育类排名第一英语流利说正在使用的AWS服务•EC2•EMR•RDS,S3,Glacier,ElasticCache•ELBAgenda•自建Hadoop集群•基于EMR+基于AWSec2的自建集群•StatelessComputingcluster自建hadoop集群•购买物理服务器•租用机房机位自建hadoop集群的缺点•初始化成本高•维护成本高•计算资源有限•冷数据存储成本高英语流利说数据规模•语音数据:200TB+如何“多快好省”的解决计算+存储问题?AmazonEMR+S3AmazonEMR+S3AmazonEMR•使用简单•On-demand•无缝resize•与S3集成非常好S3•对象存储,不是文件系统•高可用•无限存储•冷数据存储S3存储设计•S3根据前n位keyHash计算存储节点•尽量使key前几位不同–时间倒序–随机值S3–分析小文件•采用时间倒序方式,计算如何做?–例如:计算2015-11-13至2015-11-16日的数据•Key:s3://data-bucket/320011/2015-12-16/….......S3–分析小文件•自定义InputFormat•根据输入日期起始,枚举s3keyprefix•使用S3prefixlisting特性•RecordReader返回s3数据•适用于Hadoop/Spark•好处:不需要将小文件merge成大文件,节省存储成本S3debugging•AWS每个请求会生成唯一requestid–参见Googledapper论文•SDK中可以获取RequestIDS3debuggingwithBtrace•SS3Tips•开启bucketloggingS3Tips•类库版本升级(jets3t)–老版本不支持V4api,会导致中国区无法使用–升级最新版本•Region:cn-north-1当前计算集群•一个standalone集群–分析师/开发人员使用•多个EMR集群–分析语音数据–On-demand–随时resize•所有数据存储在S3•AMIfornativelibraryStandalonehadoop集群•ClouderaHadoop•使用ebs作为数据盘CDHoverS3•早期jets3t不支持V4版本api•基于hadoop-s3a+S3SDK修改S3AFileSystemS3权限控制•不同集群使用基于IAMRole方式–注意ARN书写方式:arn:aws-cn:s3:::your-bucket•Standalone集群通过hadoop-s3a实现权限控制AMI•计算依赖nativelibrary•构建AMI,快速部署计算集群Execution-service•隐藏计算集群实现•Restful接口•支持spark/hadoopjar/hive•按需调度•On-demand启动新集群系统结构为什么开发execution-service?•易用性•当时emr中国区还不支持spark/presto•早期定制化spark“无状态”计算集群“无状态”计算集群数据平台的“数据”•数据S3•MetadataAmazonRDS计算集群无状态PetsvsCattlesPets•多人使用一个计算集群•悉心照料•各种规范,各种资源调度•一人闯祸,大家背锅Cattles•维护成本低•粗犷模式•用完干掉Cattles,noPets人生苦短,快用AWSWe’reHiring