本节向大家介绍一下有关Hadoop0.20.2方面的知识,迁移到Hadoop0.20.2后的一些感想,相信通过本节的介绍大家对Hadoop0.20.2有更深刻的认识,让我们一起来关注Hadoop0.20.2吧。
------------------------------------------------
1.问题:
离Hadoop0.20.2的发布也有三个月了,平时一直在用http://www.cloudera.com/提供的一个Hadoop版本,它也是基于Hadoop0.18.3开发的,因为它的一个比较稳定的版本。但是最近在用hypertable0.9.2.7的时候发现我本地jni调用老是会出现HyperspaceCOMMalreadycommected,查了一下原因,是hyperspace的COMM被占用,连接出错,网上找了一下,作者也说有这个问题,还说什么修改一下也不是很难。看了一下它的源代码,是socket连接抛出来的,要改的话要修改hyperspace模块的代码,由于hyperspace底层是用oracle的berkeleydb的,对它也不是很熟悉,所以没去改了,想直接升级到0.9.3.1,看它有没有解决这个问题,但是让我失望的是它还是没有解决这个问题,到是在它的thrift端做了很多改动,而且把对hypertable表的TableSplit也加入了它的thrift服务端中,也正是我想要的,呵呵,这样也可以绕过前面的hyperspace的问题,因为它在thrift的服务端只生成了一个HypertableClient,这样就不会出现COMMconnected的问题了,而且对它的Cell也做了比较大的改动,用了***的Hadoop0.20.2。没办法,要升就一起升吧,Hadoop0.18.3->Hadoop0.20.2;hypertable0.9.2.7->hypertable0.9.3.1,原来的TableInputFomat和TableOutputFormat看来都要做修改了,于是就有了下面的这些感想。
2.Hadoop0.20.2的一些变化
新的版本不管从目录结构和API上都有了比较大的变化,不管从0.18到0.19,还是从0.19到0.20目录结构都发生了很大的变化,***感觉就是模块化的意识越来越强了,而且看起来也更清晰了。
2.1目录结构的变化
主要有三个目录,core,hdfs,mapred。
◆主要是把原来共用的功能都提取到了core中,其中有conf,fs,io,ipc,net,record等。还加入了类似于unix目录的权限功能。
◆把hdfs单独放入了一个目录中,而且把hdfs的配置文件也提取了出来,叫hdfs-default.xml,其中hdfs目录又分了protocol,提供了一些Client端的通讯协议,还有server和tools目录,其中server目录又分成了balancer,common,datanode,namenode,protocol,这里的protocol目录中提供了DataNode和NameNode的通讯协议,还有DataNode之间的通讯协议等。
◆把mapred也独立出来,而且也把mapred的配置文件也提取出来,放入了mapred-default.xml中,它也有两个子目录,一个是mapred,其中放了一些mapreduce的核心类,还有一些Deprecated的类,用于向后兼容,不过一般都不提倡用这些接口和类了。另一个目录是mapreduce目录,这里有一些对外的抽象类和接口,用于进行根据自己的需要进行扩展,在这个目录中有一个叫lib的目录,它提供了一些框架提供的常用的input,output,map,reduce方法。
2.2API的变化
在Hadoop0.20.2中,API的变化也是很大的,主要把一些接口变成了抽象类,以此在提高可扩展性,进行了一些重构,变化还是满大的。下面举一个例子来说明这里的变化。
2.2.1Hadoop的一个example
这是Hadoop中的一个WordCount的例子,从中你可以发现Map和Reduce的接口变化,还有JobClient的变化。
3.Hypertable0.9.3.1的一些变化
主要感觉它的thrift的java客户端变化很大。为了支持mapreduce,很多东西都集成到了thrift服务端。加入了MapReduceconnector,Hyperspace的replication,还有DUMPTABLE等。在它的thrift的客户端中加入了InputFormat和OutputFormat,还有TableSplit,可以用来对Hypertable中的表进行Key和Value对的读取,还是很方便的。但是它没有对TableSplit后的range_location进行处理,只是用了“localhost“来进行Host的连接,不知道是为什么?
看来要在Hypertable中使用kfs还是要进行源代码的编译还有kfs的动态库。本节关于Hadoop0.20.2的相关内容介绍到这里。
【编辑推荐】
- 专家推荐 Hadoop0.20.2集群配置指导手册
- Hadoop0.20.2集群配置入门指导手册
- Hadoop文件系统如何快速安装?
- Hadoop集群搭建过程中相关环境配置详解
- Hadoop完全分布模式安装实现详解