在Windows 10 环境下安装 Hadoop3.1.2

分布式系统本来是一组计算机,系统里有多个节点,我们如果装在本机,则代表只有一台服务器,所以这次安装的其实只是单节点集群Hadoop,所有的节点和功能都配在同一台机器上,包括NameNode、 Secondary NameNode、 DataNode, 以及MapReduce(YARN)的Resource Manager、Node Managder。

这里分五个步骤来记录Hadoop安装步骤,以及启动和运行Hadoop。

一是安装Java运行环境,二是安装Hadoop,三是修改Hadoop安装目录下的配置文件,四是启动Hadoop,五是运行一个Hadoop自带的mapreduce的实例。

Windows 10

JDK 1.8.0_73

Hadoop 3.1.2

【第一步】

Hadoop是一个分布式处理大数据的软件框架,是基于java编写的;在下载使用前,需要有Java的编译环境(JRE)或Java的开发工具(JDK)。

因为JDK已经包含了JRE,所以这里我装的是jdk1.8.0_73;安装之后配置环境变量。 

点击 我的电脑 → 属性 → 高级系统设置 → 环境变量, 添加

变量名:JAVA_HOME

变量值:C:\Program Files\Java\jdk1.8.0_73 (这里写的是你自己电脑上JDK的安装路径)

如果查看本机是否已经有Java运行环境了呢?在windows自带的Command Prompt (CMD)里输入:java -version

显示如下,则证明已经装好。
  java version "1.8.0_73"
  Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
  Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)

如果没有的话,则点击 我的电脑 → 属性 → 高级系统设置 → 环境变量, 添加

变量名:JAVA_HOME

变量值:C:\Program Files\Java\jdk1.8.0_73 (这里写的是你自己电脑上JDK的安装路径)

【第二步】

从Apache官网下载Hadoop,地址是 https://hadoop.apache.org/releases.html ,选择binary 版本,下载下来的文件名是 hadoop-3.1.2.tar.gz 。

(备注:binary表示已编译好的二进制包文件包,即解压缩后可直接使用;source表示源代码版本,需要通过计算机编译才能执行安装)

在本地解压安装包到自定义的地址,比如我的安装路径是 D:\MyFolder\Hadoop\hadoop-3.1.2 。

然后为Hadoop配置windows环境变量。点击 我的电脑 → 属性 → 高级系统设置 → 环境变量:

新添加一个变量名 HADOOP_HOME, 变量值 D:\MyFolder\Hadoop\hadoop-3.1.2 (这里使用你自己的安装路径);

在已有变量名Path(如果没有就新添加一个变量名Path)下,加上两个变量值 %HADOOP_HOME%\bin 和 %HADOOP_HOME%\sbin。

在windows自带的Command Prompt (CMD)里输入: hadoop version

显示如下,则证明Hadoop环境变量已经配好。

  Hadoop 3.1.2
  Source code repository https://github.com/apache/hadoop.git -r 1019dde65bcf12e05ef48ac71e84550d589e5d9a
  Compiled by sunilg on 2019-01-29T01:39Z
  Compiled with protoc 2.5.0
  From source with checksum 64b8bdd4ca6e77cce75a93eb09ab2a9
  This command was run using /D:/MyFolder/Hadoop/hadoop-3.1.2/share/hadoop/common/hadoop-common-3.1.2.jar

【第三步】

这一步需要对Hadoop安装目录下的配置文件进行一些修改,这些修改决定了我们能否启动Hadoop。

配置hadoop,主要是配置以下三个配置文件(在%HADOOP_HOME%\etc\hadoop\下面):
core-site.xml, -- 是全局配置
hdfs-site.xml, --hdfs的局部配置。
mapred-site.xml -- mapred的局部配置。

刚解压后,这些配置文件都是空的,没有任何configuration,类似这样:
<configuration>
</configuration>

其实他们这些文件的默认配置分别在这三个文件中:
core-default.xml,
hdfs-default.xml,
mapred-default.xml

