hadoop搭建与eclipse开发环境设置_第1页
hadoop搭建与eclipse开发环境设置_第2页
hadoop搭建与eclipse开发环境设置_第3页
hadoop搭建与eclipse开发环境设置_第4页
hadoop搭建与eclipse开发环境设置_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、hadoop 搭建与 eclipse 开发环境设置罗利辉1.前言1.1目标目的很简单,为进行研究与学习,部署一个 hadoop 运行环境,并搭建一个 hadoop 开发与测试环境。具体目标是:在 ubuntu 系统上部署 hadoop在 windows 上能够使用 eclipse 连接 ubuntu 系统上部署的 hadoop 进行开发与测试1.2软硬件要求硬件要求:三台普通 PG当然使用虚拟机也可以, 本环境搭建也是VMWare6.5 虚拟机上进行的。软件要求:操作系统:ubuntu11.04server。Hadoop 版本:hadoop-0.20.2Eclipse 版本:3.3.2Java

2、 版本:1.6.0_26(必须 1.6 以上)注意:Hadoop 版本和 Eclipse 版本请严格按照要求。现在的 hadoop最新版本是 hadoop-0.20.203,我在 windows上使用 eclipse (包括 3.6版本和 3.3.2版本)连接 ubuntu 上的 hadoop-0.20.203 环境一直没有成功。但是开发测试程序是没有问题的,不过需要注意权限问题。如果要减少权限问题的发生,可以这样做:ubuntu 上运行 hadoop 的用户与 windows上的用户一样。1.3环境拓扑图ubuntu31ubuntul32ubu

3、ntu233主机名Hadoop 角色Hadoopjps 命令结果Hadoop 用户Hadoop 安装目录ubuntuMasterslavesNameNodeDataNodeJobTrackerTaskTrackerSecondaryNameNode创建相同的用户的组名:hadoop。安装 hadoop-0.20.2 时使用 hadoop 用户,并且 hadoop 的文件夹归属也是hadoop:hadoop/opt/hadoopUbuntu1slavesDataNodeTaskTrackerUbuntu2slavesDataNodeTaskTrackerWindows开发

4、测试环境女装了 jdk 与 eclipse,本身不需要女装 hadoop,但是需要 hadoop 安装包卜面的 jar 包。注意:ubuntu 既是 NameNode 又是 DataNode,同时也是 JobTracke62. Ubuntu安装安装 ubuntu11.04server 系统,具体略。我是先在虚拟机上安装一个操作系统,然后把 hadoop 也安装配置好了,再克隆二份,然后把主机名与 IP 修改,再进行主机之间的 SSH 配置。如果仅作为 hadoop 的运行与开发环境, 不需要安装太多的系统与网络服务, 或者在需要的时彳通过apt-getinstall 进行安装。不过 SSH 服

5、务是必须的。3. Hadoop安装以下的 hadoop 安装以主机 ubuntu 下进行安装为例。3.1 下载安装 jdk1.6安装版本是:jdk-6u26-linux-i586.bin,我把它安装拷贝到:/opt/jdk1.6.0_263.2 下载解压 hadoop安装包是:hadoop-0.20.2.tar.gz。$tar-zxvfhadoop-0.20.2.tar.gz$mvhadoop-0.20.2/opt/hadoop3.3 修改系统环境配置文件切换为根用户。修改环境配置文件/etc/profile,加入:exportJAVA_HOME=/opt/jdk1.6.0_26exportJ

6、RE_HOME=/opt/jdk1.6.0_26/jreexportCLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATHexportHADOOP_HOME=/opt/hadoopexportPATH=$HADOOP_HOME/bin:$PATH修改地址解析文件/etc/hosts,加入31ubuntu32ubuntul33ubuntu23.4 修改 hadoop 的配置文件切换为 ha

7、doop 用户。修改 hadoop 目录下的 conf/hadoop-env.sh 文件加入 java 的安装根路径:exportJAVA_HOME=/opt/jdk1.6.0_26把 hadoop 目录下的 conf/core-site.xml 文件修改成如下:hadoop.tmp.dir/hadoopAhdfs:/ubuntu:9000Thenameofthedefaultfilesystem.AURIwhoseschemeandauthoritydeterminetheFileSystemim

