Windows下使用Hadoop安装与测试实例

Windows下使用Hadoop安装与测试实例

2023年7月13日发(作者:)

Windows下使用Hadoop0.20.2实例

1.1 Windows 下使用Hadoop 的环境配置

(1)安装Hadoop 前,首先需要安装Cygwin

首先下载Cygwin(/),当 下载成功后,直接运行,在弹出的“Cygwin Net Release Setup Program”的对话框中直接点击“下一步”,选择“download source”如下:

选择“Install from Internet”,进入下图所示对话框:

设置Cygwin 的安装目录,Install For 选择“All Users”,Default Text File Type

选择“Unix/binary”。“下一步”之后,设置Cygwin 安装包存放目录:

1 设置“Internet Connection”的方式,选择“Direct Connection”:

之后选择“Download site”:

选择最好选.cn结尾的,若无可以随意选择,若安装失败可多尝试几个。

2 “下一步”之后,可能会弹出下图的“Setup Alert”对话框,直接“确定”即可。

在上图所示的对话框过程中,可能会弹出如下图所示的“Setup Alert”对话框,直接点击“确定”即可。

进入“Select Packages”对话框,必须保证“Net Category”下的“OpenSSL”被安装:

安装中需要选中Net category 中的openssh,如下图所示:

如果还打算在eclipse上编译Hadoop,则还必须安装“Base Category”下的“sed”,如下图所示:

3 另外,安装“Editors Category”下的vim,以方便在Cygwin上直接修改配置文件;“Devel Category”下的subversion 建议安装,如下图所示:

安装完成后进行环境变量的配置。

(2)安装JDK

(3)配置Windows 系统变量

新建系统变量CYGWIN,变量值为ntsec

编辑系统变量里的Path 变量,将JDK的bin目录、Cygwin的bin目录以及Cygwin

4 的usrsbin目录加入到Path变量中。

(e:cygwin64,e:cygwin64usrsbin)

新建系统变量JAVA_HOME,变量指向JRE安装目录。

(4)安装配置ssh

启动cygwin,执行命令:$ ssh-host-config。

当询问"Should privilege separation be used"时,输入no;当询问"Do you want to

install sshd as a service? "选yes;当提示"Enterthe value of CYGWIN for the

daemon:[]"时,选择ntsec。(好像没出现ntsec)

当看到“Have fun”时,一般表示sshd 服务安装成功了。

输入命令$ net start sshd,启动SSH,或者在Windows 服务项里启动CYGWIN

sshd。

注意:

SSH无法启动的解决方法:

解决方案:

按上图配置命令的提示说明,需要执行mkpasswd 和 mkgroup重新生成权限信息

依次执行下面命令

5 $ mkpasswd -l > /etc/passwd

$ mkgroup -l > /etc/group

$ cygrunsrv -R sshd 删除ssd服务

$ ssh-host-config -y 重新配置

$ cygrunsrv -S sshd 启动服务。

sshd服务启动成功。

(注意:sshd在cyg_server帐户下运行)

然后执行$ ssh-keygen来生成密钥对,然后一直回车键确定。这样会把生产的密钥对保存在.ssh 目录下。使用命令将RSA 公钥加入到公钥授权文件authorized_keys 中:

$ cd /home/Administrator/.ssh

$ cat id_ >> authorized_keys

最后执行$ ssh localhost,就可以实现无需密码的SSH 连接。

6 完成上述操作后,执行exit命令先退出Cygwin窗口。

执行ssh localhost时,会有如下图所示的提示,输入yes,然后回车即可:

如果不是第一次执行则会出现如下对话框:

成功启动ssh服务。

1.2 安装Hadoop

将Hadoop安装包(在此使用的是hadoop-0.20.2,相关apache软件下载地址:/dist/)解压到你自己选择的目录(e:hadoop),然后需要修改hadoop 的配置文件,它们位于conf 子目录下,分别是、、 和 共四个文件。

1.2.1修改

只需要将JAVA_HOME 修改成JDK 的安装目录即可,需要注意两点:

7 (1) JDK 必须是1.6 或以上版本;

(2) 设置JDK 的安装目录时,路径不能是Windows 风格的目录例如:C:jdk1.7,而是LINUX 风格: /cygdrive/c/jdk1.7。

因此在 中设定JDK 的安装目录:

