【Hadoop】在Windows上安装Hadoop及WordCount示例

安装环境:
操作系统:Windows 10
JDK版本:JDK 1.8以上的Java开发和运行环境

  Hadoop是一款支持数据密集型分布式应用程序并以Apache 2.0许可协议发布的开源软件框架。它支持在商品硬件构建的大型集群上运行的应用程序。Hadoop是根据谷歌公司发表的MapReduce和Google文件系统的论文自行实现而成。所有的Hadoop模块都有一个基本假设,即硬件故障是常见情况,应该由框架自动处理。

  Hadoop框架透明地为应用提供可靠性和数据移动。它实现了名为MapReduce的编程范式:应用程序被分割成许多小部分,而每个部分都能在集群中的任意节点上运行或重新运行。此外,Hadoop还提供了分布式文件系统,用以存储所有计算节点的数据,这为整个集群带来了非常高的带宽。MapReduce和分布式文件系统的设计,使得整个框架能够自动处理节点故障。它使应用程序与成千上万的独立计算的计算机和PB级的数据连接起来。

以上内容来自维基百科。不过对于我来说,开始学习某一套技术只有当我亲自动手实践后,才能真正理解这套技术解决了什么问题,并且有益于后续的学习。下来就让我们开始吧!

Hadoop配置

1 先检查下自己的配置环境,主要是JDK版本
java
2 下载进制压缩包文件:hadoop-3.0.0.tar.gz
h
3 下载针对Windows环境的Hadoop修正程序:winutils-master.zip
wm
4 将hadoop-3.0.0.tar.gz解压至 C:SoftHadoop(可以根据自己喜好更改Hadoop安装目录)
h
5 新增环境变量HADOOP_HOME(作为系统变量),并将其值设为

1
2
C:SoftHadoopbin
(这里根据你自己解压的位置设置)

(设置方法:进入“控制面板系统和安全系统”,然后点击“高级系统设置”,然后点击“环境变量(N)..”按钮)
h
6 观察JAVA_HOME变量设置是否正确,这个后面会用到。
h
7 将C:SoftHadoopbin路径添加到Path环境变量。(这是本人的,记得换成自己的)
8 将如下内容粘贴到..Hadoopetchadoopcore-site.xml文件

1
2
3
4
5
6
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

9 将如下内容粘贴到..Hadoopetchadoopmapred-site.xml文件

1
2
3
4
5
6
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

10 在..Hadoop路径下创建“data”子目录;
在..Hadoopdata路径下创建“namenode”子目录;
在..Hadoopdata路径下创建“datanode”子目录。
d
11 将如下内容粘贴到..Hadoopetchadoophdfs-site.xml文件
(里面的路径记得换成自己的)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///C:/Soft/hadoop/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///C:/Soft/hadoop/data/datanode</value>
</property>
</configuration>

12 将如下内容粘贴到..Hadoopetchadoopyarn-site.xml文件

1
2
3
4
5
6
7
8
9
10
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>

13 编辑文件C:Hadoopetchadoophadoop-env.cmd:

1
2
3
把“set JAVA_HOME=%JAVA_HOME%”
修改为“set JAVA_HOME=C:PROGRA~1Java自己的jdk版本”
可以回到第6步看一下,本人的是jdk1.8.0_201

14 C:Hadoopbin目录下的内容删除。
15 将第3步下载的“winutils-master.zip”解压,然后将解压文件中“..winutils-masterhadoop-3.0.0bin”目录下的内容拷贝到“..Hadoopbin”目录。

测试

到此为止,Hadoop的安装就完成了,接下来运行几个命令测试Hadoop是否可以正常运行
1 打开终端

1
cd ..Hadoopbin

2 先对HDFS分布式文件系统进行格式化。

1
hdfs namenode –format

如果成功,能看到下面这句

1
INFO common.Storage: Storage directory C:Softhadoopdatanamenode has been successfully formatted

3 输入下面的命令。如果一切正常,将会启动一个“hdfs namenode”进程和一个“hdfs datanode”进程,构成了只有1个主节点和1个从节点的“HDFS分布式文件系统集群”。可以通过http://localhost:9870监控HDFS系统。

1
2
cd ..Hadoopsbin
start-dfs

s
4 关闭HDFS分布式文件系统。

1
2
cd ..Hadoopsbin
stop-dfs

WordCount示例的使用

首先,以管理员身份启动命令行,进到sbin文件夹下

1
cd C:SoftHadoopsbin

1
启动Hadoop

1
start-all

2
如果正常的话会打开四个窗口
w
新建一个txt文件作为数据样本
test.txt

1
2
3
4
5
6
7
8
9
hello
world
qit
stop
sdf
apple
EA
steam
orange

在Hadoop中新建一个test文件夹

1
hadoop fs -mkdir /test

3
将test.txt上传到test文件夹中,查看一下

1
2
3
hadoop fs -put C:Elsetest.txt test
hadoop fs -ls /
hadoop fs -ls /test

4
到此准备工作就已经做完了。

WordCount是Hadoop自带的一个示例程序,在../Hadoopsharehadoopmapreduce文件夹下能找到名称里带有examples的jar包

1
hadoop jar C:SoftHadoopsharehadoopmapreducehadoop-mapreduce-examples-3.0.0.jar wordcount test output

5
运行完成后能在output文件夹下看的两个文件,最终的结果就存在part-r-00000中

1
2
hadoop fs -ls /output
hadoop fs -cat /output/part-r-00000

6
输入结束命令,关闭系统

1
stop-all

附录

代码 操作
hadoop fs –ls / 显示根目录下的所有文件和目录
hadoop fs –mkdir /test 创建子目录/test,创建多级目录 加上 –p
hadoop fs -rm /test1.txt 删除文件
hadoop fs -rm -r /test 删除子目录(要加-r参数)
hadoop fs -put C:tmptest.txt test 将本地文件上传到HDFS分布式文件系统
hadoop fs -cat testtest.txt 查看文件内容
hadoop fs -cp URI [URI …] cp 复制系统内文件
hadoop fs -get[-ignorecrc] [-crc] 下载文件到本地
hadoop fs -mv URI [URI …] 将文件从源路径移动到目标路径
hadoop fs -du URI [URI …] 显示文件大小