8、plementation.Theurisschemedeterminestheconfigproperty(fs.SCHEME.impl)namingtheFileSystemimplementationclass.Theurisauthorityisusedtodeterminethehost,port,.dir/hadoop/nameDetermineswhereonthelocalfilesystemtheDFSnamenodeshouldstorethenametable.Ifthi

9、sisacomma-delimitedlistofdirectoriesthenthenametableisreplicatedinallofthedirectories,forredundancy.把 hadoop 目录下的 conf/hdfs-site.xml 文件修改成如下:dfs.data.dir/hadoop/dataDetermineswhereonthelocalfilesystemanDFSdatanodeshouldstoreitsblocks.Ifthisisacomma-delimitedlistofdirectories,thendatawillbestoredinal

10、lnameddirectories,typicallyondifferentdevices.Directoriesthatdonotexistareignored.dfs.replication3Defaultblockreplication.Theactualnumberofreplicationscanbespecifiedwhenthefileiscreated.Thedefaultisusedifreplicationisnotspecifiedincreatetime./configuration把 hadoop 目录下的 conf/mapred-site.xml 文件修改成如下:m

11、apred.job.trackerubuntu:9001ThehostandportthattheMapReducejobtrackerrunsat.Iflocal,thenjobsarerunin-processasasinglemapandreducetask.注意:别忘了 hadoop.tmp.dir,.dir,dfs.data.dir 参数,hadoop 存放数据文件,名字空间等的目录,格式化分布式文件系统时会格式化这个目录。这里指向了/hadoop,所以也要创建这个目录,并且用户归属也是 hadoop:hadoop。把 hadoop 目录下的 conf/masters

12、 文件修改成如下:ubuntu把 hadoop 目录下的 conf/slaves 文件修改成如下:ubuntuubuntu1ubuntu23.5 分发 hadoop 安装文件我使用 VMWare 的克隆功能,将主机 ubuntu 完全克隆两份:ubuntu1 和 ubuntu2,并修改相应的主机名和 IP 地址,这样就可以简单地保持 hadoop 环境基本配置相同。如果是安装在实体物理机上,把在 ubuntu 安装的 jdk,系统配置文件/etc/host,/etc/profile,hadoop 安装目录拷贝到 ubuntu1 和 ubuntu2 相应的目录。3.6 SSH 配置无密码验证配置

13、切换到 Hadoop 用户,在 Hadoop 家目录下面创建.ssh 目录:$cd$mkdir.ssh在 master 节点(即主机 ubuntu)上生成密钥对:$ssh-keygen 式 rsa然后一直按Enter键,按默认的选项生成密钥对保存在.ssh/id_rsa 文件中。然后执行命令:$ssh/.ssh$cpid_rsa.pubauthorized_keys$scpauthorized_keysubuntu1:/home/hadoop/.ssh$scpauthorized_keysubuntu2:/home/hadoop/.ssh从 ubuntu 向 ubuntul 和 ubuntu2

14、 发起 SSH 连接,第一次登录时需要输入密码,以后就不需要了。$sshubuntul$sshubuntu2我们只需要配置从 master 向 slaves 发起 SSH 连接不需要密码就可以了,但这样只能在 master(即在主机 ubuntu)启动或关闭 hadoop 服务。3.7 运行 hadoop使用 Hadoop 用户。首先说明,hadoop 命令和参数都是大小写敏感的,该用大写时用大写,用小写时用小写,否则会执行错误。格式化分布式文件系统:$hadoopnamenode-format在 ubuntu 上启动 hadoop 守护进行:$start-all.sh停止 hadoop 守护

15、进程是:$stop-all.sh在 ubuntu 上查看运行的进程:$jps2971SecondaryNameNode3043JobTracker2857DataNode4229Jps3154TaskTracker2737NameNode在 ubuntu1 上查看运行的进程:$jps1005DataNode2275Jps1090TaskTracker其它命令请参考相关资料。在 windows 上通过 WEB 查看 hadoop 相关信息。修改 C:WINDOWSsystem32driversetchosts 文件,加入主机名与 IP 对应关系:ildTS:WgtrVJ收四回韩户但工 flM岫咕

