【CSDN在线培训Q/A】Amazon Kinesis实时数据分析最佳实践分享

wangyp1230 2015-01-22 11:43:40
加精
1月8日,亚马逊AWS的产品拓展经理庄富任在主题为“Amazon Kinesis实时数据分析最佳实践分享”的在线培训中,为我们讲述了如何利用Kinesis 架构实时数据流处理和分析的能力,并透过目前最热门的手游开发商Supercell客户案例,来体现Kinesis如何处理和分析海量数据流(例如用户的点击,消费,上线等动作)。

为了帮助大家更好的复习本次培训的相关内容,了解如何在AWS这样的云平台进行数据分析。CSDN整理了本次培训最后的QA,如下:

Q1.目前Strom的社区进展缓慢,很多公司更倾向Spark内存计算的框架,AWS对spark有什么考虑的方案?

答: Kinesis是针对Storm的实时分析,Spark内存计算的一个框架,Storm和Spark还是有点不一样的。做实时数据流的处理,如果你想用开源的话当然用Storm;如果你不想自己去做底层的运维或搭建一个类似于Storm这样一个框架的话,那就用kinesis;如果你想用Spark内存计算框架,Spark是用来取代hadoopMapReduce的一个框架。对于AWS而言,EMR是支持Spark的,所以大家如果对Spark感兴趣,你可以看AWS EMR的解决方案。因为spark很多实验和架构都是在AWS云上做开发的,所以我们对Spark的支持其实挺好的。

Q2.按照您的说法,那么EC2就是采集数据?但是我在Web Service上看到,说EC2是计算,麻烦你解答一下,谢谢

答:刚刚在前面,我说EC2是用来采集数据,那这样为什么还要用Kinesis?其实这两个是有一样的地方。一般传统下如果没有Kinesis这样包装好的服务来讲,就需要自己找服务器、搭建服务器,EC2就是一个计算资源,就是一个服务器,你就得自己买这样一个服务器,去搭建很多的节点做数据采集,你在上面可能会部署工具做数据采集,你可以用EC2,用开源社区的一些工具来做一些搭建,这当然没有问题,但是,如果你想要省掉自己搭建、自己运维下面的一些平台,Kinesis是一个更好的解决方案。

Q3.为什么读的速度比写的速度快,但记录数却少这么多?

答:吞吐量为什么有不同的差异性,我要分两个方面来解释:一,每秒可以处理1M的吞吐量,每秒写入的记录是一千个,但是读数据的话,可以看到总量是2M/S的吞吐量,大家觉得奇怪为什么1秒只支持50的吞吐量,其实一般来讲,写的话记录是很小的一些KB,可能是我的一个记录是2kb或3kb,这个数据量其实是很大,需要写入每秒的tbs要很快,我读出来的话不需要一次读出很多,但是读出的总量汇集到很大的量再一次读出来作为一个分期,不需要那么大的读的tbs,这就是读的和写的一个差别。

Q4. 我想汇集一段时间的数据形成一个时间窗口,在Kinesis里面怎么做?我在内存里面缓存的数据Kinesis能够保证不丢失吗?

答:刚刚有提到,前面的数据进来后能在数据里面形成一个时间窗口,那过一段时间数据累计到一个量,再读出来。通常正确的做法是,你通常会等到一定的时间窗口,数据量汇总到一定程度,你才会把它读出来做处理。所以简单来讲你会把kinesis作为一个缓冲,一个buffer。我可以保证,在这个buffer中数据不会丢失。我们是在三个数据中心中作数据备份,所以你不会担心数据会丢失。唯一你要注意的是,我这个数据的窗口只有24小时的时间,所以你不能等到24小时时间后再去处理,因为我们这个数据窗口只能保留24个小时,这个非常重要!

Q5.Kinesis如果实现实时Join的功能?

