大数据,云计算和商务智能是时下很流行的几个词。那么一个企业想要做大数据分析,要怎么玩,有要花多少钱呢?
做大数据分析首先要有一套Hadoop集群来处理数据。我们假设某企业每天有100GB的数据需要存储并做分析,其所用的Hadoop集群有4个结点 – 这算是最起码的配置,如果数据太少了根本没必要玩儿大数据。部署一套Hadoop集群有多种解决方案:
- 自己买机器,然后去http://hadoop.apache.org/ 安装各个组件自己搭建
- 自己买机器,然后安装某些定制过的Hadoop集群。比如http://www.cloudera.com/ 和http://hortonworks.com/ 都是在Apache开源软件的基础上做的集成和扩展。这样部署起来更方便,有问题了也可以找相关的公司咨询解决方案(它们也是这么赚钱的)
- 使用Amazon的EMR, http://aws.amazon.com/elasticmapreduce/ ,在amazon的云计算平台上创建一个Hadoop集群。
- 使用Microsoft的HDInsight, http://azure.microsoft.com/en-us/services/hdinsight/,在Microsoft的云计算平台上创建。
从技术和可维护性的角度来说,我是坚决赞成使用云计算平台的解决方案的。随便想想前两个方案吧,先要买机器: 买什么配置的机器得自己研究,买多少台呢?多了浪费,少了又怕不够用。买回来得有地方放着吧,要机房要稳定供电要提防着机器罢工。然后还得转软件,得专门雇个懂Hadoop的人,其实也没什么大事儿,就是配置一下系统维护一下,可是又不能找临时工,不然哪天系统出问题了找谁去修呢?
我们可以算一下方案3,4的花费有多少:
Amazon EMR按节点收钱,以General Purpose – Current Generation m3.xlarge为例,每小时的价格是$0.35 (虚拟机的价格加上EMR的价格之和 )。 那么2个控制结点(master node)以及4个核心结点(core node)每月的费用大约是0.35 x 6 x 24 x 30 = $1512. 存储另外收钱,每天100G那么每个月3000G的数据,费用大约是0.0295*3000=$88.5。 除此之外数据的读写传输还有额外费用,暂且不计。每个月费用大约在$1600左右,如果数据一直保留那么后来的存储费用会越来越高。
Microsoft HDInsight收费的方法类似,以2个头结点(head node)和4个数据结点(data node)为例,每个结点$0.32每小时,每月大约$1382。数据存储$0.024*3000=$72,合计大约$1450左右。我比较了一下,Microsoft的A3机器比amazon的m3.xlarge内存要小(7G VS 15G)。 所以这样看来的,两家运营商提供的Hadoop集群价格不相上下。
所以使用云计算平台的Hadoop,每个月花费至少在$1500到上下。不用想了,一定比自己搭系统便宜,雇个人维护系统每个月工资也得$1000了吧,还有机房的房租,电费,硬件维护升级的费用。。。
等等。。。刚才我们假设是4个结点,如果真的做点用来做一些应用的话,4个结点就太少了,那么增加到十几二十个结点的话呢?每个月就要$7500了。对于中小型企业来说也算一笔不菲的花销,对大企业还好。所以虽然云计算平台有优势,虽然目前Amazon和Microsoft都推出了Hadoop,但是用户数量并不是非常多,价格门槛比较高也算是一个重要因素:随便用用就要成千上万的花钱,谁敢随便用啊。
那么这个价格是否还可以更低呢?答案是可以。 看下现在Hadoop的用法,每个客户都要创建自己的Hadoop集群,系统运行起来就开始收费。显而易见这种做法并没有利用到云计算的优势:在多个用户之间共享资源,以提高资源利用率并降低价格。每个客户的Hadoop集群都不可能一直在使用,总有忙时闲时,闲的时候就是在浪费。
实际上amazon提供了另外一些类型的虚拟机:Reserved Instance针对低,中,高的利用率提供了三种不同价格,如果你认为自己的Hadoop集群利用率比较低,可以选Light Reserved Instance,每小时价格会便宜。还有一种Spot Instance,其价格根据竞价机制决定:amazon会根据系统的当前负载情况来定价,然后客户出价来bid,bid到之后可以使用直到用户选择停止或者amazon的价格增长。
Microsoft方面就做的比较差,没有这些灵活的选项,以至于客户不得不频繁的创建然后删除Hadoop集群,因为不删除放在那里就要收钱。
其实amazon提供的方案对客户来说也非最佳选择。如果客户自己并不清楚自己的利用率怎么办,或者利用率经常变化难以预测怎么办?最直接的方法是按需收钱:试想一下,作为客户,我只是想去分析一些数据,我凭什么要在乎创建什么样的Hadoop集群,要多少结点,多大负载,平台完全可以帮客户决定这些事情,帮客户把运算需求动态的分布在若干结点上,算完以后用了多少CPU收多少钱,多么简单。
期待云平台上的Hadoop集群能继续改进,真正利用到云的优势。