设为首页 加入收藏

TOP

在 Ubuntu 22 的基础上进行 Hadoop 伪分布式(HDFS)的搭建(二)
2023-07-23 13:40:05 】 浏览:46
Tags:Ubuntu Hadoop HDFS
;
改为下面的内容:

<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>

配置完成后,执行 NameNode 的格式化:

cd /usr/local/hadoop
bin/hdfs namenode -format

功格式化返回样例(部分):

STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = hadoop/127.0.1.1
STARTUP_MSG:   args = [-format]
STARTUP_MSG:  version = 3.3.4

如果在这一步时提示 Error: JAVA_HOME is not set and could not be found. 的错误,首先你要确定前面关于JDK的环境变量配置文件中没有出现问题。然后,到hadoop的安装目录修改配置文件“/usr/local/hadoop/etc/hadoop/hadoop-env.sh”,在里面找到“export JAVA_HOME=${JAVA_HOME}”这行,然后,把它修改成JAVA安装路径的具体地址,比如,“export JAVA_HOME=/usr/lib/jvm/default-java”,再次启动Hadoop。

接着开启 NameNode 和 DataNode 守护进程:

cd /usr/local/hadoop
sbin/start-all.sh  #start-all.sh是个可执行文件,中间没有空格

对于伪分布式可以用 start-dfs.sh 启动hadoop,等效于前面的 start-all.sh

如果启动 Hadoop 时遇到输出非常多“ssh: Could not resolve hostname xxx”的异常情况,可通过设置 Hadoop 环境变量来解决。首先按键盘的 ctrl + c 中断启动,然后在 ~/.bashrc 中,增加如下两行内容(设置过程与 JAVA_HOME 变量一样,其中 HADOOP_HOME 为 Hadoop 的安装目录):

export HADOOP_HOME=/usr/local/hadoop export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: "NameNode"、"DataNode" 和 "SecondaryNameNode"(如果 SecondaryNameNode 没有启动,请运行 sbin/stop-all.sh 关闭进程,然后再次尝试启动尝试)。如果没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤。由于我前面执行的命令为 start-all.sh,所以是下面这个样子。

 

成功启动后,可以访问 Web 界面 http://localhost:9870 (由于hadoop版本不同,可能你需要访问的端口号是50070)以及  http://localhost:8088 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

 

 

伪分布式到此就搭建完成啦!

下面会再补充一些报错以及解决方案

 

 (1)若是 DataNode 没有启动,可尝试如下的方法(注意这会删除 HDFS 中原有的所有数据,如果原有的数据很重要请不要这样做)

cd /usr/local/hadoop sbin/stop-all.sh   # 关闭
rm -r ./tmp     # 删除 tmp 文件,注意这会删除 HDFS 中原有的所有数据
./bin/hdfs namenode -format   # 重新格式化 NameNode
sbin/start-all.sh  # 启动

 

(2)解决 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable警告问题 

vim ~/.bashrc # 添加以下内容
export JAVA_LIBRARY_PATH=/usr/local/hadoop/lib/native

然后重新应用环境变量

source ~/.bashrc

 

(3)当遇到9870端口被占用的问题时,可以通过更改启动时的端口号来实现启动,记得先通过 sbin/stop-dfs.sh 关闭服务,然后更改前面的 core-site.xml 文件,往里面添加以下内容到<configuration></configuration>中间

<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>localhost:50090</value>
</property>

 

(4)无法访问网站,这可能是Linux中的防火墙未关闭的问题:

sudo ufw status    # 查看防火墙状态
sudo ufw disable    # 关闭防火墙

 

 

 


 

啊,好累,这篇写了巨久

整理:BDT20040

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇ffmpeg视频上传及压缩Linux配置篇.. 下一篇tcp_tw_reuse、tcp_tw_recycle、t..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目