基于HBase Hadoop 分布式集群环境下的MapReduce程序开发
2015-02-01 17:21
162 查看
HBase分布式集群环境搭建成功后,连续4、5天实验客户端Map/Reduce程序开发,这方面的代码网上多得是,写个测试代码非常容易,可是真正运行起来可说是历经挫折。下面就是我最终调通并让程序在集群上运行起来的一些经验教训。
一、首先说一下我的环境:
1,集群的环境配置请见这篇博文。
2,开发客户机环境:操作系统是CentOS6.5,JDK版本是1.7.0-60,开发工具是Eclipse(原始安装是从google的ADT网站下载的ADT专用开发环境,后来加装了Java企业开发的工具,启动Flash还是ADT的:))。
3,etc/hosts文件添加了集群的所有主机。
二、必要准备工作:
1,java类库准备:从集群中scp复制了Hadoop/share下所有文件,hbase/lib目录下的所有文件到开发机的/home/username/lib目录下备用(其中username是开发用户名称),打开eclipse,选择菜单window->Preferences,
在左侧树形菜单中导航至Java--Build Path--User Libraries,我添加了3个User Library,“hadoop-common”,“hadoop-yarn”,“hbase”
然后分别添加如下(这是User Libraries的导出文件,可以在上面的界面中导入)的jar包。
?
注:这个很有可能并不是运行Hbase Map/Reduce任务需要的最精简的类库,恕我没有逐一测试。
2,新建一个Java/Application,我的名字就叫hbase1,然后在项目project视图中点击右键,选择“Build Path”--“Add Libraries...”--选择“User Library”,然后选中上面添加的三个User Library。
3,复制集群的三个配置文件到项目的src目录下,这三个配置文件是:
?
三、编写代码,这里基本按照我所遇挫折过程逐步完善代码(缺少类库之类的就略掉了):
1,遭遇空指针错误--reverseDNS
主文件内容:
?
TestHBaseMapRed.java内容:
+ View Code?
此时运行,会报如下错误:
?
看错误,不知道为什么需要调用DNS服务,hosts文件好像没有作用, 搜索很久,终于在一个老外的问题里找到答案,conf添加如下设置解决。
?
添加后,运行仍会报下面的错无,但是好像并不影响程序继续运行:
+ View Code?
2,本地运行的问题。解决了上面的问题,程序终于可以运行了,可是我在rm的web界面中却看不到我提交的任务,再次求助bing,终于找到症结所在,需要添加设置如下:
?
3,添加了上面语句后,新的问题又来了,运行程序出现新的错误:
+ View Code?
试着设置 job.setJarByClass(Test1.class); 无效。此问题困扰了我两天,难道只能上传到集群集群上运行吗?这样也太不方便了,N久后,终于我有幸找到了小鱼儿的博客 的这篇文章MapReduce提交作业常见问题,终于是找到了解决方法。我采用的是文中所提第三种方法,在程序开始运行前自己首先打包自己,就是调用的是写好的shell文件,这里也贴出来,以下两个文件在和src同级的dist目录中
+ View Code?
?
同时,修改了TestHBaseMapred.run方法签名,传递jar包路径,新的run方法如下:
+ View Code?
4,在选择写入文件的Reduce方法是,同样遇到权限问题,我采用的解决方法是给所有用户授予了读写权限,这里注意/tmp也要授权,运行时用到
?
另外,最后还有一点注意,设置log4j.properties文件中的级别为INFO,不要设置为WARN,否则看不到很多信息,不利于发现错误原因。
?
四、At last,终于大功告成,看看map/reduce的运行过程
+ View Code?
HBase分布式集群环境搭建成功后,连续4、5天实验客户端Map/Reduce程序开发,这方面的代码网上多得是,写个测试代码非常容易,可是真正运行起来可说是历经挫折。下面就是我最终调通并让程序在集群上运行起来的一些经验教训。
一、首先说一下我的环境:
1,集群的环境配置请见这篇博文。
2,开发客户机环境:操作系统是CentOS6.5,JDK版本是1.7.0-60,开发工具是Eclipse(原始安装是从google的ADT网站下载的ADT专用开发环境,后来加装了Java企业开发的工具,启动Flash还是ADT的:))。
3,etc/hosts文件添加了集群的所有主机。
二、必要准备工作:
1,java类库准备:从集群中scp复制了Hadoop/share下所有文件,hbase/lib目录下的所有文件到开发机的/home/username/lib目录下备用(其中username是开发用户名称),打开eclipse,选择菜单window->Preferences,
在左侧树形菜单中导航至Java--Build Path--User Libraries,我添加了3个User Library,“hadoop-common”,“hadoop-yarn”,“hbase”
然后分别添加如下(这是User Libraries的导出文件,可以在上面的界面中导入)的jar包。
?
2,新建一个Java/Application,我的名字就叫hbase1,然后在项目project视图中点击右键,选择“Build Path”--“Add Libraries...”--选择“User Library”,然后选中上面添加的三个User Library。
3,复制集群的三个配置文件到项目的src目录下,这三个配置文件是:
?
1,遭遇空指针错误--reverseDNS
主文件内容:
?
+ View Code?
?
?
+ View Code?
?
+ View Code?
+ View Code?
+ View Code?
?
?
+ View Code?
相关文章推荐
- 基于HBase Hadoop 分布式集群环境下的MapReduce程序开发
- HADOOP 分布式集群环境下第一个mapReduce程序—WordCount
- 【大数据】开发环境搭建(二):hadoop伪分布式集群环境搭建(上)
- 【大数据】开发环境搭建(三):hadoop伪分布式集群环境搭建(下)
- 基于vmware workstations 10 、centos6.4和hadoop-2.7.1的hadoop完全分布式集群的开发环境搭建
- windows eclipse hadoop 集群开发环境搭建(分布式模式)
- 在 Ubuntu 上搭建 Hadoop 分布式集群 Eclipse 开发环境
- hadoop学习之HDFS(2.1):linux下eclipse中配置hadoop-mapreduce开发环境并运行WordCount.java程序
- ubuntu上搭建eclipse下hadoop-2.7.1集群(全分布式)开发环境遇到的几个问题笔记
- windows下idea中搭建hadoop开发环境,向远程hadoop集群提交mapreduce任务
- windows下maven环境开发hadoop mapreduce程序报Cannot initialize Cluster
- MapReduce程序的3种集群提交运行模式详解---基于Windows与Linux两种开发环境
- Hadoop集群链接_Eclipse开发环境:成功运行mapreduce所遇问题
- Windows平台开发Mapreduce程序远程调用运行在Hadoop集群—Yarn调度引擎异常
- Hadoop集群_2_Eclipse开发环境设置
- 王家林的“云计算分布式大数据Hadoop实战高手之路---从零开始”的第五讲Hadoop图文训练课程:解决典型Hadoop分布式集群环境搭建问题
- Hadoop集群_Eclipse开发环境设置
- (六)hadoop系列之__hadoop分布式集群环境搭建
- Hadoop集群(第7期)_Eclipse开发环境设置
- 解决典型Hadoop分布式集群环境搭建问题