另外一种快速搭建并使用一个真正的Hadoop系统集群的方法是使用亚马逊公司的EMR(Elastic MapReduce)服务。目前这个服务既支持Hadoop1.x版本,也支持Hadoop2.x版本。同时,这个服务还支持Hadoop系统的多种发行版本,比如Apache版本或MapR公司发布的版本。
EMR使得用户只要在Web页面上简单地点击几下就可以启动一个Hadoop集群。EMR背后的主要思想如下:
1)用户使用亚马逊公司的S3服务加载数据,S3是一项简单的存储服务。亚马逊的S3是由AWS(Amazon Web Services)提供的一个分布式文件存储系统。它通过Web Services接口来提供存储服务。通过配置,Hadoop系统可以把S3当做分布式文件系统使用。在此模式下,S3服务扮演了HDFS的角色。
2)用户也可以使用亚马逊S3服务加载应用程序函数库。
3)用户通过指定函数库和输入文件在S3上的位置就可以启动一个EMR作业,还要指定在S3上的输出目录供作业执行完毕写入输出结果。
4)在亚马逊云上启动一个Hadoop集群,执行作业,结果输出到前面步骤中指定的目录中。
在默认操作中,集群会被自动关闭,用户也不必继续支付费用。用户可以通过一个选项(现在在启动EMR的Web页面上就有这个选项)来控制集群是否一直处于激活状态:自动终止选项(Auto-terminate option)。当在这个选项中选择No,任务结束后,集群就不会被关闭了。
你可以使用一个SSH(Secure Shell)客户端登录集群中的任何一个计算节点。当用户通过一个SSH客户端连接到一台物理节点之后,就能够继续使用Hadoop系统集群的全部功能,甚至HDFS也是可用的。
用户可以在集群中使用示例程序执行数据量小的任务,这样可以保证集群一直处于运行状态。用户可以连接到集群中的一台节点执行更多的任务。使用一个普通的由两台服务器构成的集群每小时需要花费1美元(这依赖于你选择的服务器类型,如果选择的是顶级服务器,其花费会高达到每小时14美元)。当作业执行完毕,用户可以关闭集群,也不必继续支付费用了。用户只需花费少量的钱,就可以在真实的企业级Hadoop集群中运行我们实际需求中的作业(第16章会讲解云计算中的Hadoop系统)。
就算是每小时1美元,时间积攒起来也是个不小是花费。留意亚马逊云提供的服务所处的状态,可以使我们的花费更加经济。不使用的云服务要及时关闭,并且还要很清楚自己使用了那些服务。据我们所知,确实有人不使用集群之后却忘记关掉它,结果一个月就损失了数百美元。不要让这种事发生在你的身上。