export JAVA_HOME=/cygdrive/c/jdk1.7(注意删除-sun和export前面的注释“#”)

1.2.2 修改

为简化 配置,将srccore 目录下的文件复制到conf 目录下,并将文件名改成。

修改:

/hadoop/tmp

A base for other temporary directories.

hdfs://localhost:9000

1.2.3 修改

为简化 配置,将srchdfs 目录下的文件复制到conf 目录下,并将 文件名改成。

修改:

ation

1

1.2.4 修改

为简化 配置,将srcmapred 目录下的 文件复制到conf 目录下,并将 文件名改成。

8 修改:

r

localhost:9001

到此修改完成,然后启动hadoop。

1.3 启动hadoop

在Cygwin 中,进入hadoop 的bin 目录,运行./hadoop namenode -format做格式化处理(仅第一次需要),再运行./ 启动hadoop,在启动成功之后,可以执行./hadoop fs -ls /命令,查看hadoop 的根目录,如下图所示:

首先我们要先启动sshd服务,然后登录:

然后启动hadoop:

9

我们可以验证是否启动成功:(./hadoop dfsadmin -report)

也可以这样查看:

127.0.0.1:50030/

127.0.0.1:50070/

最后,使用 /bin/hadoop dfsadmin -safemode leave 命令使Hadoop退出安全模式。

有时在启动的时候会遇到一些问题,可能会出现

10 这时需要关闭系统./ ,然后删除hadoop/tmp下所有文件与目录,重新格式化并启动系统。至此,我们的Hadoop安装成功。

1.4 Hadoop运行wordcount实例

运行WordCount 实例。在本地文件系统上建立e:/hadoop/run/input目录,放入若干文件,文件为由多个单词组成(单词由空格分隔)的文本。

将文件复制到HDFS 的目录下,命名为input,并运行:

$ bin/hadoop dfs -put run/input input

11 没有内容输出就说明上传至文件系统成功。

运行:$ bin/hadoop jar wordcount input output

$ bin/hadoop jar input output2

( 为自定义类,参见后面插件部分)

另需注:

:(内容)

Manifest-Version: 1.0

Ant-Version: Apache Ant 1.7.1

Created-By: 10.0-b23 (Sun Microsystems Inc.)

Main-Class: com/cyberware/WordCount

12 output 为数据处理完成后输出目录, 默认在Hadoop 根目录下。任务执行完,用以下命令查看分布式文件系统上数据处理的结果:

$ bin/hadoop dfs -cat output /* 或

$ bin/hadoop fs -cat hdfs://localhost:9000/user/2zh/administrator

/input/

至此,完成wordcount实例的运行。

1.5使用eclipse编写Hadoop应用程序

在此,用eclipse编写了一个简单的程序。

1)在eclipse下创建一个java工程DFSOperator,并创建相应的类。

2)配置编译参数

配置“Build Path”,选中“DFSOperator”,单击右键,点击下图所示菜单“Build

Path -> Configure Build Path”,进入“Java Build Path”配置界面。选择“Libraries”标签页,点击右侧的“Add External JAR”按钮,将安装好的“”添加进来。

13

3)编辑源代码

4)编译生成jar包

右键“DFSOperator”项目,选择“Build Project”,编译项目工程,编译“”后,生成下图所示的 文件:

14 右键项目,选择“Export”,导出“JAR file”,也就是jar包。然后将导出的jar 文件上传到Hadoop Master 节点。

5)运行

导出的jar文件放到hadoop的bin文件下,进入Hadoop 的bin 目录,用以下命令进行测试运行:

(1) ls:查看当前目录,检查dfs_是否存在;

(2) ./hadoop fs -ls /:查看Hadoop根目录下是否存在dfs_文件;

(3) ./hadoop jar ./dfs_ DFSOperator:运行dfs_,以生成dfs_ 文件;

(4) ./hadoop fs -ls /:再查看Hadoop根目录下是否存在dfs_文件;

(5) ./hadoop fs -cat /dfs_:检查dfs_文件的内容。

该程序完成的功能简单,但从中可以学到如何在Windows下利用eclipse进行Hadoop编程。

15 1.6 使用IBM MapReduce Tools for Eclipse进行Hadoop编程(完成wordcount)

使用 IBM MapReduce Tools for Eclipse,使用这个Eclipse plugin可以简化开发和部署 Hadoop 并行程序的过程。基于这个plugin,可以在 Eclipse 中创建一个 Hadoop MapReduce 应用程序,并且提供了一些基于 MapReduce 框架的类开发的向导,可以打包成 JAR 文件,部署一个 Hadoop MapReduce 应用程序到一个 Hadoop 服务器(本地和远程均可),可以通过一个专门的视图 ( perspective )

查看 Hadoop 服务器、Hadoop 分布式文件系统( DFS )和当前运行的任务的状态。

1)安装插件IBM MapReduce Tools for Eclipse

安装插件,然后点击 Eclipse 主菜单上 Windows->Preferences,然后在左侧选择 Hadoop Home Directory,设定Hadoop 主目录:

2)创建MapReduce Project

点击Eclipse主菜单上File->New->Project,在弹出的对话框中选择MapReduce

Project。然后就可以一个普通的Eclipse Java project那样,添加入Java类。

16 编码后导出jar包,与创建java Project相同。导出jar包后,在hadoop下运行。

17

至此完成wordcount。

IBM MapReduce tools 还提供了几个实用的向导 ( wizard ) 工具,帮助创建单独的Mapper类,Reducer类,MapReduce Driver类,在编写比较复杂的

MapReduce程序时,将这些类独立出来是非常有必要的,也有利于在不同的计算任务中重用自己编写的各种Mapper类和Reducer类。

18 附录:

用IBM的MapReduce Tools for Eclipse插件简化Hadoop开发和部署

使用Cygwin模拟Linux环境,配置ssh以及认证就非常麻烦了,不过真要是走一遍那个流程,会学会不少东西的啊。

IBM的MapReduce Tools for Eclipse插件,极大地简化了这些配置,你可以想运行一个Java类一样轻松进行开发、调试和部署。

下载IBM的MapReduce Tools for Eclipse插件,地址是/tech/mapreducetools,下载完成后,解压缩,将plugins目录下的文件夹拷贝到Eclipse目录下的plugins目录下,启动Eclipse,进行一番简单地配置就能进行Hadoop的开发、调试和部署了。

hadoop-0.20.2下自带的eclise插件已过时。

解决方案:

1、下载正确的插件:/jira/secure/attachment/12460491/

2、重命名:将下载的插件重命名为""

3、替换原来的插件(D:Myeclipse10MyEclipse 10dropins下)。

4、重启eclipse

配置过程:

启动Eclipse,选择Window—>Preferences,弹出如图所示的对话框:

19 设置Hadoop Main Directory为自己下载的Hadoop发行包的解压包所在目录。设置完成后单击“OK”完成。

新建一个 Project ,选择MapReduce Project,如图所示:

继续进行创建,选择填写工程名后,完成一个MapReduce Project工程的创建,可以进行Hadoop程序的开发了。

比如,我直接把Hadoop自带的WordCount类程序一点不动地拷贝过来,修改包名。

然后进行运行时配置,选择Run As—>Open Debug Dialog选项,在Arguments选项卡中设置:

20 在其中填写两个目录,分别为数据输入目录和输出目录,中间用空格分隔:

e:hadoopruninput e:hadooprunoutput (注意output需要先删除)

然后,就可以像运行一个Java程序一样运行了,控制台上打印出执行任务的信息,如下所示:

08/09/21 22:35:47 INFO rics: Initializing JVM Metrics with

processName=JobTracker, sessionId=

08/09/21 22:35:47 WARN ent: No job jar file set. User classes

may not be found. See JobConf(Class) or JobConf#setJar(String).

08/09/21 22:35:47 INFO putFormat: Total input paths to

process : 7

08/09/21 22:35:48 INFO ent: Running job: job_local_1

08/09/21 22:35:48 INFO k: numReduceTasks: 1

21 08/09/21 22:35:49 INFO ent: map 0% reduce 0%

08/09/21 22:35:50 INFO obRunner:

file:/G:/hadoop-0.16.4/in/:0+1957

08/09/21 22:35:50 INFO nner: Task 'job_local_1_map_0000'

done.

08/09/21 22:35:50 INFO nner: Saved output of task

'job_local_1_map_0000' to file:/G:/hadoop-0.16.4/myout

08/09/21 22:35:50 INFO k: numReduceTasks: 1

08/09/21 22:35:50 INFO ent: map 100% reduce 0%

08/09/21 22:35:51 INFO obRunner:

file:/G:/hadoop-0.16.4/in/:0+10109

08/09/21 22:35:51 INFO nner: Task 'job_local_1_map_0001'

done.

08/09/21 22:35:51 INFO nner: Saved output of task

'job_local_1_map_0001' to file:/G:/hadoop-0.16.4/myout

08/09/21 22:35:51 INFO k: numReduceTasks: 1

08/09/21 22:35:51 INFO obRunner:

file:/G:/hadoop-0.16.4/in/:0+1957

08/09/21 22:35:51 INFO nner: Task 'job_local_1_map_0002'

done.

08/09/21 22:35:51 INFO nner: Saved output of task

'job_local_1_map_0002' to file:/G:/hadoop-0.16.4/myout

08/09/21 22:35:51 INFO k: numReduceTasks: 1

08/09/21 22:35:51 INFO obRunner:

file:/G:/hadoop-0.16.4/in/:0+1987

08/09/21 22:35:51 INFO nner: Task 'job_local_1_map_0003'

done.

08/09/21 22:35:51 INFO nner: Saved output of task

'job_local_1_map_0003' to file:/G:/hadoop-0.16.4/myout

08/09/21 22:35:52 INFO k: numReduceTasks: 1

08/09/21 22:35:52 INFO obRunner:

file:/G:/hadoop-0.16.4/in/:0+1957

08/09/21 22:35:52 INFO nner: Task 'job_local_1_map_0004'

done.

08/09/21 22:35:52 INFO nner: Saved output of task

'job_local_1_map_0004' to file:/G:/hadoop-0.16.4/myout

08/09/21 22:35:52 INFO k: numReduceTasks: 1

08/09/21 22:35:52 INFO obRunner:

file:/G:/hadoop-0.16.4/in/:0+1985

08/09/21 22:35:52 INFO nner: Task 'job_local_1_map_0005'

done.

08/09/21 22:35:52 INFO nner: Saved output of task

'job_local_1_map_0005' to file:/G:/hadoop-0.16.4/myout

08/09/21 22:35:52 INFO k: numReduceTasks: 1

22 08/09/21 22:35:53 INFO obRunner:

file:/G:/hadoop-0.16.4/in/:0+1957

08/09/21 22:35:53 INFO nner: Task 'job_local_1_map_0006'

done.

08/09/21 22:35:53 INFO nner: Saved output of task

'job_local_1_map_0006' to file:/G:/hadoop-0.16.4/myout

08/09/21 22:35:53 INFO obRunner:

file:/G:/hadoop-0.16.4/in/:0+10109

08/09/21 22:35:54 INFO ent: map 28% reduce 0%

08/09/21 22:35:54 INFO obRunner:

file:/G:/hadoop-0.16.4/in/:0+1957

08/09/21 22:35:54 INFO obRunner: reduce > reduce

08/09/21 22:35:54 INFO nner: Task 'reduce_xk6d4v' done.

08/09/21 22:35:54 INFO nner: Saved output of task

'reduce_xk6d4v' to file:/G:/hadoop-0.16.4/myout

08/09/21 22:35:55 INFO ent: Job complete: job_local_1

08/09/21 22:35:55 INFO ent: Counters: 9

08/09/21 22:35:55 INFO ent: Map-Reduce Framework

08/09/21 22:35:55 INFO ent: Map input records=7

08/09/21 22:35:55 INFO ent: Map output

records=3649

08/09/21 22:35:55 INFO ent: Map input bytes=21909

08/09/21 22:35:55 INFO ent: Map output bytes=36511

08/09/21 22:35:55 INFO ent: Combine input

records=3649

08/09/21 22:35:55 INFO ent: Combine output

records=21

08/09/21 22:35:55 INFO ent: Reduce input groups=7

08/09/21 22:35:55 INFO ent: Reduce input

records=21

08/09/21 22:35:55 INFO ent: Reduce output

records=7

和使用Cygwin模拟时的运行过程信息是一致的。

有了这个MapReduce Tools 插件,可真是太方便了。

中文格式支持:

1,UTF-8无BOM格式;

2,UTF-8格式,

其他将乱码!

23

发布者:admin,转转请注明出处:http://www.yc00.com/web/1689203146a220425.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信