分布式系统本来是一组计算机,系统里有多个节点,我们如果装在本机,则代表只有一台服务器,所以这次安装的其实只是单节点集群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,类似这样:
其实他们这些文件的默认配置分别在这三个文件中:
core-default.xml,
hdfs-default.xml,
mapred-default.xml
在前面给出的官网文章链接中,可以找到这三个default文件的配置详情;要注意官网上标识的Hadoop版本,比如现在我看到的是Version: 2.9.2,也就是说是属于这个版本的默认配置。
现在说如何配置。
coresite.xml下的配置:
添加
如果了解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下的配置:
添加
然后在Hadoop3.1.2的安装目录下建个目录/data,再在这个目录下建两个目录,一个叫namenode,一个叫datanode,把两个目录的路径添加到这个配置文件里:
yarn-site.xml下的配置:
添加
【第四步】
在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.