在Hadoop发展的8年时间里,我们看到一种“使用浪潮”——一代又一代用户在相同的时间和类似的环境下使用Hadoop。每一个在数据处理时使用了Hadoop的用户,都面临着类似的挑战,为了让一切正常运转,要么被迫协同工作,要么干脆隔离。接下来我们就讨论这些客户,看他们彼此之间有何不同。
第0代——火种
这是开头:在谷歌2000年中的研究论文的基础上,一些信徒奠定了廉价存储和计算能力的商品化基础。
Doug Cutting是教父。他跟Mike Cafarella一起,实现了谷歌文件系统和MapReduce的一个开源版本,它也是Apache Nutch项目的一部分。这两者一起演绎出无处不在的Apache Hadoop,一个蓬勃发展的大数据生态系统。令人吃惊的是,没有其他竞争项目或商业实体看到这项技术的潜力,并开发出与之竞争的产品。
第一代——早期
Hadoop建立后迅速吸引了一些早期用户,包括web2.0及其后的公司Yahoo!、Facebook、Powerset、Rapleaf等,他们中的一些人比如后两者更关注Hadoop的NoSQL组件,Hadoop的数据库(又名HBase)。他们都需要一个能帮助他们应对现有及正在快速增长的用户基础平台。他们赌一个能让Google正常运转的东西也能满足他们的需求。Hadoop做到了,然后才有了今天。
更重要的是这些公司都有强大的工程背景,拥有比一般企业更多的开发人员。他们的技术专家能在公司内使用Hadoop,开发搭建于Hadoop之上的解决方案。对工程师来说,技术道路从这里开始分化:要么开始深入挖掘代码并最终构建一个Hadoop生态系统内的项目,要么被归到既做开发又做集群的那一类里…我们见证了Hadoop发展规则的诞生——参与其中的人员应该具备多种技能、能一肩挑起所有重担。这很有用,因为这些孤独战斗的武士们都是有天赋的家伙,能够完成他们的工作。
这两组工程师最终都促进了Hadoop代码库的发展,并因此被选入Hadoop提交团队,他们被允许检查提交到开源库中的代码。我们谈论的是一只约200人的团队,他们在世界范围内推动Hadoop的发展。
现在,其中的一些工程师已经转到其他项目或跳到其他公司,但他们中的绝大多数仍然活跃在Hadoop圈子里。特别值得一提的是Yahoo!公司,它在最开始的时候推动了Hadoop的发展。
第二代——追随者
在早期使用Hadoop的公司里,Hadoop成功对一批新用户留下深刻的印象,他们通常被现在蓬勃发展的Web 3.0和社交网络的公司雇佣。这些用户是Hadoop的形成和时代到来的主因(虽然一个比一个年轻)。他们通常没有你积累丰富的Java代码,但是这些用Python, Ruby 或Scala标识着“我们写代码快”的家伙们,在能量饮料和无尽的时间帮助下能够破解任何代码,唯独不包括java。因此,他们建立一个伟大的网站,如Last.fm、Spotify,网站把Hadoop缺乏的东西迅速汇集到一起,例如一个叫Dumbo(Last.fm)的Python MapReduce桥,或Luigi (Spotify)的新作业调度系统。
现在,这种缺乏Hadoop组件而引发的模块化开发方式不仅发生在年轻的创业者身上,也出现在其他公司,这些公司不愿意介入Hadoop核心开发者社区里日益增长的政治化问题。LinkedIn就是一个例子,它围绕Hadoop的核心服务开发了很多工具,它还建立辅助系统以帮助收集事件、进行队列处理等。LinkedIn将这些项目开源,以便帮助有兴趣的用户建立新社区。
第三代——大器晚成
到目前为止,对所有Hadoop项目感兴趣的下一代用户是所谓的企业公司。他们的规模从小到大都有,他们是纯粹的IT用户,他们购买需要的软硬件许可,架构师会将这些东西揉到解决方案、产品或服务中。但他们不会雇用一批核心开发者打补丁或建立Hadoop堆栈。事实上这些用户大多数采用分布式安装Hadoop,如用Cloudra的CDH以让Hadoop运行得更快。这与在不同操作系统下做事儿是一样的,你可以将精力集中于Hadoop之上的业务逻辑,如果遇到问题或缺乏组件,你跟供应商沟通,然后升级到新版本。
有趣的是这些用户对年轻的Hadoop很满意,其应用缺乏更多的企业特征。Hadoop集群被从网络中分离并由少数几个人管理,通常一个集群只跑一个应用,所以遇到多用户或多负载的任务时自然会被安全地推迟。
第四代——新浪潮
我们现在看到的应用Hadoop的公司,他们等待了很长时间,因为Hadoop缺点太多所以干脆推迟上Hadoop。但随着企业级数据中心的出现,企业也为Hadoop的运行做好了准备。等待的时间并非空等,他们认真研究Hadoop功能,花时间测试系统的各个部分,明确知道自己想要一个安全的、多用户、多负载的数据平台,能与现有的IT系统集成到一起,并带有数据管理、安全审计和综合管理功能。
我想指出的另一个重要发展是,随着时间的推移从最开始到现在的新浪潮用户,Hadoop项目本身已经是许多用户共同努力的结果,现在的Hadoop已经没有了哪怕一丝一毫初始成员的印记,在所有太常见以至于无人能够代表的行业里Hadoop只是其中之一,唯一值得一提的有且只有Doug Cutting。
现在越来越多的企业级产品在向Hadoop转,拉里·埃里森可不喜欢这种趋势,因为这无益于Oracle数据库的销售。这其实已经成为一种让Doug对Hadoop用户来解释大数据的缩水版请求。事实上大量用户根本不了解这个圈子里最初的那批家伙。时代还在继续进步。
第1.1代——周期性波动
这个圈子看起来封闭的地方,用我个人最喜欢的词来形容就是:技术债务。让我们回到第一代、、但更多成长为第二代的用户。我们能够看到,他们积累了大量的遗留系统,对不断进化的Hadoop生态圈而言这些系统需要不断维护和使用。在实际商业应用中这需要投入人力资本,比如开发产品、提供服务以增加收入。与最初创建它相反的是,当时看上去伟大的想法如今却成为一种不断花钱的负担。对第一代公司而言Hadoop的运行已经成为常态,他们修改代码库的版本以保证自己的Hadoop正常运行。对第二代公司来说,他们现在有非常丰富的工具可供选择,这些工具不需要他们自己去开发,但仍然需要自己去维护。
所以我预测,最终这些前几代的用户将废除其先前的努力,迁移到Hadoop发行版,这将帮助他们专注于自己业务,比如成功地开发数据驱动的产品和服务,而选择Hadoop的供应商将确保他们总是有这样做所需的数据中心。这里有一个伟大的未来!