hadoop搭建与eclipse开发环境设置.docx

上传人:b****6 文档编号:12058316 上传时间:2023-06-04 格式:DOCX 页数:22 大小:322.43KB
下载 相关 举报
hadoop搭建与eclipse开发环境设置.docx_第1页
第1页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第2页
第2页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第3页
第3页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第4页
第4页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第5页
第5页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第6页
第6页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第7页
第7页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第8页
第8页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第9页
第9页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第10页
第10页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第11页
第11页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第12页
第12页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第13页
第13页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第14页
第14页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第15页
第15页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第16页
第16页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第17页
第17页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第18页
第18页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第19页
第19页 / 共22页
hadoop搭建与eclipse开发环境设置.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

hadoop搭建与eclipse开发环境设置.docx

《hadoop搭建与eclipse开发环境设置.docx》由会员分享,可在线阅读,更多相关《hadoop搭建与eclipse开发环境设置.docx(22页珍藏版)》请在冰点文库上搜索。

hadoop搭建与eclipse开发环境设置.docx

hadoop搭建与eclipse开发环境设置

hadoop搭建与eclipse开发环境设置

   ――罗利辉

1.前言

1.1目标

目的很简单,为进行研究与学习,部署一个hadoop运行环境,并搭建一个hadoop开发与测试环境。

具体目标是:

✓在ubuntu系统上部署hadoop

✓在windows上能够使用eclipse连接ubuntu系统上部署的hadoop进行开发与测试

1.2软硬件要求

硬件要求:

三台普通PC。

当然使用虚拟机也可以,本环境搭建也是VMWare6.5虚拟机上进行的。

软件要求:

操作系统:

ubuntu11.04server。

Hadoop版本:

hadoop-0.20.2

Eclipse版本:

3.3.2

Java版本:

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环境拓扑图

主机名

Hadoop角色

Hadoopjps命令结果

Hadoop用户

Hadoop安装目录

ubuntu

Master

slaves

NameNode

DataNode

JobTracker

TaskTracker

SecondaryNameNode

创建相同的用户的组名:

hadoop。

安装hadoop-0.20.2时使用hadoop用户,并且hadoop的文件夹归属也是hadoop:

hadoop

/opt/hadoop

Ubuntu1

slaves

DataNode

TaskTracker

Ubuntu2

slaves

DataNode

TaskTracker

Windows

开发测试环境

安装了jdk与eclipse,本身不需要安装hadoop,但是需要hadoop安装包下面的jar包。

 注意:

ubuntu既是NameNode又是DataNode,同时也是JobTracker。

2.Ubuntu安装

安装ubuntu11.04server系统,具体略。

我是先在虚拟机上安装一个操作系统,然后把hadoop也安装配置好了,再克隆二份,然后把主机名与IP修改,再进行主机之间的SSH配置。

如果仅作为hadoop的运行与开发环境,不需要安装太多的系统与网络服务,或者在需要的时候通过apt-getinstall进行安装。

不过SSH服务是必须的。

3.Hadoop安装

以下的hadoop安装以主机ubuntu下进行安装为例。

3.1下载安装jdk1.6

安装版本是:

jdk-6u26-linux-i586.bin,我把它安装拷贝到:

/opt/jdk1.6.0_26

3.2下载解压hadoop

安装包是:

hadoop-0.20.2.tar.gz。

$tar–zxvfhadoop-0.20.2.tar.gz

$mvhadoop-0.20.2/opt/hadoop

3.3修改系统环境配置文件

切换为根用户。

●修改环境配置文件/etc/profile,加入:

exportJAVA_HOME=/opt/jdk1.6.0_26

exportJRE_HOME=/opt/jdk1.6.0_26/jre

exportCLASSPATH=.:

$JAVA_HOME/lib:

$JRE_HOME/lib:

$CLASSPATH

exportPATH=$JAVA_HOME/bin:

$JRE_HOME/bin:

$PATH

exportHADOOP_HOME=/opt/hadoop

exportPATH=$HADOOP_HOME/bin:

$PATH

●修改地址解析文件/etc/hosts,加入

192.168.69.231ubuntu

192.168.69.232ubuntu1

192.168.69.233ubuntu2

3.4修改hadoop的配置文件

切换为hadoop用户。

●修改hadoop目录下的conf/hadoop-env.sh文件

加入java的安装根路径:

exportJAVA_HOME=/opt/jdk1.6.0_26

●把hadoop目录下的conf/core-site.xml文件修改成如下:

xmlversion="1.0"?

>

xml-stylesheettype="text/xsl"href="configuration.xsl"?

>

--Putsite-specificpropertyoverridesinthisfile.-->

