1.4 Hadoop安装
本节分别介绍在Linux和Windows环境中如何安装Hadoop。
1.4.1 在Linux系统中安装Hadoop
1.安装环境配置
Linux系统有两种安装方式。一种是直接在裸机上安装Linux操作系统,另一种是在安装了Windows操作系统的机器上,通过安装Linux虚拟机,在Windows操作系统上虚拟一个Linux环境。对于已经安装了Linux的用户可以跳过步骤1)直接从步骤2)开始。
1)安装Linux虚拟机
首先,安装软件VMware Workstation v7.1.3。按照提示一步步完成Linux虚拟机的安装,方法与Linux操作系统的安装类似。软件安装完成后,可以打开Linux虚拟机,进入虚拟Linux环境。需要注意的是,必须安装虚拟机工具。
通过VMware Workstation v7.1.3软件的虚拟机设置选项,可以在Windows主机和Linux虚拟机之间建立共享文件夹,如图1-5所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0015-1013.jpg?sign=1739186772-ho2yPaQ8JWJWKSBEkNgpBGwT1PVMpUHp-0-8c541beeadb45c986ef395d261527c72)
图1-5 虚拟机设置
添加共享文件夹之后,便可以在Linux虚拟机的/mnt/hgfs目录下看到对应Windows主机的共享文件夹。
2)安装SSH
Hadoop运行过程中需要管理远端Hadoop守护进程,如果在安装Linux虚拟机时没有安装SSH Server,可以使用下面的命令来安装:
$ sudo apt-get install ssh
3)安装Java
实验使用jdk-6u24-linux-i586.bin,软件放在共享文件夹下。把Java安装到目录/usr/ java/jdk1.6.0_24,使用如下命令:
$ cd /usr/java/ $ /mnt/hgfs/share/jdk-6u24-linux-i586.bin
4)解压Hadoop安装包
实验使用Hadoop-0.20.2.tar.gz,软件放在共享文件夹下。把Hadoop解压到Linux usr目录,命令如下:
$ tar -zxvf /mnt/hgfs/share/hadoop-0.20.2.tar.gz
5)编辑conf/hadoop-env.sh文件
把JAVA_HOME设置为Java安装的根路径,可通过如下命令进行设置:
export JAVA_HOME=/usr/java/jdk1.6.0_24:
$ vi conf/hadoop-env.sh
2.安装步骤
Hadoop集群支持三种运行模式:单机模式、伪分布式模式和完全分布式模式。
1)单机模式
默认情况下,Hadoop被配置成一个以非分布式模式运行的独立Java进程,适合开始时做调试工作。
2)伪分布式模式
Hadoop可以在单节点上以伪分布式模式运行,用不同的Java进程模拟分布式运行中的各类节点(NameNode、DataNode、JobTracker、TaskTracker、Secondary NameNode)。
(1)Hadoop配置。
Hadoop-0.20.2以前版本(不含Hadoop-0.20.2)的配置文件是conf/hadoop-default.xml;而之后的版本中,该配置文件被拆分为coresite.xml、hdfs-site.xml和mapred-site.xml。其中core-site.xml和hdfs-site.xml是站在HDFS角度上的配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上的配置文件。实验使用如图1-6、图1-7、和图1-8所示的配置文件。
core-site.xml文档内容:
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0017-1049.jpg?sign=1739186772-feSsEKSPxZASrU9H56JoULpL3wMwgGSy-0-9475f3b5f3cea5ec72fd1a7b3c23d03c)
图1-6 实验用core-site.xml配置文档
hdfs-site.xml文档内容:
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0017-1053.jpg?sign=1739186772-7Pu7QUx5eIYWz9VoBHU4sDScBWiCh18m-0-b01f0c2d975689f39c2cc16796c32a57)
图1-7 实验用hdfs-site.xml配置文档
mapred-site.xml文档内容:
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0018-1063.jpg?sign=1739186772-vzEIGLuQYJEZ1CTOlfa2VcxbTuutPMoA-0-06973069d04c6fe0d3ee8e35cda41f5d)
图1-8 实验用mapred-site.xml配置文档
(2)免密码SSH设置。
生成密钥对,执行如下命令:
$ ssh-keygen -t rsa
然后一直按<Enter>键,就会按照默认的选项将生成的密钥对保存在.ssh/id_rsa文件中,如图1-9所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0018-1070.jpg?sign=1739186772-n9Mpe1lH6B91CVrfToXm8nK11sWnEfXT-0-b7e1a8bda5c7f88c9bd2a8ea26c11e04)
图1-9 将密钥对保存在.ssh/id.rsa文件中
进入.ssh目录,执行如下命令:
$ cp id_rsa.pub authorized_keys
此后执行$ ssh localhost,可以实现用SSH 连接并且不需要输入密码。
(3)Hadoop运行。
(a)格式化分布式文件系统。使用如下命令进行格式化:
$ bin/hadoop namenode -format
(b)启动Hadoop守护进程。启动守护进程的命令如下:
$ bin/start-all.sh
成功执行后将在本机上启动NameNode、DataNode、JobTracker、TaskTracker和Secondary NameNode五个新的Java进程。
(c)停止Hadoop守护进程。最后需要停止Hadoop守护进程,命令如下:
$ bin/stop-all.sh
3)完全分布式模式
对于Hadoop,不同的系统会有不同的节点划分方式。在HDFS看来,节点分为NameNode和DataNode,其中NameNode只有一个,DataNode可以有多个;在MapReduce看来,节点又分为JobTracker和TaskTracker,其中JobTracker只有一个,TaskTracker可以有多个。NameNode和JobTracker可以部署在不同的机器上,也可以部署在同一机器上。部署NameNode和/或JobTracker的机器是Master(主服务器),其余的都是Slaves(从服务器)。用户甚至可以将NameNode、DataNode、JobTracker和TaskTracker全部部署在一台机器上。详细的配置方法介绍如下。
(1)配置NameNode和DataNode。
配置成功的关键在于确保各机器的主机名和IP地址之间能正确解析。修改每台机器的/etc/hosts,如果该台机器作NameNode用,则需要在文件中添加集群中所有机器的IP地址及其对应的主机名;如果该台机器仅作DataNode用,则只需要在文件中添加本机和NameNode的IP地址及其对应的主机名。
假设把ubuntunamenode作为NameNode,配置该节点的/etc/hosts,如图1-10所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0020-1101.jpg?sign=1739186772-m69FMhqh6eVgK5kUzez7U8M1OiSBNajM-0-885e836cc5ddf62fbef4269b37931a52)
图1-10 配置ubuntunamenode的/etc/hosts
把ubuntudata1,ubuntudata2作为DataNode,分别配置它们的/etc/hosts,如图1-11所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0020-1105.jpg?sign=1739186772-Zw6N7VbFFj3ZWvrljghnOhat70iJqvK7-0-5e7b7b8f032ade22e236f8340b661bbc)
图1-11 ubuntudata1和ubuntudata2的hosts配置
(2)在所有的机器上建立相同的用户grid。
这一步通过以下命令实现:
$ useradd -m grid $ passwd grid
成功建立grid用户后,输入的密码就是该用户的密码。
(3)SSH配置。
该配置主要是为了实现在机器之间执行指令时不需要输入密码。在所有机器上建立.ssh目录,执行:
$ mkdir .ssh
在ubuntunamenode上生成密钥对,执行:
$ ssh-keygen -t rsa
然后一直按<Enter>键,就会按照默认的选项将生成的密钥对保存在.ssh/id_rsa文件中。接着执行如下命令:
$cd ~/.ssh $cp id_rsa.pub authorized_keys $scp authorized_keys ubuntudata1:/home/grid/.ssh $scp authorized_keys ubuntudata2:/home/grid/.ssh
最后进入所有机器的.ssh目录,改变authorized_keys文件的许可权限:
$chmod 644 authorized_keys
这时从ubuntunamenode向其他机器发起SSH连接,只有在第一次登录时需要输入密码,以后则不再需要。
(4)在所有机器上配置Hadoop。
首先在ubuntunamenode上配置,执行如下的解压缩命令:
$ tar -zxvf /mnt/hgfs/share/hadoop-020.2.tar.gz
(a)编辑core-site.xml、hdfs-site.xml和mapred-site.xml,如图1-6、图1-7(副本数根据集群中Slave节点的数目而定,一般小于Slave节点数)和图1-8所示。
(b)编辑conf/masters,修改为Master的主机名,每个主机名一行,此外即为ubuntunamenode。
(c)编辑conf/slaves,加入所有Slaves的主机名,即ubuntudata1和ubuntudata2。
(d)把Hadoop安装文件复制到其它机器上:
$ scp -r hadoop-0.20.2 ubuntudata1:/home/grid $ scp -r hadoop-0.20.2 ubuntudata2:/home/grid
(e)编辑所有机器的conf/hadoop-env.sh文件,将JAVA_HOME变量设置为各自Java安装的根目录,不同机器可以使用不同的Java版本。
至此,Hadoop已经在集群上部署完毕。如果要新加入或删除节点,仅需修改NameNode的Master和Slaves。
(5)Hadoop运行。
格式化分布式文件系统,操作命令如下:
$bin/hadoop namenode -format
启动Hadoop守护进程。在ubuntunamenode上启动NameNode、JobTracker和Secondary NameNode,在ubuntudata1和ubuntudata2上启动DataNode和TaskTracker,并用如下jps命令检测启动情况:
$ bin/start-all.sh $/usr/java/jdk1.6.0_24/bin/jps
启动正常结果如图1-12所示。
用户也可以根据自己的需要来执行如下命令:
(a)start-all.sh:启动所有的Hadoop守护进程,包括NameNode、DataNode、JobTracker和TaskTracker。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0023-1155.jpg?sign=1739186772-HoVUbLOaE9ZwkS8oRCM6RsGlsJqMfawu-0-9eb24f0e9cab522285fb79bc44ee7f11)
图1-12 启动Hadoop守护进程
(b)stop-all.sh:停止所有的Hadoop守护进程。
(c)start-mapred.sh:启动Map/Reduce守护进程,包括JobTracker和TaskTracker。
(d)stop-mapred.sh:停止Map/Reduce守护进程。
(e)start-dfs.sh:启动Hadoop DFS守护进程,包括NameNode和DataNode。
(f)stop-dfs.sh:停止DFS守护进程。
修改C:\WINDOWS\system32\drivers\etc\hosts文件,加入三台虚拟机的IP地址及其对应的主机名,即:
127.0.0.1 localhost
192.168.11.100 ubuntunamenode
192.168.11.101 ubuntudata1
192.168.11.102 ubuntudata2
(g)停止Hadoop守护进程。使用下面的命令即可停止守护进程:
$ bin/stop-all.sh
1.4.2 在Windows系统中安装Hadoop
虽然Hadoop支持Windows平台,但其官方网站声明,Hadoop的分布式操作尚未在Windows平台上严格测试。所以,在这里建议读者只把它作为开发平台。
1.安装环境配置
1)下载安装Cygwin
在Windows系统中安装Hadoop,需要安装Cygwin。Cygwin是一个在Windows平台上运行的Unix模拟环境,提供shell支持。下载Cygwin安装包的时候要选中Net category里的openssh,如图1-13所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0024-1179.jpg?sign=1739186772-lTM9tuNjRjIT0rB69oGmRVlPcCrQdRc3-0-0ec658d0e84a79ceddf981a8933cbc4b)
图1-13 下载Cygwin安装包
编辑系统变量,新建系统变量CYGWIN,变量值为ntsec tty,如图1-14所示。
编辑系统变量里的Path变量,加入C:\cygwin\bin,如图1-15所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0025-1188.jpg?sign=1739186772-UowffkjlAIvXMsRsnsKJemGLyKL0mkKk-0-d8c1e3808233e5a25b713faada1b775a)
图1-14 编辑系统变量(1)
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0025-1189.jpg?sign=1739186772-LkO17DYq9Qb0lTxuGaKmOssySz1VrhPv-0-c3251ac6ac0acb1a6b954959d176b7c8)
图1-15 编辑系统变量(2)
2)安装Java
实验使用jdk-6u13-windows-i586-p.exe,默认的安装目录为C:\Program Files\Java\ jdk1.6.0_13。
新建系统变量JAVA_HOME,如图1-16所示。
编辑系统变量里的Path变量,加入%JAVA_HOME%\bin;%JAVA_ HOME%\jre\bin,如图1-17所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0025-1196.jpg?sign=1739186772-NX4xuqbgLvLjchNTuFoHD5gAgLGqzJcQ-0-ab3058dff911111aa0a1f293753856b1)
图1-16 编辑系统变量(3)
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0025-1197.jpg?sign=1739186772-qPLX76VnG5KNarCtglOvoW2OiyvYjH4y-0-3084aca7470e787e8c3565ab06b3ea81)
图1-17 编辑系统变量(4)
新建系统变量CLASSPATH,值为.;%JAVA_HOME%\lib;%JAVA_ HOME%\lib\tools.jar,如图1-18所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0025-1201.jpg?sign=1739186772-UBP6ccX3cJuHS2wTliibokJASfbQR7rE-0-e59f560313d6ceefcfa8b36595247d0c)
图1-18 编辑系统变量(5)
2.安装步骤
与Linux系统一样,在Windows系统上运行Hadoop集群也支持三种运行模式:单机模式、伪分布式模式和完全分布式模式。
1)单机模式
启动Cygwin,解压缩Hadoop安装包。通过cygdrive(位于Cygwin根目录中)可以直接映射到Windows下的各个逻辑磁盘分区。例如Hadoop安装包放在目录D:\下,则解压缩命令为$ tar -zxvf /cygdrive/d/hadoop-0.20.2.tar.gz,解压后可使用ls命令查看,如图1-19所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0026-1213.jpg?sign=1739186772-ZduaU9if2njzARj959hTT5S5DA82jqcq-0-f9dc908fe55c4da24f3cb16572ac2b3a)
图1-19 用户解压缩后的Hadoop目录
默认的解压缩目录为用户的根目录,即C:\cygwin\home\Administrator。
编辑conf/hadoop-env.sh文件,将JAVA_HOME变量设置为Java安装的根目录。例如Java安装在目录C:\Program Files\Java\jdk1.6.0_13,如果路径中没有空格,直接配置即可。但是因为本例中安装路径中存在空格,所以需要把Program Files缩写成Progra~1,如图1-20所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0026-1218.jpg?sign=1739186772-5cte197akAmEJ36v6bm4CRGZVksJO0w8-0-f761cd497ff6a5b703b1d27a3325bdae)
图1-20 编辑conf/hadoop-env.sh文件
2)伪分布式模式
(1)编辑文件conf/core-site.xml和mapred-site.xml。
编辑过程如图1-21、图1-22和图1-23所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0027-1229.jpg?sign=1739186772-ICny68x9d4YOabwd9j49MAhRuz1HkCiZ-0-4240d639de9b488ff62e81f56515942f)
图1-21 编辑文件conf/core-site.xml
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0027-1232.jpg?sign=1739186772-OuW7kV2UxruqWjOboeb4hjaWNFfMexaM-0-3009f0495712a31a1e9b26fadb7eac6e)
图1-22 编辑文件conf/mapred-site.xml
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0027-1235.jpg?sign=1739186772-EKuS2QGe45to8VXMnbLD1lQPzsYSlBui-0-0c809ae579d73d2849c85ce6dcac5b70)
图1-23 编辑文件hdfs-site.xml
(2)安装配置SSH。
启动Cygwin,执行命令:$ ssh-host-config,如图1-24所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0027-1240.jpg?sign=1739186772-Pk6wSc7LSuXcBIuwJq5213BJ3ZtaoR0f-0-8fa523a7fd0576367717c4468487db93)
图1-24 安装配置SSH(1)
当询问“Should privilege separation be used?”时,输入no,如图1-25所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0028-1250.jpg?sign=1739186772-UQJEZZLhTBnL2J8Wer6Xmg8FcaY9j9JX-0-c45cceffdd0ea8cd4ab388594553740c)
图1-25 安装配置SSH(2)
当询问“Do you want to install sshd as a service?”,选择yes,把sshd作为一项服务安装,如图1-26所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0028-1254.jpg?sign=1739186772-awVkKwvBe3l5LgntV6MgiZAN5kap4WZN-0-ff25c97b29c7f1c8a507d70c14e57592)
图1-26 安装配置SSH(3)
当提示“Enter the value of CYGWIN for the daemon:[ntsec]”时,选择ntsec,如图1-27所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0028-1258.jpg?sign=1739186772-36wq56qieNV672Yp5W4xdf3pXKMd1IsB-0-fdb01ae549fbd5f5102236474d7038cb)
图1-27 安装配置SSH(4)
则提示sshd服务已经在本地系统安装好。
输入命令$ net start sshd,启动SSH,如图1-28所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0028-1263.jpg?sign=1739186772-MMd95TPJGfEPRVr7iYIJWVUz9iCA1W3w-0-12b49ace204ae4fa036de672f3e2594f)
图1-28 启动SSH(1)
也可以通过服务启动Cygwin sshd,如图1-29所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0029-1270.jpg?sign=1739186772-TqpNTRgDYGMX1pZrRow8P6lHO3d1Ff0R-0-7e6cbf95f19a34c34417e1d8ec1f3808)
图1-29 启动SSH(2)
执行$ ssh-keygen来生成密钥对,然后一直按<Enter>键,就会按照默认的选项将生成的密钥对保存在.ssh目录下。将RSA公钥加入到公钥授权文件authorized_keys中,命令如下:
$ cd .ssh $ cat id_rsa.pub >> authorized_keys
最后执行$ ssh localhost,就可以实现无需密码的SSH连接。
(3)Hadoop运行。
(a)格式化分布式文件系统。使用如下的命令来格式化:
$ bin/hadoop NameNode -format
(b)启动Hadoop守护进程。用下面的命令启动守护进程:
$ bin/start-all.sh
(c)停止Hadoop守护进程。最后需要停止所有的Hadoop守护进程,命令如下:
$ bin/stop-all.sh
3)完全分布式模式
在完全分布式模式下运行Hadoop需要经历以下5个步骤。
(1)修改相应文件。
修改所有机器的C:\WINDOWS\system32\drivers\etc\hosts文件,加入各机器IP地址及其对应的主机名,即:
127.0.0.1 localhost
192.168.11.100 zhen
192.168.11.101 zhen1
192.168.11.102 zhen2
(2)在所有机器上建立相同的账户。
(3)在所有机器上进行SSH配置。
执行$ ssh-keygen生成密钥对。然后一直按<Enter>键,就会按照默认的选项生成密钥对,并保存在.ssh/id_rsa文件中。执行下面的命令将RSA公钥加入到公钥授权文件authorized_keys中:
$cd ~/.ssh $cat id_rsa.pub >> authorized_keys
接着在zhen上执行如下代码:
$cd ~/.ssh $scp authorized_keys cloud @zhen1:/home/cloud/.ssh $scp authorized_keys cloud @zhen2:/home/cloud/.ssh
分别进入zhen、zhen1和zhen2的.ssh目录,改变authorized_keys文件的许可权限,命令如下:
$chmod 644 authorized_keys
这样从zhen到其他机器的SSH 连接不需要输入密码就可以实现。
(4)在所有机器上配置Hadoop。
首先在zhen上配置,执行如下解压缩命令和修改目录命令:
$ tar -zxvf /cygdrive/d//hadoop-0.20.2.tar.gz $ mv hadoop-0.20.2 hadoop
编辑conf/core-site.xml、conf/mapred-site.xml、conf/hdfs-site.xml,如图1-21、图1-22和图1-23(副本数根据集群中Slave节点的数目而定,一般小于Slave节点数)所示。
编辑conf/master,修改为Master的主机名,每个IP一行,在这里就是192.168.11.100。编辑conf/slaves,加入所有Slaves的主机名,即192.168.11.101和192.168.11.102。把Hadoop复制到其他机器,命令如下:
$scp ~/hadoop cloud@zhen1:/home/ cloud / $scp ~/hadoop cloud@zhen2:/home/ cloud /
编辑所有机器的conf/hadoop-env.sh文件,将JAVA_HOME变量设置为Java安装的根目录,不同机器可以使用不同的Java版本,但需要jdk1.5版本以上。
(5)Hadoop运行。
格式化分布式文件系统,执行如下命令:
$bin/hadoop namenode -format
启动Hadoop守护进程。下面的命令用来启动守护进程:
$ bin/start-all.sh
同样的,访问http://zhen:50070或者http://192.168.11.100:50070可以查看NameNode及整个分布式文件系统的状态,浏览分布式文件系统中的文件及日志等;访问http://zhen:50060可以查看 TaskTracker的运行状态。
停止Hadoop守护进程,可用如下命令停止所有的Hadoop守护进程:
$ bin/stop-all.sh
1.4.3 站在象背上说“hello”
成功安装了Hadoop,试试让神象奔跑起来的感觉吧。Hadoop自带的WordCount实例可以统计一批文本文件中各单词出现的次数,这样就可以让读者轻松地站在象背上说“hello”了。下面介绍如何执行WordCount实例。
首先,新建一个目录,在这里以“input”命名:
$ mkdir input $ cd input
然后,在input里新建“test1”、“test2”文本文件并在文件中分别写入“hello world”、“hello hadoop”:
$ echo “hello world” >test1.txt $ echo “hello hadoop” >test2.txt
注意:在Cygwin上运行WordCount的步骤和上面介绍的基本相同,只需要注意在输入目录input中新建几个文本文件的格式稍有变化即可:
file1.txt:hello world file2.txt:hello hadoop
接下来,将本地文件系统上input目录复制到HDFS的根目录下,重命名为“in”。“out”为数据处理完成后的输出目录(需要注意的是执行之前out目录必须为空,或者不存在这个目录,否则会出错),默认存放在分布式文件系统用户的根目录下。执行以下的命令:
$ bin/hadoop dfs -put input in $ bin/hadoop jar hadoop-0.20.2-examples.jar wordcount in out
任务执行完毕后,查看Hadoop分布式文件系统上数据处理的结果,执行:
$ bin/hadoop dfs -cat out/*
另外,用户也可以把输出文件从Hadoop分布式文件系统复制到本地文件系统查看,具体命令如下:
$ bin/hadoop dfs -get out output $ cat output/*
运行结果如图1-30所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0033-1351.jpg?sign=1739186772-jpwMVKYt7ZBqz1ojeM4HOuHNIsJGMiZK-0-9cc44ead49e572be6e321421576ce484)
图1-30 Word Count实例运行结果
1.4.4 Eclipse下的Hadoop应用开发
Hadoop安装包contrib/目录下有一个插件hadoop-*-eclipse-plugin.jar,使用这个插件,用户可以配置基于Eclipse的Hadoop应用开发环境,并在Eclipse中创建MapReduce应用程序。下面为读者介绍如何在Eclipse环境下进行Hadoop的应用开发。
(1)配置基于Eclipse的Hadoop应用开发环境。
启动Eclipse,打开Window->Open Perspective,单击Map/Reduce,会打开一个新的Perspective,如图1-31所示。
打开Window->Show View->Other,选择Map/Reduce Tools,单击Map/Reduce Locations,会打开一个View,如图1-32所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0034-1367.jpg?sign=1739186772-sS14FufQhw8Bt6X56lN1bcXgHAR2xfqb-0-dd27b2b52ac5dd8ae407e2b5c5465b73)
图1-31 配置基于Eclipse的Hadoop应用开发环境(1)
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0034-1368.jpg?sign=1739186772-drjLggz2BheVrX5Qw2ZiycSSW3hrGswV-0-aedd832c5d1b878a51e018835aa70cba)
图1-32 配置基于Eclipse的 Hadoop应用开发环境(2)
添加Hadoop location,其中Host和Port的内容根据conf/hadoop-site的配置填写,User name是用户名,如图1-33所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0034-1372.jpg?sign=1739186772-W9MkNZHnlkNjwZ12fwP2dMD6nDjKeGts-0-cc35b32fa7661f3f6c9a88fd30739d99)
图1-33 配置基于Eclipse的Hadoop应用开发环境(3)
配置完成之后,可以在DFS Locations看到分布式文件系统下的文件,并且可以进行文件的上传、下载等操作,如图1-34所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0035-1381.jpg?sign=1739186772-UjVxSKD01C2FpcshWaIkeZpiiItlT8qx-0-d5cb9bd22bb8b45caf3c8957b3f50d28)
图1-34 配置基于Eclipse的Hadoop应用开发环境(4)
(2)简单编译实例。
新建一个Map/Reduce Project,命名为Proj,如图1-35所示。
加入Hadoop根目录,如图1-36所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0035-1387.jpg?sign=1739186772-qwyb1x84PPf3Jn9JwQ1FwxCg6knxxhC5-0-a07c520f686d1448480ee53fa1eff78d)
图1-35 新建项目(1)
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0035-1388.jpg?sign=1739186772-HPY4RNDlJeVnADxGAs8AkvYrWzjd3qHa-0-1ce9e6f9b11d69d01d90315319ff3c07)
图1-36 新建项目(2)
新建一个类,命名为“WordCount”,如图1-37所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0036-1397.jpg?sign=1739186772-KIbjwJN6XxE5skrUrMCGwkL6INhcMnAx-0-bba6219d49f744fcf315910a9a70609a)
图1-37 新建一个类
WordCount.java的代码如图1-38所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0036-1401.jpg?sign=1739186772-B4pnia2AyvSDYnpEfrp5FJFf28eFWnnQ-0-a82963e96ccbf98b9e4b78267dc30622)
图1-38 WordCount.java的代码
运行之前需配置工作路径,如图1-39所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0036-1405.jpg?sign=1739186772-ZylgMMsrAF7sHRnJIyae43C9KC7Z4N8D-0-432c8d155fd51f35b0be0f5e2f071cc4)
图1-39 配置工作路径
配置工作路径完毕即可运行程序。运行结束后,用户可以通过控制台查看运行结果,如图1-40所示。
![](https://epubservercos.yuewen.com/037BF7/3590315104035301/epubprivate/OEBPS/Images/Figure-0037-1414.jpg?sign=1739186772-QBq4tJI6BbodkLw8HLysaFcQypvUh4OP-0-1cbbc59c81b91ff8d49af24e32b70fe0)
图1-40 运行结果