在前面给出的官网文章链接中,可以找到这三个default文件的配置详情;要注意官网上标识的Hadoop版本,比如现在我看到的是Version: 2.9.2,也就是说是属于这个版本的默认配置。

现在说如何配置。

coresite.xml下的配置:

添加

<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>

如果了解HDFS的话,就会知道,如果文件进入到这个系统里,会有属于自己的一个目录,和我们理解的操作系统磁盘的绝对路径是不一样的。比如一个文件a被放到HDFS的根目录下的test目录下,那么它的HDFS路径就是 /test/a,这就是Hadoop服务器本地的绝对路径(它在我们电脑的操作系统里肯定不是相同的绝对路径,具体是哪个路径,我们没必要知道,只需HDFS知道就好了)。除了用/test/a访问这个文件,我们如果还想也想通过hdfs://localhost:9000/test/a 的方式访问 ,就需要加上这个配置内容。

启动服务后(一会儿的步骤会讲到如何启动服务),
输入 hdfs dfs -ls /
输入 hdfs dfs -ls hdfs://localhost:9000/
输入 hdfs dfs -ls hdfs://10.118.145.33:9000/ (用IP地址是我没试过的,我猜测应该可以成功)
得到的是同样的结果,即Hadoop文件系统(注意:这里指的不是操作系统的文件系统)的根目录下的内容。

或者输入hdfs dfs -df -h

查看磁盘空间,如下是我的空间:

Filesystem Size Used Available Use%
hdfs://localhost:9000 159.7 G 1.1 M 138.7 G 0%

hdfs-site.xml下的配置:

添加

<property>
<name>dfs.replication</name>
<value>1</value>
</property>

然后在Hadoop3.1.2的安装目录下建个目录/data,再在这个目录下建两个目录,一个叫namenode,一个叫datanode,把两个目录的路径添加到这个配置文件里:

<property>
<name>dfs.namenode.name.dir</name>
<value>/D:/MyFolder/Hadoop/hadoop-3.1.2/data/namenode</value> 
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/D:/MyFolder/Hadoop/hadoop-3.1.2/data/datanode</value> 
</property>

yarn-site.xml下的配置:

添加

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

【第四步】

在windows下找到Hadoop的安装目录,进入sbin目录,找到一个文件start-all.cmd

用管理员模式运行它,等待ResourceManager,NameNode和DataNode的启动。

检查Hadoop是否已经启动成功,只需cmd窗口输入:jps

如显示以下五个进程名称,则证明成功。

  109824 Jps
  29780 ResourceManager
  107300 DataNode
  107112 NameNode
  40316 NodeManager

 如果想停止这几个进程,就在同目录下找这个文件stop-all.cmd,然后运行。

其实对于start all 和stop all是不推荐的。更好的做法是先启动start-dfs.cmd,再启动start-yarn.cmd。

刚刚说到的几个命令,如 hdfs dfs -ls hdfs://localhost:9000/,也可以在这个时候查看了。

访问管理GUI

 记得先不要关闭那几个cmd窗口,如果启动成功,还可以在浏览器输入

http://localhost:8088 ——查看应用管理界面ResourceManager

http://localhost:9870 ——NameNode界面

这两个端口都是Hadoop支持的默认服务端口。要注意的是,3.0以上和2.0的默认端口有部分是不一样的。

【第五步】

Hadoop是一个分布式文件系统,是用来处理文件/数据的。它自带了用mapreduce处理数据的jar包,如hadoop-mapreduce-examples-3.1.2.jar,所以我们就在此运行一个例子,观察Hadoop如何处理????

【结语】

其实,Apache官网也有介绍GNU/Linux环境安装的文章,想看的请直接戳这里。

Single Node Setup for first-time users. (这篇里面还有个链接,专门介绍在Windows下的安装,但是打不开)
Cluster Setup for large, distributed clusters.

原文地址:https://www.cnblogs.com/happyliusiyi/p/11076188.html