Hadoop:它是什么?它怎样工作?以及它可以做什么?

        目前Hadoop在数据库和内容管理领域已经拥有了大量拥趸。但是很多研究它的人并没有真正清楚它到底是什么,怎样才能把它发挥到极致。

        Cloudera的CEO和Strata会议的发言人迈克奥尔森在下面的访问中论述了Hadoop的背景和它的应用(Cloudera提供了Hadoop的一个商业化的发布版本,并且贡献给了这个项目)。

        Hadoop来自哪里?

        Mike Olson:核心的技术是由谷歌公司早期发明的,所以他们用心地检索了他们收集到的所有充分的组织和结构上的信息,这些之后对于用户来讲表现力更强作用也更明显。事实上没有市场去驱动他们做这件事,他们只是在建造他们自己的平台。谷歌的创造力被纳入到了Nutch里面,一个开源的项目,但是Hadoop很快就从中拆分出去了。雅虎在开发Hadoop面向企业应用的过程中起到了关键的作用。

         Hadoop可以解决什么问题?

        Mike Olson:Hadoop平台被设计用于处理大量的数据——这些数据可能包含了复杂和结构化的数据的混合,但是这种数据不适合存入数据表中。它是用于当你想要深入地了解分析,充分计算,像集群和目标性强的场景。就像谷歌现在在做的一样:检索万维网并且检查用户行为用于改善算法的可用性和性能。

        Hadoop投入到一些商业应用中。在金融领域,如果你想做精准的投资评估和风险分析,你可以建构难于使用数据库引擎进行处理的经验模型。但是Hadoop可以处理它。在电商领域,如果你想返回更佳的搜索结果给买家展示,以期吸引他们来买你的商品的时候,谷歌创建的平台已经完美地解决了排序问题。这里只是列举这几个例子。

        Hadoop是怎样构建的呢?

        Mike Olson:Hadoop被设计运行在大量不共享任何内存或磁盘的机器之上。这意味着你可以卖一整套高配置的服务器,仍在机器架子上,然后在任何一台上面运行Hadoop软件。当你想要加载所有你的组织代码到Hadoop中的时候,它的做法是把数据分片,然后在不同的服务器上扩展。没有哪个地方是你可以全部了解数据的地方;Hadoop保持数据存放点的轨迹。因为有很多拷贝的存储,存在下线或者死掉的机器上的数据会自动从完好的上面拷贝下来。

        在集中式的数据库系统中,你可以使用一个大的磁盘连接4,8或16核的CPU来做存储和计算。但是这也承载了大量的电力。在Hadoop集群中,每个服务器都有着2,4或者8个核心的CPU,你可以通过将代码发布到集群中空闲的机器来运行你的索引任务,每个服务器执行你的数据的一小部分。结果最后结合起来发送给你。这就是MapReduce的机制:你将操作映射到每个服务器,然后汇总结果到单个结果集中。

        总的来说,你能够处理大量数据的原因在于Hadoop可以将他们分布到多台机器进行计算。你可以回答复杂的计算问题是因为你得到了更多的处理器,并行地合作运行。

        这么说吧,我们的公司有没有必要开发自己的Hadoop应用呢?

        Mike Olson:毫无偏袒地说,目前的Hadoop解决方案必须要做的比关系型数据库解决方案更富有经验。现实是没有很多包装过的应用可以做到跳出盒子看世界,并且运行在Hadoop处理器之上。众所周知,上世纪80年代早期当Ingres和IBM开始销售他们自己的数据库引擎,人们才开始真正地编写本地应用程序来操作数据。

        这就是说,你可以在Hadoop框架下开发支持不同语言的应用程序。开发工具和接口都很简单。我们的友商———Informatica就是一个很好的例子——他们已经移植了他们的工具,这样就可以使用Hadoop接口在Hadoop集群中存储数据。有专业的运维人员讲解,还有很酷的查询工具:一款可以让你爱上在Hadoop集群上管理你的数据,Pig,是雅虎开发用来让数据流和数据的转换操作在Hadoop上得以运行的一门语言。

        Hadoop在这个阶段的发布碰上了比较棘手的问题,但是我们的工程师会很快创建应用来解决这些问题。我想在接下来的几年之中可以看到更多的闭环应用(Hadoop生态内部的)。

        你怎么看待关于SQL和NOSQL的争论?

        Mike Olson:我十分信任关系型数据库。我认为SQL语言是很酷的,并且产品也是值得信赖的。

        我讨厌术语“NOSQL”。有一些不同的工程,每个都有着不同的属性和行为。而它应运而生。可是真正的问题是,你用来解决什么问题?因为那是对用户最有价值的地方。

猜你喜欢

转载自my.oschina.net/u/216330/blog/1579627