探索中国CIO人才现状 | 第四季调研报告
Hadoop工具在其不断进化中披荆斩棘
2014-12-17  来源:techtarget

对于大数据分析来说,Hadoop绝对是首选,但是要跟上其快速发展的框架却是一场斗争。然而,各式各样的工具能够帮助简化云管理员的这项工作。

当提到大数据管理,Hadoop绝对是业界最受欢迎的。随着它日益增长的普及性,云管理员不得不应付其不断升级的生态系统的挑战。Hadoop最开始是一个用来运行MapReduce的平台,但却渐渐演化成为一个大型计算平台并且产生了各种各样的工具来支持完整的数据管理的生命周期。

YARN—一个在Hadoop2里引入的新的资源管理器使得Hadoop能够持续的发展。随着数据管理平台的不断变化,云管理员必须要对各种Hadoop工具很熟悉才能很好的对云环境提供支持。

三种支持Hadoop的脚本语言

把数据移入和移出Hadoop分布式文件系统(HDFS)对于使用Hadoop的大部分管理员来说很常见。一些云管理员用他们偏好的编程语言来编写自定义脚本,有三种不同的高效选择值得我们关注。

Pig:高级声明性语言来指定跑在Hadoop上的ETL工作,提供高级命令来处理文件的每一行,数据集过滤,数据子集分组,排序以及其他常用的操作。Pig对于文本文件支持很好,并且很容易学习—尤其对那些熟悉SQL的人。开发人员能够创建用户定义的函数来强化功能。

Sqoop:批量数据加载工具,用来简化Hadoop和关系型数据库之间的数据移植。它能读元数据,提取数据表中的数据,还能在HDFS上创建包含表数据的文件。Sqoop能够并发的处理批量数据加载,从而比使用单独线性的数据加载脚本要快得多。Sqoop还会生成Java类来操控导入的数据表,在你的应用中使用。

Flume:为了可扩展性和可靠性而设计的分布式系统,消除了需要设计自定义的应用在一个流处理操作中根据负载的变化来伸缩的必要性。Flume被设计成可以实时传输大量的数据,所以很适合用来将数据移到Hadoop上。它使用一个基本的基于事件(events),数据源(sources),数据去向(sinks)和管道(channels)的模型。

Oozie:给力的工作引擎

管理员们通常需要运行一套完整的程序来完成一个大型的数据分析任务。比如,你也许需要几个Pig和Sqoop的工作来加载数据,少数Map Reduce的工作来转换和分析数据,另一个Sqoop的工作来把结果写到一个关系型数据库中。

Oozie正是这样一个工作流引擎能够允许云管理员指定哪些工作需要被运行以及它们之间的依赖关系。比如,MapReduce必须要等到数据加载完毕才能开始运行。管理员使用一个被称为hPdl的XML过程定义语言来指定Oozie工作流的细节。

除了使用声明性语言来描述工作流之外,Oozie能够重起失败的工作流。Oozie利用工作流得到的信息只需要从失败的那一步开始继续运行,而不需要从最开始重新运行每一步。

管理复杂应用数据

Hadoop是大数据管理和分析的标准。ETL和流数据工具,工作流支持和数据管理工具在Hadoop环境中经常被使用来精简DevOps和提供大规模的基础数据管理服务。

Hadoop的简单数据管理需求用HDFS就可以做到,但是更复杂的应用需要HBase和Hive。

HBase是一种列数据存储类型的NoSQL数据库。它被设计成可以支持十亿级别的行和列的超大数据表。HBase擅长包括快速查找和更新超过几百万行数据集的数据管理需求。

Hive是一个数据仓库平台,支持在大量数据集合上的类SQL的查询能力,它利用Hadoop的并行架构来将一个大的数据表分割成多个存储在HDFS上的文件。但是,Hive的高性能是有代价的。比如说,Hive支持覆盖和数据添加,但是不支持删除和更新。