1.安装java
hadoop基于java开发,安装hadoop前需要安装java,并在环境变量中加入JAVA_HOME,hadoop通过JAVA_HOME的地址找到java;
2.安装hadoop
下载hadoop,下载地址:
建议不要下载最高版本,而是下载稳定版本,我下载的是3.2.2版本;将压缩包解压到安装目录,注意安装目录的路径中不要有空格;
我将hadoop压缩包解压到D:hadoop路径下,解压后hadoop的目录是D:hadoophadoop-3.2.2;
然后下载winutils,在github上可以找到:
找到winutils中对应hadoop版本的文件夹,我的安装版本是3.2.2,将winutils下名为3.2.2文件夹中的文件,复制到hadoop安装目录下的bin文件夹中,替换所有同名的文件;
在环境变量中加入HADOOP_HOME,路径为D:hadoophadoop-3.2.2,并在path中加入%HADOOP_HOME%in和%HADOOP_HOME%sbin;
跟安装java检查环境变量是否配置正确类似,可以在cmd中输入hadoop version,检查hadoop环境变量配置是否正确;
3.配置hadoop
hadoop的主要配置在安装目录中etc/hadoop目录下;
(1)修改core-site.xml
其中第一个property,hadoop.tmp.dir配置的是保存数据的临时路径,在hadoop安装路径下新建data文件夹,value配置为/D:/hadoop/hadoop-3.2.2/data,注意路径前加了一个'/';
fs.defaultFS配置的是hdfs的ip和端口号,因为安装在本地,ip配置为localhost,端口配置为9000;
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hadoop.tmp.dir</name> <value>/D:/hadoop/hadoop-3.2.2/data</value> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
(2)修改hadoop-env.cmd
其中JAVA_HOME默认配置为%JAVA_HOME%,可以按实际情况修改;
set JAVA_HOME=%JAVA_HOME%
(3)修改hdfs-site.xml
其中dfs.replication是数据库的副本数,默认为3;
dfs.namenode.name.dir是DFS名称节点在本地文件系统中存储名称表(fsimage)的位置;
dfs.datanode.data.dir是DFS数据节点在本地文件系统中的位置;
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/D:/hadoop/hadoop-3.2.2/data/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/D:/hadoop/hadoop-3.2.2/data/datanode</value> </property> </configuration>
(3)修改mapred-site.xml
其中mapreduce.framework.name是指定执行mapreduce作业时使用的框架,可以配置local、classic、yarn,我这里配置的是yarn;
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
(4)修改yarn-site.xml
其中yarn.nodemanager.aux-services用于指定在进行mapreduce作业时,yarn使用mapreduce_shuffle混洗技术;
yarn.nodemanager.aux-services.mapreduce.shuffle.class用于指定混洗技术对应的字节码文件;
<?xml version="1.0"?> <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hahoop.mapred.ShuffleHandler</value> </property> </configuration>
4.节点格式化
正常情况下,格式话结束会显示'namenode has been successfully formated',如果格式话失败,原因可能是环境变量配置问题、hadoop版本和winutils版本不一致、etc中配置错误;
hdfs namenode -format
5.启动hadoop
以管理员身份打开cmd,使用win+r快捷键打开运行,输入cmd,然后ctrl+shift+enter,选择‘是’,打开cmd;
执行start-all.cmd,会新打开4个cmd,分别是namenode、resourcemanager、nodemanager、datanode的4个进程,如果这4个cmd启动没有报错,则启动成功;
6.访问hadoop服务网页
访问集群节点:
http://localhost:8088/
访问HDFS:
http://localhost:9870/
7.启动hadoop遇到的报错和解决方法
报错1:
java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/server/timelineservice/collector/TimelineCollectorManager
解决方法:
将<hadoop安装目录>sharehadoopyarn imelineservicehadoop-yarn-server-timelineservice-3.1.4.jar复制到<hadoop安装目录>sharehadoopyarn下一份
报错2:
Permissions incorrectly set for dir ... should be rwxr-xr-x, actual value = rw-rw-rw-
解决方法:
执行节点格式化语句(hdfs namenode -format)后,会在C盘tmp下生成hadoop-yarn-...的文件夹,删除这个文件夹后重新运行hadoop
报错3:
org.apache.hadoop.yarn.exceptions.YarnRuntimeException: Failed to setup local dir ... /nm-local-dir, which was marked as good.
解决方法:
使用管理员权限运行cmd
报错4:
util.SysInfoWindows: ExitCodeException exitCode=-1073741515
解决方法:
运行hadoop安装目录bin下的winutils.exe,查看报错,根据报错内容解决具体问题
参考:
-1.WIN10安装配置Hadoop https://zhuanlan.zhihu.com/p/111844817
-2.Hadoop集群的四个配置文件的常用属性解析 https://zhuanlan.zhihu.com/p/114278318