hadoop.tmp.dir

/hadoop

Abaseforothertemporarydirectories.

fs.default.name

hdfs:

//ubuntu:

9000

Thenameofthedefaultfilesystem.AURIwhose

schemeandauthoritydeterminetheFileSystemimplementation.The

uri'sschemedeterminestheconfigproperty(fs.SCHEME.impl)naming

theFileSystemimplementationclass.Theuri'sauthorityisusedto

determinethehost,port,etc.forafilesystem.

dfs.hosts.exclude

excludes

dfs.name.dir

/hadoop/name

DetermineswhereonthelocalfilesystemtheDFSnamenodeshouldstorethenametable.Ifthisisacomma-delimitedlistofdirectoriesthenthenametableisreplicatedinallofthedirectories,forredundancy.

●把hadoop目录下的conf/hdfs-site.xml文件修改成如下:

xmlversion="1.0"?

>

xml-stylesheettype="text/xsl"href="configuration.xsl"?

>

--Putsite-specificpropertyoverridesinthisfile.-->

dfs.data.dir

/hadoop/data

DetermineswhereonthelocalfilesystemanDFSdatanodeshouldstoreitsblocks.Ifthisisacomma-delimitedlistofdirectories,thendatawillbestoredinallnameddirectories,typicallyondifferentdevices.Directoriesthatdonotexistareignored.

dfs.replication

3

Defaultblockreplication.Theactualnumberofreplicationscanbespecifiedwhenthefileiscreated.Thedefaultisusedifreplicationisnotspecifiedincreatetime.

●把hadoop目录下的conf/mapred-site.xml文件修改成如下:

xmlversion="1.0"?

>

xml-stylesheettype="text/xsl"href="configuration.xsl"?

>

--Putsite-specificpropertyoverridesinthisfile.-->

mapred.job.tracker

ubuntu:

9001

ThehostandportthattheMapReducejobtrackerrunsat.If"local",thenjobsarerunin-processasasinglemapandreducetask.

注意:

别忘了hadoop.tmp.dir,dfs.name.dir,dfs.data.dir参数,hadoop存放数据文件,名字空间等的目录,格式化分布式文件系统时会格式化这个目录。

这里指向了/hadoop,所以也要创建这个目录,并且用户归属也是hadoop:

hadoop。

●把hadoop目录下的conf/masters文件修改成如下:

ubuntu

●把hadoop目录下的conf/slaves文件修改成如下:

ubuntu

ubuntu1

ubuntu2

3.5分发hadoop安装文件

我使用VMWare的克隆功能,将主机ubuntu完全克隆两份:

ubuntu1和ubuntu2,并修改相应的主机名和IP地址,这样就可以简单地保持hadoop环境基本配置相同。

如果是安装在实体物理机上,把在ubuntu安装的jdk,系统配置文件/etc/host,/etc/profile,hadoop安装目录拷贝到ubuntu1和ubuntu2相应的目录。

3.6SSH配置无密码验证配置

切换到Hadoop用户,在Hadoop家目录下面创建.ssh目录:

$cd

$mkdir.ssh

在master节点(即主机ubuntu)上生成密钥对:

$ssh-keygen–trsa

然后一直按[Enter]键,按默认的选项生成密钥对保存在.ssh/id_rsa文件中。

然后执行命令:

$ssh~/.ssh

$cpid_rsa.pubauthorized_keys

$scpauthorized_keysubuntu1:

/home/hadoop/.ssh

$scpauthorized_keysubuntu2:

/home/hadoop/.ssh

从ubuntu向ubuntu1和ubuntu2发起SSH连接,第一次登录时需要输入密码,以后就不需要了。

$sshubuntu1

$sshubuntu2

我们只需要配置从master向slaves发起SSH连接不需要密码就可以了,但这样只能在master(即在主机ubuntu)启动或关闭hadoop服务。

3.7运行hadoop

使用Hadoop用户。

首先说明,hadoop命令和参数都是大小写敏感的,该用大写时用大写,用小写时用小写,否则会执行错误。

格式化分布式文件系统:

$hadoopnamenode-format

在ubuntu上启动hadoop守护进行:

$start-all.sh

停止hadoop守护进程是:

$stop-all.sh

在ubuntu上查看运行的进程:

$jps

2971SecondaryNameNode

3043JobTracker

2857DataNode

4229Jps

3154TaskTracker

2737NameNode

在ubuntu1上查看运行的进程:

$jps

1005DataNode

2275Jps

1090TaskTracker

其它命令请参考相关资料。

在windows上通过WEB查看hadoop相关信息。

修改C:

\WINDOWS\system32\drivers\etc\hosts文件,加入主机名与IP对应关系:

