【Hadoop】构建并配置单机节点集群(伪分布式模式Pseudo-Distributed Operation Mode)


本文的目标是辅助官方文档,构建并配置单节点Hadoop伪分布式模式(Pseudo-Distributed Operation Mode)。

本文作者作为接触Linux和Hadoop的超级小白,在配置过程中踩坑无数,这里将遇到的问题和解决方案总结如下。如有解释错误以及更好方法,还请多多指正,共同学习共同进步(呲牙笑)

环境搭建

1. 环境基础

  $ sudo apt-get install ssh
  $ sudo apt-get install pdsh

2. 下载Hadoop

选择合适的镜像文件 Apache Download Mirrors,这几个镜像都可以,作者选择清华的镜像,并选择了hadoop-3.2.1版本,注意下载.tar.gz结尾的文件。
【版本选择时候一定要注意和其他平台的兼容问题!!最好去查一下官方文件,这里附上 HBase与Hadoop版本对应链接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 解压

// 新建目录
$ mkdir /usr/hadoop

// 将下载好的.tar.gz文件移动到上述目录下
$ mv hadoop-3.2.1.tar.gz  /usr/hadoop

// 解压文件
$ tar -zxvf hadoop-3.2.1.tar.gz

4. 配置Hadoop-env.sh

// 通过cd命令不断深入,找到etc目录下的Hadoop-env.sh文件(路径可能有区别)
$ cd /usr/hadoop/hadoop-3.2.1/etc/hadoop

// 编辑文件(利用gedit命令也可)
$ vi hadoop-env.sh

// 打开文件后,找到JAVA_HOME,将其前面的#去掉,并将路径调整本机JAVA路径
 # set to the root of your Java installation
  export JAVA_HOME=/usr/java/jdk1.8.0_261
 
//更改后关闭并保存:按Esc键后,输入 :wq

做完以上步骤,就可以开启Hadoop集群;其中包括三种模式:

  • Local (Standalone) Mode
  • Pseudo-Distributed Mode
  • Fully-Distributed Mode

本文仅介绍第二种伪分布式模式,其他配置可参考官方文档。

5. 配置单节点上伪分布式模式

参考第四步,配置文件etc/hadoop/core-site.xml,增加如下内容:

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

配置etc/hadoop/hdfs-site.xml文件:

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

6. 测试

配置完成,官方文档会带大家查看一些配置情况,这里就提炼干货不多说了。接下来就是测试部分,各种迷幻问题也就来了。。。

(1) 格式化文件系统

  $ bin/hdfs namenode -format

(2) 启动DataNode和NameNode

  $ sbin/start-dfs.sh

(3) 通过浏览器查看NameNode和DataNode的情况

  http://localhost:9870/

如果以上步骤都顺利进行,jps之后,显示均启动,那恭喜你完工了!!

在这里插入图片描述
然而理想丰满,现实残酷地让人想落泪。作者就遇到了各种各样的问题T_T

解决问题:

1. 无法正常启动NameNode

SHUTDOWN_MSG: Shutting down NameNode at ___ 在这里插入图片描述
关于这个问题,感谢一篇博文的帮助,这里提供了很好的解决方案,可以参考原文

  • 在Hadoop安装目录下找到sbin文件夹
  • 在里面修改四个文件
  • 对于start-dfs.sh和stop-dfs.sh文件,添加下列参数:
    #!/usr/bin/env bash
    HDFS_DATANODE_USER=root
    HADOOP_SECURE_DN_USER=hdfs
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root
  • 对于start-yarn.sh和stop-yarn.sh文件,添加下列参数:
    #!/usr/bin/env bash
    YARN_RESOURCEMANAGER_USER=root
    HADOOP_SECURE_DN_USER=yarn
    YARN_NODEMANAGER_USER=root

2. 无法正常启动DataNode

SHUTDOWN_MSG: Shutting down DataNode at ___,且start-dfs.sh之后jps后没有DataNode,即DataNode节点启动失败

在这里插入图片描述
这个问题,同样感谢两篇博文的帮助,这里提供了很好的解决方案,可以参考原文1参考原文2

查看日志文件,发现有:

java.io.IOException: Incompatible clusterIDs in /tmp/hadoop-root/dfs/data: namenode clusterID = CID-c7037991-30b6-4ff1-a886-b9097304b43d; datanode clusterID = CID-5073d500-972a-4226-8831-fb082f72864c

  • 问题描述
    截取的第一行日志说明了datanode的clusterID 和 namenode的clusterID 不匹配

  • 解决方法:

  1. 根据日志进入路径(/tmp/hadoop-root/dfs/data)
  2. 其下有/data和/name两个目录。将name/current下的VERSION中的clusterID复制到data/current下的VERSION中,覆盖掉原来的clusterID,让两个保持一致;或者,直接删除掉data和name两个目录下的内容
  3. 重启hadoop
  4. 注意:在重启之前,一定要结束掉hadoop所有进程(sbin/stop-all.sh),否则会出现其他错误。

至此,我们迎来了阶段性的胜利,庆祝撒花!遇到其他问题会再补充,希望大家都可以配置成功!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值