答:很多问题问到,我们是怎么实现不同应用程序上的数据处理。其实这都是一个逻辑的问题。我刚才提到,Kinesis在将数据读出来后,你需要写应用程序来把收集上来的数据进行处理。写这样的应用程序目前我们支持的就是用Java和Python这样的语言去写。Java和Python的一些简单的计算的函数都可以用。所以,如果想做加减乘除或一个数据的聚合、分析,你都可以通过应用程序内部的逻辑来处理。这些都是由写应用程序的人来控制的。

Q6.相比Storm的框架,Kinesis中每个shard分片,是否类似tuple元组,可由worker/blot来定义好处理格式?

答:也有人说Strom的架构也会做一些分片的设计,但处理格式来讲的话,目前其实……我不知道这位朋友问到的“处理格式”是什么。因为处理格式是前端进来的,这6个你要怎么样去做。你后面要怎么去处理,去定义,都是由我们刚才讲的Worker来做,shard只是用来当做数据流的一个buffer。

Q7.使用Redshift,如果要在线扩容,需要在新集群中停止写数据,现在有什么方法能实现扩容中业务的透明读写吗?另外Redshift中只有一个Leader node做控制节点,是否存在单点故障的可能?

答:很多有兴趣的朋友问到,实时的数据用kinesis收集、处理以后放在像Redshift上,是否支持不停机做一个在线扩容。可以支持不停机做一个在线扩容,这是Redshift的一个非常好的服务。传统的物理服务器,如果是做数据仓库使用的话,5个节点可能要扩展到10个节点,需要做一个停机,另外买5台机器再做一个扩容。所以传统物理机器需要停机做扩容,但是对Redshift来讲你不用停机我们可以自动帮你做扩容。

Q8.归档的数据Glacier,还可以恢复么?Glacier是否能支持客户直接将自己的数据盘阵(如NAS)邮寄给AWS,在使用时直接挂接到存储系统中导入S3?

答:就导入到Glacier来讲的话,Glacier其实可以被看做一个以前的冷备的服务,可以把它备份在一边做一个归档,也可以从中把归档的数据再拿出来,因为是冷备的数据但是拿出来的时间要3-5个小时才能取出来,因此需要一个时间点。

Q9.Kinesis一次能处理多大容量的数据?

答:有人问到说Kinesis最多可以处理多大容量的数据。其实我刚才已经讲到,看你的shard有多少个,每个shard,也就是每秒的吞吐量进来的话,就是每秒是1MB的容量。所以你可以根据前端吞吐量的需求,去扩充一个分片、两个分片或十个分片或一百个分片…就是根据你的处理量(来扩充)。这样的好处是我们没有一个太大的局限你要多少个shard。如果你有这样一个需求,我们就有这么样一个容量。

Q10.目前Storm和Kinesis可以整合在一起吗?

答:简单地说Kinesis包括Storm的功能,所以说,你用Kinesis等于是取代Storm。但如果目前你已经使用Storm搭建一些东西,那也没问题,Kinesis也可以做前端的实时数据采集,后端的计算也可以交给Storm。所以我们支持Kinesis后面接Storm,这没有问题。当然Kinesis后面也可以接DynamoDB,我们有个连接器,也就是说很简单(就能实现),Kinesis处理完的数据可以直接导入到NOSQL DynamoDB。

认真听课的同学,不妨自己动手试试,以下这篇动手实验指南可以作为参考。

推荐文章:动手指南:使用Amazon Kinesis实现地理数据的实时可视化
...全文
11078 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
danhzhang 2015-01-31
  • 打赏
  • 举报
回复
学习了,谢谢共享。
程序员鼓励师 2015-01-31
  • 打赏
  • 举报
回复
伊顺鸣 2015-01-23
  • 打赏
  • 举报
回复
就是来换换呢。。。
line_us 2015-01-23
  • 打赏
  • 举报
回复
如何利用Kinesis 架构实时数据流处理和分析的能力
qq_17481693 2015-01-22
  • 打赏
  • 举报
回复
谢谢了,很有收获

409

社区成员

发帖
与我相关
我的任务
社区描述
AWS
社区管理员
  • AWS
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