1.安装java
hadoop基于java开发,安装hadoop前需要安装java,并在环境变量中加入JAVA_HOME,hadoop通过JAVA_HOME的地址找到java;
2.安装hadoop
下载hadoop,下载地址:
https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/ 建议不要下载最高版本,而是下载稳定版本,我下载的是3.2.2版本;将压缩包解压到安装目录,注意安装目录的路径中不要有空格; 我将hadoop压缩包解压到D:\hadoop路径下,解压后hadoop的目录是D:\hadoop\hadoop-3.2.2; 然后下载winutils,在github上可以找到: https://github.com/cdarlint/winutils 找到winutils中对应hadoop版本的文件夹,我的安装版本是3.2.2,将winutils下名为3.2.2文件夹中的文件,复制到hadoop安装目录下的bin文件夹中,替换所有同名的文件; 在环境变量中加入HADOOP_HOME,路径为D:\hadoop\hadoop-3.2.2,并在path中加入%HADOOP_HOME%\bin和%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安装目录>\share\hadoop\yarn\timelineservice\hadoop-yarn-server-timelineservice-3.1.4.jar复制到<hadoop安装目录>\share\hadoop\yarn\下一份 报错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