背景

原本使用虚拟机搭建集群,后来因为某些原因,不能使用虚拟机。然后想在一台配置还行的云主机上搭建一下。结果遇见了小坑,希望能给小伙伴搭建的时候提供一些想法。

环境

windows 2019
hadoop 2.9.0
jdk 1.8

搭建

安装jdk

必须依赖jdk,如果已经安装好以及配置好环境变量请跳过

  1. 下载
    下载地址:jdk8下载路径
    在这里插入图片描述

  2. 安装jdk
    注意路径不要有空格,不再赘述

  3. 配置环境变量

# 添加
JAVA_HOME=安装路径
# 添加
CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
# path中属性追加
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4. 验证环境变量
确定设置之后,重新打开cmd,输入命令

java -version
javac -version

如果 两个命令都提示jdk版本即为安装配置成功
在这里插入图片描述
如果java命令就出现错误说明jdk安装的有问题,如果javac出现错误提示,就说明环境变量配置的不正确或者没有生效。

安装Hadoop

  1. 下载hadoop安装包:hadoop2.9官方下载地址
    然后解压到合适的位置
  2. 开始配置
    2.1 进入安装路径下/etc/hadoop/
    因为我之前安装了cygwin所以可以使用ls,原生的可以使用dir命令查看路径下有什么文件
    在这里插入图片描述
    修改下面的文件
    在这里插入图片描述
    2.2 首先修改core-site.xml
    添加下面配置,指定默认文件系统
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>

在这里插入图片描述
2.3 修改mapred-site.xml
将mapred-site.xml.template文件修改名字mapred-site.xml
添加下面内容:指定调用系统为yarn

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>

在这里插入图片描述
2.4 修改hdfs-site.xml
添加下面配置:
dfs.replication指定文件副本数,单机模式,指定一个就行
dfs.namenode.name.dir 指定namenode工作路径
dfs.datanode.data.dir 指定datanode工作路径

<property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
      <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/hadoop/data/dfs/namenode</value>
  </property>
      <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/hadoop/data/dfs/datanode</value>
  </property>

说明:file:/指当前文件系统的根路径,此处即指定C:/,如果在D:/则是代指D:/,文件路径系统会自动创建
在这里插入图片描述
2.5 修改yarn-site.xml

  <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.hadoop.mapred.ShuffleHandler</value>
  </property>

在这里插入图片描述
2.6 修改hadoop-env.cmd
此文件需要指定JAVA_HOME,修改为文件系统
在这里插入图片描述
2.6 修改slaves文件
指定hdfs子节点的主机,如果只使用本地可以保持默认值localhost,如果需要添加多台,一行一台主机名

安装window下编译必须库文件

  1. winutils.exe下载
    这个文件不管是在windows下使用hadoop以及在windows下远程调用hadoop集群都要使用的。winutils.exe下载
    找到对应版本后,将bin下面的文件全部复制到hadoop安装路径下的bin目录,然后将hadoop.dll复制到
    如果是32位系统
C:\Windows\System32

如果是64位系统

C:\Windows\SysWOW64

在这里插入图片描述
然后验证winutils.exe是否安装成功,双击hadoop2.9.0/bin/winutils.exe如果出现cmd闪退就说明安装成功,如果提示缺少MSVCR100.dll就执行下面的步骤。
2. Visual C++ 2010 Redistributable Package (x64)安装
下载路径:Visual C++ 2010 Redistributable Package
在这里插入图片描述

下载之后安装,然后回测winutils.exe

启动Hadoop集群

注意:如果是第一次启动需要初始化namenode

初始化namenode

输入hadoop namenode -format
在这里插入图片描述
如果出现下图提示说明namenode初始化成功
TODO 改天把图补上

启动Hadoop

sbin/start-all.cmd

会出现四个cmd窗口,不要手动关闭
查看是否有异常信息

使用jps查看进程
在这里插入图片描述

webUI验证

查看hdfs
浏览器输入

http://localhost:50070

在这里插入图片描述
查看集群应用情况

http://localhost:8088

在这里插入图片描述

运行wc来进行测试

首先要创建文件夹

hdfs dfs -mkdir -p /wc/input

上传文件到输入路径

hdfs dfs -put aaa.txt /wc/input

进入hadoop2.9.0/share/hadoop/mapreduce路径,运行

hadoop jar hadoop-mapreduce-examples-2.9.0.jar wordcount /wc/input /wc/output

在这里插入图片描述

遇见问题

  1. Java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.$Windows
    启动时这个,测试一下winUtil.exe会不会出现错误信息,我就是因为这个找了两天。
    2.普通用户启动start-all.cmd出现Exception message: CreateSymbolicLink error (1314): ???
    解决办法cmd使用管理员进行
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