192.168.69.231ubuntu

192.168.69.232ubuntu1

192.168.69.233ubuntu2

访问:

http:

//ubuntu:

50030 可以查看JobTracker的运行状态:

访问:

http:

//ubuntu:

50070 可以查看NameNode及整个分布式文件系统的状态等:

3.8运行WordCount实例

WordCount是hadoop自带的实例,统计一批文本文件中各单词出现的资料,输出到指定的output目录中,输出目录如果已经存在会报错。

$cd/opt/hadoop

$hadoopfs-mkdirinput

$hadoopfs-copyFromLocal/opt/hadoop/*.txtinput/

$hadoopjarhadoop-0.20.2-examples.jarwordcountinputoutput

$hadoopfs-catoutput/*#最后查看结果

4.Windows下eclipse开发环境配置

4.1系统环境配置

在windows上通过WEB查看hadoop相关信息。

修改C:

\WINDOWS\system32\drivers\etc\hosts文件,加入主机名与IP对应关系:

192.168.69.231ubuntu

192.168.69.232ubuntu1

192.168.69.233ubuntu2

4.2安装开发hadoop插件

将hadoop安装包hadoop\contrib\eclipse-plugin\hadoop-0.20.2-eclipse-plugin.jar拷贝到eclipse的插件目录plugins下。

  需要注意的是插件版本(及后面开发导入的所有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设置一致。

DFSmaster:

与core-site.xml里fs.default.name设置一致。

Username:

服务器上运行hadoop服务的用户名。

然后是打开“Advancedparameters”设置面板,修改相应参数。

上面的参数填写以后,也会反映到这里相应的参数:

主要关注下面几个参数:

fs.defualt.name:

与core-site.xml里fs.default.name设置一致。

mapred.job.tracker:

与mapred-site.xml里面mapred.job.tracker设置一致。

dfs.replication:

与hdfs-site.xml里面的dfs.replication一致。

hadoop.tmp.dir:

与core-site.xml里hadoop.tmp.dir设置一致。

hadoop.job.ugi:

并不是设置用户名与密码。

是用户与组名,所以这里填写hadoop,hadoop。

说明:

第一次设置的时候可能是没有hadoop.job.ugi和dfs.replication参数的,不要紧,确认保存。

打开ProjectExplorer中DFS Locations目录,应该可以年看到文件系统中的结构了。

但是在/hadoop/mapred/system下却没有查看权限,如下图:

而且删除文件的时候也会报错:

这个原因是我使用地本用户Administrator(我是用管理员用户登陆来地windows系统的)进行远程hadoop系统操作,没有权限。

此时再打开“Advancedparameters”设置面板,应该可以看到hadoop.job.ugi了,这个参数默认是本地操作系统的用户名,如果不幸与远程hadoop用户不一致,那就要改过来了,将hadoop加在第一个,并用逗号分隔。

如:

  保存配置后,重新启动eclipse。

/hadoop/mapred/system下就一目了然了,删除文件也OK。

4.4运行hadoop程序

首先将hadoop安装包下面的所有jar包都导到eclipse工程里。

然后建立一个类:

DFSOperator.java,该类写了四个基本方法:

创建文件,删除文件,把文件内容读为字符串,将字符串写入文件。

同时有个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.apache.hadoop.fs.FileSystem;

importorg.apache.hadoop.fs.Path;

/**

*

*Theutilitiestooperatefileonhadoophdfs.

*

*@authorluolihui2011-07-18

*

*/

publicclassDFSOperator{

privatestaticfinalStringROOT_PATH="hdfs:

///";

privatestaticfinalintBUFFER_SIZE=4096;

/**

*construct.

*/

publicDFSOperator(){}

/**

*Createafileonhdfs.Therootpathis/.

*forexample:

DFSOperator.createFile("/lory/test1.txt",true);

*@parampaththefilenametoopen

*@paramoverwriteifafilewiththisnamealreadyexists,theniftrue,thefilewillbe

*@returntrueifdeleteissuccessfulelseIOException.

*@throwsIOException

*/

publicstaticbooleancreateFile(Stringpath,booleanoverwrite)throwsIOException

{

//Stringuri="hdfs:

//192.168.1.100:

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/hadoop/output",true);

*@parampaththepathtodelete

*@paramrecursiveifpathisadirectoryandsettotrue,thedirectoryisdeletedelsethrowsanexception.Incaseofafiletherecursivecanbesettoeithertrueorfalse.

*@returntrueifdeleteissuccessfulelseIOException.

*@throwsIOException

*/

publicstaticbooleandeleteFile(Stringpath,booleanrecursive)throwsIOException

{

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2