迁移到Hadoop 0.20.2后的一些感想
来源:互联网 发布:echarts 实时数据折线 编辑:程序博客网 时间:2024/05/17 23:27
迁移到Hadoop 0.20.2后的一些感想
------------------------------------------------
1. 问题:
离Hadoop 0.20.2的发布也有三个月了,平时一直在用http://www.cloudera.com/提供的一个Hadoop版本,它也是基于Hadoop 0.18.3开发的,因为它的一个比较稳定的版本。但是最近在用hypertable 0.9.2.7的时候发现我本地jni调用老是会出现Hyperspace COMM already commected,查了一下原因,是hyperspace的COMM被占用,连接出错,网上找了一下,作者也说有这个问题,还说什么修改一下也不是很难。看了一下它的源代码,是socket连接抛出来的,要改的话要修改hyperspace模块的代码,由于hyperspace底层是用oracle的berkeley db的,对它也不是很熟悉,所以没去改了,想直接升级到0.9.3.1,看它有没有解决这个问题,但是让我失望的是它还是没有解决这个问题,到是在它的thrift端做了很多改动,而且把对hypertable表的TableSplit也加入了它的thrift服务端中,也正是我想要的,呵呵,这样也可以绕过前面的hyperspace的问题,因为它在thrift的服务端只生成了一个Hypertable Client,这样就不会出现COMM connected的问题了,而且对它的Cell也做了比较大的改动,用了最新的Hadoop 0.20.2。没办法,要升就一起升吧,Hadoop 0.18.3->Hadoop 0.20.2 ; hypertable 0.9.2.7 -> hypertable 0.9.3.1,原来的TableInputFomat和TableOutputFormat看来都要做修改了,于是就有了下面的这些感想。
2. Hadoop 0.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.2 API的变化
在Hadoop 0.20.2中,API的变化也是很大的,主要把一些接口变成了抽象类,以此在提高可扩展性,进行了一些重构,变化还是满大的。下面举一个例子来说明这里的变化。
2.2.1 Hadoop的一个example
这是Hadoop中的一个WordCount的例子,从中你可以发现Map和Reduce的接口变化,还有JobClient的变化。
注:
1. 这里的Job好像只有setNumReduceTasks方法了,没有setNumMapTasks方法了,它在原来的JobConf里有,但是JobContext没有开放出来。
2. JobContext组合了org.apache.hadoop.mapred.JobConf类,而这个JobConf类已经是deprecated,估计JobConf也是个过渡产品。
3. Hypertable 0.9.3.1的一些变化
主要感觉它的thrift的java客户端变化很大。为了支持mapreduce,很多东西都集成到了thrift服务端。加入了MapReduce connector,Hyperspace的replication,还有DUMP TABLE等。在它的thrift的客户端中加入了InputFormat和OutputFormat,还有TableSplit,可以用来对Hypertable中的表进行Key和Value对的读取,还是很方便的。但是它没有对TableSplit后的range_location进行处理,只是用了“localhost“来进行Host的连接,不知道是为什么?
看来要在Hypertable中使用kfs还是要进行源代码的编译还有kfs的动态库。头大啊。
- 迁移到Hadoop 0.20.2后的一些感想
- 辞职后的一些感想
- 收到offer后的一些感想
- 日本地震后的一些感想
- 扒光tp后的一些感想
- 读《人件》后的一些感想
- SDN-NFV技术研讨会后的一些感想
- 迁移到ubuntu后windows下一些常用软件的替代方法
- Oracle迁移到PostgreSQL的一些经验
- 我做为一个程序员的一些遭遇后的感想
- u-boot移植后的一些琐事和感想。。。
- 记cathy老师课程结束后的一些感想
- 自学通过软件设计师考试后的一些感想
- Vmware下装Mac OX后的一些感想
- 读完小说<摆渡人>后的一些感想
- 重构培训课程后的一些感想
- 对象成员指针学习到的一些感想
- 考试后的感想
- 网络基础
- 八连跳
- 求助
- 求助
- 开发感悟
- 迁移到Hadoop 0.20.2后的一些感想
- 清除挂马网址
- valgrind使用说明
- C#编写Calendar控件浅析
- Zigbee在.Net Micro Framework系统中的应用
- 注册表搜索
- C++学习经典指引
- 到了这才知道知识的价值
- 桌面提醒工具 Active Desktop Calendar