16、后,工停上川壬龙侑菱无 f.哈芒银SSft-T开*苧可u匚IT1r.ubuntuHadoopMap/ReduceAdministrationSttteJNrriALIZlIMGStetted:Scsi.ji12224OST2011Vlcn:O2021911707Compiletl:Fn国 19 阮 D?,34UTC20i0t?dv5mldantifir;201107162731Clu&terSummary(HeapSize他4.88MB/S6&.69MB)Map零Reduce*TotalNod*MpTaskCapacityR0duc4Tas-kCAPMltyAVQITaskii

17、NodeBlackRifedNodes0D0Q00.Q|SchedulingInformationSchedulingInformafiGinNAFilter(Jobkd,Priority.Uter.MmLFzimiy*wnilh才?小1Mlih*hvAmlh,tolvgflunvri#lrt1Anrii由葡IAITII片段PlraO7&$访问:http:/ubuntu:50070 可以查看 NameNode 及整个分布式文件系统的状态等:31ubuntu32ubuntu133ubuntu2访问:http:/ubu

18、ntu:50030可以查看 JobTracker 的运行状态:,啷。上朝电*S-希武冲工具v口iwju0净口*4QUM-.3.8 运行 WordCount 实例WordCount是hadoop自带的实例, 统计一批文本文件中各单词出现的资料, 输出到指定的output目录中,输出目录如果已经存在会报错。$cd/opt/hadoop$hadoopfs-mkdirinput$hadoopfs-copyFromLocal/opt/hadoop/*.txtinput/$hadoopjarhadoop-0.20.2-examples.jarwordcountinputoutput$hadoopfs-ca

19、toutput/*#4. Windows下eclipse开发环境配置4.1 系统环境配置在 windows 上通过 WEB 查看 hadoop 相关信息。修改 C:WINDOWSsystem32driversetchosts 文件,加入主机名与 IP 对应关系:3132334.2 安装开发 hadoop 插件?各 hadoop 安装包 hadoopcontribeclipse-pluginhadoop-0.20.2-eclipse-plugin.jar 拷贝至 Ueclipse 的插件目录 plugins 下。需要注意的是

20、插件版本(及后面开发导入的所有 jar 包)与运行的 hadoop 一致,否则可能会出现EOFException异常。重启eclipse,打开windows-openperspective-other-map/reduce到map/reduce开发视图。4.3 设置连接参数打开 windows-showview-other-map/reduceLocations后弹出的对话框(Generaltab)进行参数的添加:参数说明如下:Locationname:任意map/reducemaster:与 mapred-site.xml 里面 mapred.job.tracker 设置致。DFSmaste

21、r:与 core-site.xml 里 设置一致。Username:服务器上运行 hadoop 服务的用户名。然后是打开Advancedparameters”设置面板,修改相应参数。上面的参数填写以后,也会反映到这里相应的参数:主要关注下面几个参数::与 core-site.xml 里 设置一致。mapred.job.tracker:与 mapred-site.xml 里面 mapred.job.tracker 设置致。dfs.replication:与 hdfs-site.xml 里面的 dfs.r

22、eplication致。hadoop.tmp.dir:与 core-site.xml 里 hadoop.tmp.dir 设置致。hadoop.job.ugi:并不是设置用户名与密码。是用户与组名,所以这里填写 hadoop,hadoop。ubuntuubuntu1ubuntu2可以看视图,在点击大象说明:第一次设置的时候可能是没有 hadoop.job.ugi 和 dfs.replication 参数的,不要紧,确认保存。打开 ProjectExplorer 中 DFSLocations 目录,应该可以年看到文件系统中的结构了。但是在/hadoop/mapred/system 下却没有查看权限

23、,如下图:=iMSILJ修 UIlErrE-T而且删除文件的时候也会报错:这个原因是我使用地本用户 Administrator(我是用管理员用户登陆来地 windows 系统的)进行远程 hadoop 系统操作,没有权限。此时再打开Advancedparameters”设置面板,应该可以看到 hadoop.job.ugi 了,这个参数默认是本地操作系统的用户名,如果不幸与远程 hadoop 用户不一致,那就要改过来了,将 hadoop 加在第一个,并用逗号分隔。如:ohng】hado|&pJAdminislrat&r,Hone,保存配置后,重新启动 eclipse。/hadoo

24、p/mapred/system 下就一目了然了,删除文件也 OK。ProjsctErplorsiES二工JZl-DFSLocati-Iffhadooi) )&G)-Q?hadavp)Q&naprd(11=.L3systftUjobtracker.ino(.4.0b;r31s-&1西尸(1)白&uir)二l.卜且4匕(1jrwiiiramamiaimianrljiinput(4)iCKIIimaniBiMi4.4 运行 hadoop 程序首先将 hadoop 安装包下面的所有 jar 包都导到 eclipse 工程里。然后建立一个类:DFSOperator.jav

25、a,该类写了四个基本方法:创建文件,删除文件,把文件内容读为字符串,将字符串写入文件。同时有个 main 函数,可以修改测试:packagecom.kingdee.hadoop;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FSDataOutputStream;importorg

26、.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.Path;/*Theutilitiestooperatefileonhadoophdfs.*authorluolihui2011-07-18*/publicclassDFSOperatorprivatestaticfinalStringROOT_PATH=hdfs:/;privatestaticfinalintBUFFER_SIZE=4096;/*construct.*/publicDFSOperator()/*Createafileonhdfs.Therootpathis/.for

27、example:DFSOperator.createFile(/lory/test1.txt,true);parampaththefilenametoopenparamoverwriteifafilewiththisnamealreadyexists,theniftrue,thefilewillbereturntrueifdeleteissuccessfulelseIOException.throwsIOException/publicstaticbooleancreateFile(Stringpath,booleanoverwrite)throwsIOException/Stringuri=

28、hdfs:/00:9000”;/FileSystemfs1=FileSystem.get(URI.create(uri),conf);Configurationconf=newConfiguration();FileSystemfs=FileSystem.get(conf);Pathf=newPath(ROOT_PATH+path);fs.create(f,overwrite);fs.close();returntrue;/*Deleteafileonhdfs.Therootpathis/.forexample:DFSOperator.deleteFile(/user/h

29、adoop/output,true);parampaththepathtodeleteparamrecursiveifpathisadirectoryandsettotrue,thedirectoryisdeletedelsethrowsanexception.Incaseofafiletherecursivecanbesettoeithertrueorfalse.returntrueifdeleteissuccessfulelseIOException.throwsIOException*/publicstaticbooleandeleteFile(Stringpath,booleanrec

30、ursive)throwsIOException/Stringuri=hdfs:/00:9000”;/FileSystemfs1=FileSystem.get(URI.create(uri),conf);Configurationconf=newConfiguration();FileSystemfs=FileSystem.get(conf);Pathf=newPath(ROOT_PATH+path);fs.delete(f,recursive);fs.close();returntrue;/*Readafiletostringonhadoophdfs.Fromstrea

31、mtostring.forSystem.out.println(DFSOperator.readDFSFileToString(/user/hadoop/input/test3.txt);parampaththepathtoreadreturntrueifreadissuccessfulelseIOException.throwsIOException*/publicstaticStringreadDFSFileToString(Stringpath)throwsIOExceptionConfigurationconf=newConfiguration();FileSystemfs=FileS

32、ystem.get(conf);Pathf=newPath(ROOT_PATH+path);InputStreamin=null;Stringstr=null;StringBuildersb=newStringBuilder(BUFFER_SIZE);if(fs.exists(f)in=fs.open(f);BufferedReaderbf=newBufferedReader(newInputStreamReader(in);while(str=bf.readLine()!=null)sb.append(str);sb.append(n);in.close();bf.close();fs.cl

33、ose();returnsb.toString();elsereturnnull;/*Writestringtoahadoophdfsfile.forexample:DFSOperatorwriteStringToDFSFile(/lory/test1.txt,Youareabadman.nReally!n);parampaththefilewherethestringtowritein.paramstringthecontexttowriteinafile.returntrueifwriteissuccessfulelseIOException.throwsIOExceptionexampl

34、e:/publicstaticbooleanwriteStringToDFSFile(Stringpath,Stringstring)throwsIOExceptionConfigurationconf=newConfiguration();FileSystemfs=FileSystem.get(conf);FSDataOutputStreamos=null;Pathf=newPath(ROOT_PATH+path);os=fs.create(f,true);os.writeBytes(string);os.close();fs.close();returntrue;publicstaticv

35、oidmain(Stringargs)tryDFSOperator.createFile(/lory/test1.txt,true);DFSOperator.deleteFile(/dfs_operator.txt,true);DFSOperator.writeStringToDFSFile(/lory/test1.txt,Youareabadman.nReally?n);System.out.println(DFSOperator.readDFSFileToString(/lory/test1.txt);catch(IOExceptione)/TODOAuto-generatedcatchb

36、locke.printStackTrace();System.out.println(=end=);然后 RunAsRunonHadoopChooseanexitsingserverfromthelistbelowfinish.结果很简单(那个警告不管):11/07/1618:44:32WARNconf.Configuration:DEPRECATED:hadoop-site.xmlfoundintheclasspath.Usageofhadoop-site.xmlisdeprecated.Insteadusecore-site.xml,mapred-site.xmlandhdfs-site.

37、xmltooverridepropertiesofcore-default.xml,mapred-default.xmlandhdfs-default.xmlrespectivelyYouareabadman.Really?=end=也可以运行 hadoop 自带的 WorkCount 程序,找到其源代码导进来,然后设置输入输出参数,然后同样“Runonhadoop”。具体步骤不再示范。每“Runonhadoop”都会在 workspace.metadata.pluginsorg.apache.hadoop.eclipse下生成临时 jar包。不过第一次需要 Runonhadoop,以后只需要

38、点击那运行的绿色按钮了。5.错误及处理5.1安全模式问题我在 eclipse 上删除 DFS 上的文件夹时,出现下面错误:白DeletefileViiabLetodaLetwfileLdf5:ulmiktTi;3000/TJser/hdQop/ciuiputorg.apache,hadcap.ipc.RemoteExeeption:org.apacke.kadoop.ItJfs.erver.rvamenode.SafeMo4eEstcepion:Cannotdelete/user/liaiiaop/tnitput.ITameiwdeiinEqfemode.ITsekadoorpdfsajJmi

39、n-Safftode1ea.vftntoLltma.iemode.atorg.4pacKi.hitep.lidfs.ssrvr.电rt*d上.FElTiiheEystafu.dsleleln+ernilCjSNamesy5lemjawa:1T0D)org.hadcop.Jtdfs.server,nsmgnod电.购可丽电工了工土自断.ele(jSNafiQEbstein.jav.15&0)?rg.arh猛deop,hdEs.serv口砌*nsdaF皿片Ikda4片1片t片Qkm空耳中日片-jan;517)itzunrtflfict.GenftTstfidM&tholAccfeS

40、EorT.invokeQJhlnkiwrLSource)得tsun.reflect.DeletirigfJ4thodAccssorlnpl.invokie(Dels?atingithdAccfiSscrImp1.jara;25)atjava.Isit5.Yaflict.Ms+hfti.iikvak&(Methai.javaiSQT)atorgapauhA,ha蠢噌,ipc,班匚32Xv=,Call(RIC.jav;503)Atorg.apache,hidsop.ipi.EervftrSHMtil&rll.runtSirver.jiva.295Jatorg.整ache,had。罐

41、,ipc.ServeriHaniler$l,run(Server,jitjiVA.eurity.A.sesCantralltv.AdFrivilfiCNitiM4tk&d)tj*Y4M.sicority,mth.Subjtct.4小( (Subjwut.ava:39G*targ.hidsoT,ip*.Servftr$HinAl&i,.runServi.jiV4.53)错误提示说得也比较明示,是 NameNode 在安全模式中,其解决方案也一并给出。类似的运行 hadoop程序时,有时候会报以下错误:org.apache.hadoop.dfs.SafeModeException:

42、Cannotdelete/user/hadoop/input.Namenodeisinsafemode解除安全模式:bin/hadoopdfsadmin-safemodeleave用户可以通过 dfsadmin-safemodevalue 来操作安全模式,参数 value 的说明如下:enter-进入安全模式leave-强制 NameNode 离开安全模式get-返回安全模式是否开启的信息wait-等待,一直到安全模式结束。5.2开发时报错Permissiondeniedorg.apache.hadoop.security.AccessControlExceptionorg.apache.hadoop.security.AccessControlExceptionuser=Administrator,access=WRITE,inode=test1.txt:hadoop:supergroup:rw-r-r-atsun.reflect.NativeConstructorAccessorImpl.newInstance0(Method)atsun.reflect.NativeConst

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论