Ubuntu下伪分布式安装Hadoop详细教程

Posted Z.Q.Feng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu下伪分布式安装Hadoop详细教程相关的知识,希望对你有一定的参考价值。

目录

前言

一、修改配置文件

1. 配置 .bashrc 文件

2. 配置伪分布式

二、初始化文件系统

三、验证安装

1. 启动HDFS

 2. 部分报错

总结



前言

        Hadoop 的伪分布式安装需要建立在 Hadoop 的单机安装之上,关于 Hadoop 的单机安装可以参考作者的另一篇博客:Ubuntu下单机安装Hadoop详细教程(附所需安装包下载)

        本文安装的 Hadoop 及 Java 环境基于林子雨老师的《大数据技术原理与应用(第3版)》中所要求,其中 Java 版本为1.8.0_301Hadoop 版本为3.3.1,这里我的操作系统环境是 Ubuntu 20.04,此安装方法同样适用于低版本。


一、修改配置文件

1. 配置 .bashrc 文件

修改 .bashrc 文件:

sudo gedit ~/.bashrc

往文件末加入以下两行:

# 注意此处的路径和你的hadoop文件最后解压存放的位置是一致的
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

使配置文件立即生效:

source ~/.bashrc

2. 配置伪分布式

对于伪分布式配置,我们需要修改 core-site.xmlhdfs-site.xml 两个文件,这两个文件在我们单机安装好的 Hadoop 目录下的 /etc/hadoop 文件夹内。

Ctrl + Alt + T 打开终端,进入 Hadoop 安装目录:

cd /usr/local/hadoop

输入 ls 命令,可以看到如下输出:

hadoop@fzqs-computer:/usr/local/hadoop$ ls
bin               input          LICENSE-binary   NOTICE-binary  README.txt
etc               lib              licenses-binary      NOTICE.txt        sbin
include        libexec       LICENSE.txt          output                share
hadoop@fzqs-computer:/usr/local/hadoop$

我们所需要修改的配置文件就在该目录下的 /etc/hadoop 文件夹内:

cd ./etc/hadoop

修改我们的 core-site.xml 文件:

sudo gedit core-site.xml

 修改文件内容如下:(实则就是往 configuration 里添加参数,注意缩进)

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

期间 gedit 一堆 WARNING 不用管,没有 ERROR 就行。接着修改 hdfs-site.xml 文件:

sudo gedit hdfs-site.xml

也是添加一些配置参数,修改后如下:(注意缩进)

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

到这,伪分布式安装所需要的配置就配置好啦!



二、初始化文件系统

先回到我们的 Hadoop 安装目录下:

cd /usr/local/hadoop

使用以下命令初始化文件系统:

./bin/hdfs namenode -format

部分输出如下:

/usr/local/hadoop> ./bin/hdfs namenode -format
WARNING: /usr/local/hadoop/logs does not exist. Creating.
2021-09-27 23:54:48,247 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = fzqs-computer/10.132.13.98
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 3.3.1
......

************************************************************/
......

2021-09-27 23:54:49,927 INFO common.Storage: Storage directory /usr/local/hadoop/tmp/dfs/name has been successfully formatted.

......

/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at fzqs-computer/10.132.13.98
************************************************************/
/usr/local/hadoop> 


三、验证安装

1. 启动HDFS

文件初始化成功后,赋予 logs 文件夹相关权限:

sudo chmod -R a+w ./logs

可使用如下命令启动 HDFS:

./sbin/start-dfs.sh

注意这里若出现如下报错:localhost: ERROR: JAVA_HOME is not set and could not be found.

hadoop@fzqs-computer:/usr/local/hadoop$ ./sbin/start-dfs.sh
Starting namenodes on [localhost]
localhost: ERROR: JAVA_HOME is not set and could not be found.
Starting datanodes
localhost: ERROR: JAVA_HOME is not set and could not be found.
Starting secondary namenodes [fzqs-computer]
fzqs-computer: Warning: Permanently added 'fzqs-computer,240e:615:4003:132::a07' (ECDSA) to the list of known hosts.
fzqs-computer: ERROR: JAVA_HOME is not set and could not be found.

使用如下命令修改环境文件:

sudo gedit ./etc/hadoop/hadoop-env.sh

添加如下内容:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_301
export HADOOP=/usr/local/hadoop
export PATH=$PATH:/usr/local/hadoop/bin

注意这里的 jdk 版本号。正常启动输出如下:

hadoop@fzqs-computer:/usr/local/hadoop$ ./sbin/start-dfs.sh
Starting namenodes on [localhost]
Starting datanodes
Starting secondary namenodes [fzqs-computer]

2021-09-29 21:16:11,575 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

hadoop@fzqs-computer:/usr/local/hadoop$ 

启动后,使用 jps 指令查看所有 Java 进程,若 HDFS 启动成功输出如下:

hadoop@fzqs-computer:/usr/local/hadoop$ jps
27538 SecondaryNameNode
27138 NameNode
27319 DataNode
27663 Jps
hadoop@fzqs-computer:/usr/local/hadoop$

此时可访问 Web 页面(在浏览器输入:http://localhost:9870):

 2. 部分报错

一种是出现 permission denied 权限不足的情况,这种情况下需要往 $HADOOP_HOME/etc/hadoop 目录下的 hadoop-env.sh 添加一行内容:

sudo gedit ./etc/hadoop/hadoop-env.sh

在文首添加以下代码:

HADOOP_SHELL_EXECNAME=root

立即使配置文件生效:

source ./etc/hadoop/hadoop-env.sh

还有一种是 jps 后没有 namenode 等输出的情况,这种情况需要删除 $HADOOP_HOME 目录下的 tmp 目录:

先关闭所有 HDFS 服务:

./sbin/stop-all.sh

删除 tmp 目录: 

sudo rm -rf usr/local/hadoop/tmp

接着再重新启动 HDFS:

./sbin/start-dfs.sh

接着 jps 应该就有输出啦!



总结

以上是关于Ubuntu下伪分布式安装Hadoop详细教程的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop在Ubuntu系统下伪分布式安装Hadoop,Spark和Hive

Ubuntu下伪分布式安装Hadoop启动后jps无NameNode等输出解决办法

Ubuntu下伪分布式安装Hadoop启动后jps无NameNode等输出解决办法

Hadoop 2.x安装教程_单机/伪分布式配置_Ubuntu14.04 64bitx

Ubuntu下单机安装Hadoop详细教程(附所需安装包下载)

Ubuntu下单机安装Hadoop详细教程(附所需安装包下载)