目录
前言
一、修改配置文件
1. 配置 .bashrc 文件
2. 配置伪分布式
二、初始化文件系统
三、验证安装
1. 启动HDFS
?2. 部分报错
总结
前言
????????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 应该就有输出啦!
总结
|