EMR是Amazon 的Map Reduce 服务,很早以前就推出了。因为Guide推荐使用S3作为input和output,所以性能是一直让我不想使用他的原因(自己搭个Hadoop也挺简单),而且由于系统部署的问题,所以一直没怎么去用。但是最近在用它做些小测试时,还是给了我很多惊喜。
1. 性能没有想象中的那么差,由于S3 rlease了大文件的支持(单个文件5T),所以绝大多数情况下可以直接上传大文件而不用压缩。20G的input, 用了1个master node, 4个core nodes, 做简单的key map, reduce直接输出key + value, 输出文件也差不多20来G(输出到S3),总共花了11分钟。这个性能给个人做一些Demo的话,够用了。2. 伸缩性非常好,结合EC2, 可以很方便的伸缩集群,而且可以选择跑完就shutdown ,省钱又省力。
3. 使用方便,和hadoop的命令完美的结合起来。虽然使用的是S3,但是命令和使用HDFS没有任何区别,只是URI不同而已。跑job也很方便,上传编号的jar 包,点点鼠标,输入参数就可以跑了。可以在portal上查看debug信息,每个step的状态和日志等。完全不需要关注机器,网络,dns, 端口等等这些。
当然也有些缺点,portal没有提供rerun job功能,也不能cpy job参数。不过考虑到EMR有API,所以这个应该也不是必须的。还有就是获取机器以及拷贝hadoop运行环境的时间有点长了,大约需要十几分钟。
1. 性能没有想象中的那么差,由于S3 rlease了大文件的支持(单个文件5T),所以绝大多数情况下可以直接上传大文件而不用压缩。20G的input, 用了1个master node, 4个core nodes, 做简单的key map, reduce直接输出key + value, 输出文件也差不多20来G(输出到S3),总共花了11分钟。这个性能给个人做一些Demo的话,够用了。2. 伸缩性非常好,结合EC2, 可以很方便的伸缩集群,而且可以选择跑完就shutdown ,省钱又省力。
3. 使用方便,和hadoop的命令完美的结合起来。虽然使用的是S3,但是命令和使用HDFS没有任何区别,只是URI不同而已。跑job也很方便,上传编号的jar 包,点点鼠标,输入参数就可以跑了。可以在portal上查看debug信息,每个step的状态和日志等。完全不需要关注机器,网络,dns, 端口等等这些。
当然也有些缺点,portal没有提供rerun job功能,也不能cpy job参数。不过考虑到EMR有API,所以这个应该也不是必须的。还有就是获取机器以及拷贝hadoop运行环境的时间有点长了,大约需要十几分钟。