Ubuntu下伪分布式安装Hadoop详细教程
Posted Z.Q.Feng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu下伪分布式安装Hadoop详细教程相关的知识,希望对你有一定的参考价值。
目录
前言
Hadoop 的伪分布式安装需要建立在 Hadoop 的单机安装之上,关于 Hadoop 的单机安装可以参考作者的另一篇博客:Ubuntu下单机安装Hadoop详细教程(附所需安装包下载)
本文安装的 Hadoop 及 Java 环境基于林子雨老师的《大数据技术原理与应用(第3版)》中所要求,其中 Java 版本为1.8.0_301,Hadoop 版本为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.xml 和 hdfs-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