【IT168 技术】作为最具代表性的大数据技术之一,Hadoop对那些准备探索业务影响力数据的IT部门非常有吸引力。Hadoop的分布式处理方法更适合处理海量非结构化数据,但是Hadoop及其相关的MapReduce编程模型并不是万灵药,MapReduce和Hadoop的问题时刻影响着大数据新手们。
部署Hadoop的用户可能遇到的问题包括复杂性、性能和系统管理。但是,人们对它的关注仍在不断提高。MarketAnalysis.com估计,Hadoop MapReduce市场将以每年58%的速度增长,到2018年前达到22亿美元。Hadoop(最初由雅虎开发)生态系统包含的工具非常多,而且仍在不断增加。但是,找到合适的团队成员并不是一件容易的事。
数据仓库咨询公司Caserta Concepts的总裁Joe Caserta说:“当我们谈到Hadoop时,它实际上只是一种分布式文件系统。所有分布式系统都有一些工具,只有这些工具才能操作分布式数据系统的数据。它们包括Hive查询工具,可以模拟结构化数据;Pig,它实际上是一个操作Hadoop数据的ETL语言。”
对于许多人而言,Hadoop的复杂性源于Java开发。
Java是一个广泛流行的语言,它常用于面向应用的开发,而非面向数据的开发。这只是Hadoop新手面对的许多“环境转变”问题之一。
即使是精通于SQL的Java开发者,他们使用Hadoop也有许多挑战。因为除了使用一些相关工具,否则Hadoop无法使用SQL。
咨询与应用监控软件开发商Errplane的创始人 Paul Dix说:“Hadoop有一个工具可以帮助实现这种环境转变,那就是Hive。这个工具很有效,但是它实现的转变并不完美。”
根据Dix的观点,就算同时具备Java技能和SQL工具,也无法保证一定能玩转Hadoop。一位资深Java开发者也可能无法部署谷歌提出的 MapReduce模型(通常与Hadoop相关联)。MapReduce会提取Hadoop处理过的数据,得到更容易使用的数据子集。
MapReduce:唾手可得的Hadoop产品
Dix说:“大多数Java开发者面对的问题是,他们如何使数据处理符合MapReduce范式。他们必须学习如何编写与Hadoop对应的MapReduce代码。他们必须学习正确理解问题的结构。”
Dix自己以前就是一位谷歌实习软件工程师,他指出,许多谷歌开发者的第一个任务就是学习如何编写与Hadoop对应的MapReduce代码,计算出文本文件的单词数。
对于Hadoop开发团队而言,寻找一个好的起点是很关键的。一个可参考的开发启动项目是:将日志文件保存到Hadoop集群中,然后使用MapReduce处理所得到的数据,例如访问某个网页的特定访客数据、响应时间或Web应用抛出的错误数量。
轻松实现Hadoop
MapReduce并不是唯一方法。Adobe公司的高级软件架构经理Paul Mackles说:“有许多方法可以不需要编写MapReduce程序而直接实现Hadoop。”他指的是Hive,但Hive也有一定的复杂性。
Hive将类SQL语句转换为MapReduce程序,但是由于采用了其他查询系统,所以转换过程通常需要大量的调优。Mackles在本月的TDWI BI Executive Summit 2013大会上指出,数据联合“并不是它的强项”。Mackles指出,由于其他一些原因,其性能也存在问题,因为Hive只支持批处理,而且与MapReduce一起运行会在处理任务时增加启动开销,而且在任务执行时会增加后续处理的负载。
Hadoop还有一些固有的操作方式。Hadoop文件系统并不兼容Posix,所以挂载文件系统的方法并不为人熟知。他指出,Hadoop将文件划分为多个可管理单元,以支持并行处理,但是开发或运营团队成员有时候必须“考虑如何分割和压缩文件”。
Mackles指出,如果想要开始学习Hadoop,最好先挑选一些较简单、易完成的项目。Mackles将一些停车文件、Hive聚合和实验作为Hadoop的“轻松用例”,同时指出那些要求快速实现性能的操作应用不适合作为第一次尝试。
Mackles列举了很多Hadoop的实用工具,包括YARN、Impala、HCatalog等。用Mackles的话说就是“它们代表了趋向实时的重大转变。”这些工具都很有帮助,但是在实践中了解这么多Hadoop新工具本身还具有一定难度。
原文链接:http://www.searchbi.com.cn/showcontent_71711.htm