参加Hive和Pig(两个hadoop数据查询、处理工具)培训的一些体会

 
 前一段时间开始看Hadoop的资料,希望通过自学能了解相关的基本知识技能。不过发现有些困难。首先是hadoop是安装在liuux上的,其次hadoop的开发语言是java。我对linux和java都不熟悉。自学有困难。不过这还不是最困难的。最困难的是hadoop相关的公开的学习资料太少。官网上的教程经常有小错误走不下去。
 
 后来看到Cloudera公司授权的国内的一个hadoop培训(http://www.ruanko.com/portal/hadoop/Cloudera_Hive_and_Pig_Training.html),报名参加了一门最感兴趣的数据查询和处理的课。还有两门课分别是hadoop的管理和hadoop的开发。
 
 Hadoop是开源软件。Cloudera公司提供开源的、比较稳定的编译后的版本,这个版本简称CDH。另外还有两家公司提供不开源的稳定的版本。Cloudera公司以提供Hadoop的培训和支持为主要业务。我参加的这个培训是Cloudera公司授权的首次国内培训。


 Hive和Pig是hadoop之上的两个数据查询和处理的工具。Hive的语法与SQL很像。Pig是一种处理数据的脚本语言。如果不用Hive和Pig之类的工具,而是用Hodoop上的原生态的Java的来查数据的话,开发效率比较低。一个简单的sql需要写一页代码。
 
 Hadoop的数据实际是存在文件系统中的。没有像关系数据库那样的各种对数据的校验约束机制。因此保存数据的时候,使用Pig之类的脚本来做预处理就比较有必要了。
 
 Hive运行在可以连接到hadoop的客户端上。Hive创建的表并不会保存到Hadoop之上。只会保存到运行Hive的Client上。这是与关系型数据库非常不同的一个特点。从这个特点看Hadoop更像是文件系统而不是数据库。
 
 如果需要处理二进制数据,那么Hadoop和Pig都不适合。
 
 除此之外,常见的数据查询功能,Hive和Pig都可以实现。不过Hive和Pig都不支持对数据的修改。Hive还有一些特有的统计功能,比SQL实现起来简洁。
 
 Hadoop不是关系型数据库,目前还没支持索引。查询起来速度当然比不上关系型数据库。在练习用的单独的虚拟机上,最大的表数据量只有10万,许多普通的查询也要1-2分钟。
 
 这个培训课,基本上算是一个入门。我感觉仅仅是对Hadoop,Hive,Pig有了一些基本的了解。想要熟练掌握,我认为还是需要通过实战。

你可能感兴趣的:(hadoop)