最新资讯

  • 【一篇搞定配置】如何在Ubuntu上配置单机/伪分布式Hadoop

【一篇搞定配置】如何在Ubuntu上配置单机/伪分布式Hadoop

2025-05-07 01:01:00 0 阅读

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀各种软件安装与配置_十二月的猫的博客-CSDN博客

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 

关注本专栏并在专栏中任何一篇文章下发表评论,即可获得【PyCharm、Clion、DataGrip、DataSpell、IDEA、Goland、Rider、PhpStorm等软件的破解版】。

目录

1. 环境

2. 创建hadoop用户

1. Terminal(终端)

2. Bash(Bourne Again Shell)

3. 更新apt

4. 安装并使用vim

5. 安装SSH、配置SSH无密码登陆

 6. 安装Java环境 

7. 安装Hadoop3.3.5

8. Hadoop单机配置(非分布式)

9. Hadoop伪分布式配置

10. 运行Hadoop伪分布式实例

11. 总结


1. 环境

本教程使用 Ubuntu 22.04 64位作为系统环境(或者Ubuntu 22.04/20.04/18.04都可以),请自行安装Ubuntu系统。具体可以参考下面文章:

【一篇搞定配置】在VirtualBox内安装运行Unbuntu-CSDN博客

装好了 Ubuntu 系统之后,在安装 Hadoop 前还需要做一些必备工作。

2. 创建hadoop用户

如果你安装 Ubuntu 的时候不是用的 "hadoop" 用户,那么需要增加一个名为 hadoop 的用户。

核心思想:创建一个用户专门用来使用hadoop服务 

原因如下:

  1. 权限管理

    • 使用独立的用户账户可以提高安全性。通过专门的 hadoop 用户,您可以限制访问权限,仅允许该用户进行 Hadoop 相关操作,从而避免其他用户对系统的干扰或误操作。
  2. 资源隔离

    • 将 Hadoop 服务运行在独立的用户账户上,可以更轻松地管理资源,如内存、CPU 等,确保 Hadoop 进程不会与其他用户的进程竞争系统资源。
  3. 简化管理

    • 所有与 Hadoop 相关的文件和进程都归 "hadoop" 用户所有,方便后续的管理和监控。一旦出现问题,可以更容易地定位和解决。

首先按 ctrl+alt+t 打开终端窗口,输入如下命令创建新用户 :

sudo useradd -m hadoop -s /bin/bash

这条命令创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell。

我们都知道shell的意思是命令解释器,bin中放的是很多系统底层服务所需要的代码脚本。

这里,我开始思考bash是什么?bash和terminal的关系是什么?

1. Terminal(终端)

  • Terminal(终端) 是一个应用程序,它提供了一个用户与计算机之间进行命令行交互的界面。在 Ubuntu 中,Terminal 是一个 GUI 应用程序(图形界面应用),用于打开一个命令行窗口。

  • 当你启动 Terminal 时,它会创建一个 shell 会话,通常是 Bash shell,用来接受和执行用户输入的命令。

  • Terminal 是用户与操作系统之间的交互媒介,通过它,你可以输入命令、运行程序、编辑文件等。它的本质是一个界面工具,用来显示与操作系统的交互。

2. Bash(Bourne Again Shell)

  • Bash 是一个 shell,即命令行解释器,是一种用来执行命令的程序。它提供了一个环境,用于解释用户输入的命令并与操作系统交互。Bash 也是一种脚本语言,你可以在 Bash 中编写脚本来自动化任务。

  • Bash 是 Ubuntu 默认的 shell,也就是说,当你打开一个终端窗口时,默认情况下是运行 Bash shell。

简单来说:

        1、bash是shell的一种类型。

        2、terminal是shell会话的一个可视化应用程序。

        3、terminal是皮,shell是terminal能够运行的内核。

        4、Ubuntu中默认的shell就是bash shell。

        5、打开terminal其内核默认为bash shell

sudo命令: 本文中会大量使用到sudo命令。sudo是ubuntu中一种权限管理机制,管理员可以授权给一些普通用户去执行一些需要root权限执行的操作。当使用sudo命令时,就需要输入您当前用户的密码.

密码:在Linux的终端中输入密码,终端是不会显示任何你当前输入的密码,也不会提示你已经输入了多少字符密码。而在windows系统中,输入密码一般都会以“*”表示你输入的密码字符

输入法中英文切换: ubuntu中终端输入的命令一般都是使用英文输入。linux中英文的切换方式是使用键盘“shift”键来切换,也可以点击顶部菜单的输入法按钮进行切换。ubuntu自带的Sunpinyin中文输入法已经足够读者使用。

Ubuntu终端复制粘贴快捷键: 在Ubuntu终端窗口中,复制粘贴的快捷键需要加上 shift,即粘贴是 ctrl+shift+v。

接着使用如下命令设置密码,可简单设置为 hadoop,按提示输入两次密码:

sudo passwd hadoop

可为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题:

最后注销当前用户(点击屏幕右上角的齿轮,选择注销),返回登陆界面。在登陆界面中选择刚创建的 hadoop 用户进行登陆。

3. 更新apt

用 hadoop 用户登录后,我们先更新一下 apt,后续我们使用 apt 安装软件,如果没更新可能有一些软件安装不了。按 ctrl+alt+t 打开终端窗口,执行如下命令:

sudo apt-get update

核心思想:

   1、apt是 Ubuntu 系统中的一个包管理工具,用来安装、更新和删除软件包。

        2、apt是一个库,里面有很多软件的安装包。

        3、更新apt就是让apt从网上获取最新的软件安装包,以防后续的软件安装和更新出现问题。

        4、apt是软件安装包的库+包管理工具

若出现如下 "Hash校验和不符" 的提示,可通过更改软件源来解决。若没有该问题,则不需要更改。从软件源下载某些软件的过程中,可能由于网络方面的原因出现没法下载的情况,那么建议更改软件源。在学习Hadoop过程中,即使出现“Hash校验和不符”的提示,也不会影响Hadoop的安装。

 首先点击左侧任务栏的【系统设置】(齿轮图标),选择【软件和更新】

 点击 “下载自” 右侧的方框,选择【其他节点】

在列表中选中【mirrors.aliyun.com】,并点击右下角的【选择服务器】,会要求输入用户密码,输入即可。

接着点击关闭。

此时会提示列表信息过时,点击【重新载入】

最后耐心等待更新缓存即可。更新完成会自动关闭【软件和更新】这个窗口。如果还是提示错误,请选择其他服务器节点如 mirrors.163.com 再次进行尝试。更新成功后,再次执行 sudo apt-get update 就正常了。

4. 安装并使用vim

Vim 是一个高度可定制的 文本编辑器,最初由 Bram Moolenaar 在 1991 年创建,基于 vi 编辑器(UNIX 系统中最常用的编辑器)。Vim 是 "Vi IMproved"(即 "Vi 改进版")的缩写,意味着它在经典的 vi 编辑器基础上进行了大量的扩展和增强。

(如果这里大家想要使用gredit也是可以的,但是猫猫不建议使用gredit!!!!!)

(vim功能远比gredit强大!!!!可能。。。。入门有点难)

主要特点:

  1. 模式化编辑:Vim 的最大特点是它的 模式化编辑。与传统的文本编辑器(如 gedit、Notepad 等)不同,Vim 使用多种模式来处理文本。常见的模式包括:

    • 普通模式(Normal Mode):这是 Vim 默认的工作模式,用户可以在这个模式下通过键盘快捷键进行文本移动、删除、复制、粘贴等操作。
    • 插入模式(Insert Mode):在此模式下,用户可以像其他编辑器一样直接输入文本。你可以通过按 i 或 a 进入插入模式。
    • 命令模式(Command Mode):在此模式下,你可以执行命令(如保存文件、查找文本、替换文本等)。进入命令模式的方法通常是按下 :
    • 可视模式(Visual Mode):用来选择文本,选择后可以执行诸如复制、剪切等操作。
  2. 高效的键盘操作:由于 Vim 的设计基于模式化编辑,用户可以通过键盘快速移动光标、选择文本、进行批量操作而无需使用鼠标。熟练使用 Vim 后,用户可以显著提高文本编辑效率,特别是在处理大文件时。

  3. 高度可定制性:Vim 允许用户通过配置文件(~/.vimrc)高度自定义其行为。你可以设置快捷键、定义命令、安装插件,甚至通过编程语言(Vimscript)编写脚本来扩展 Vim 的功能。

  4. 插件系统:Vim 拥有一个丰富的插件生态系统,你可以安装各种插件来增强其功能,如代码自动完成、语法高亮、版本控制集成、调试工具等。插件可以通过工具如 Vundlevim-plug 来管理。

  5. 跨平台支持:Vim 是跨平台的,可以运行在几乎所有操作系统上,包括 Linux、macOS、Windows 等,且运行效率高,占用资源少。

  6. 轻量级:与许多功能强大的文本编辑器(如 Visual Studio Code 或 Sublime Text)相比,Vim 是一个非常轻量级的工具,启动速度快,占用内存少,适合在资源有限的环境中使用。

  7. 面向程序员的特性

    • 语法高亮:Vim 支持多种编程语言的语法高亮,帮助程序员更容易地阅读和编辑代码。
    • 代码折叠:支持折叠代码块,帮助用户集中注意力于当前需要处理的代码部分。
    • 自动补全:通过插件,Vim 可以提供代码自动补全、跳转到函数定义等功能,类似于集成开发环境(IDE)中的特性。
sudo apt-get install vim

这里本人出了点问题一直显示安装失败。

后面检查发现:浏览器也无法访问百度。

因此断定是网络连接出了问题!!!!!

在修改虚拟机网络连接后,一切正常~~~~ 

vim的常用模式有分为命令模式插入模式可视模式正常模式。本教程中,只需要用到正常模式和插入模式。二者间的切换即可以帮助你完成本指南的学习。

  1. 正常模式
    正常模式主要用来浏览文本内容。一开始打开vim都是正常模式。在任何模式下按下Esc键就可以返回正常模式。
  2. 插入模式
    插入编辑模式则用来向文本中添加内容的。在正常模式下,输入i键即可进入插入编辑模式
  3. 退出vim
    如果有利用vim修改任何的文本,一定要记得保存。Esc键退回到正常模式中,然后输入:wq即可保存文本并退出vim。

5. 安装SSH、配置SSH无密码登陆

集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:

sudo apt-get install openssh-server

SSH(Secure Shell)是一种网络协议,用于在不安全的网络上安全地访问和管理计算机。SSH协议为用户提供了一种加密的、安全的方式来连接远程计算机.

SSH:主要用于实现安全的远程登录、远程命令执行,以及安全的数据传输。 

核心想法:

        1、SSH:是一个shell(命令解释器),用来执行一些命令。

        2、SSH作用为实现远程登录、远程数据传输、远程执行命令。

        3、SSH能够保证安全。

 安装后,可以使用如下命令登陆本机:

ssh localhost

此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码 hadoop,这样就登陆到本机了。

但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆比较方便。

首先退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:

exit                           # 退出刚才的 ssh localhost
cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa              # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

~的含义: 在 Linux 系统中,~ 代表的是用户的主文件夹,即 "/home/用户名" 这个目录,如你的用户名为 hadoop,则 ~ 就代表 "/home/hadoop/"。 此外,命令中的 # 后面的文字是注释,只需要输入前面命令即可。

此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了。

到这一步就配置完成SSH了!!!!!!

之后我们就可以使用ssh localhost来登录SSH,并在SSH上面运行远程控制、登录等命令 


下面的jdk-8u371-linux-x64.tar.gz、hadoop-3.3.5.tar.gz均放在/home/Downloads/目录下


 6. 安装Java环境 

Hadoop 需要 JDK(Java Development Kit) 的原因主要是因为 Hadoop 是用 Java 编写的,并且很多 Hadoop 组件和操作都依赖于 Java 来运行。

手动安装,推荐采用本方式

Hadoop3.3.5需要JDK版本在1.8及以上。需要按照下面步骤来自己手动安装JDK1.8。
我们已经把JDK1.8的安装包jdk-8u371-linux-x64.tar.gz放在了百度云盘,可以点击这里到百度云盘下载JDK1.8安装包(提取码:ziyu)。请把压缩格式的文件jdk-8u371-linux-x64.tar.gz下载到本地电脑,假设保存在“/home/linziyu/Downloads/”目录下。

cd /usr/lib
sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件
cd ~ #进入hadoop用户的主目录
cd Downloads  #注意区分大小写字母,刚才已经通过FTP软件把JDK安装包jdk-8u371-linux-x64.tar.gz上传到该目录下
sudo tar -zxvf ./jdk-8u371-linux-x64.tar.gz -C /usr/lib/jvm  #把JDK文件解压到/usr/lib/jvm目录下

上面使用了解压缩命令tar,如果对Linux命令不熟悉,可以参考常用的Linux命令用法。

JDK文件解压缩以后,可以执行如下命令到/usr/lib/jvm目录查看一下:

cd /usr/lib/jvm
ls

可以看到,在/usr/lib/jvm目录下有个jdk1.8.0_371目录。
下面继续执行如下命令,设置环境变量:

cd ~
vim ~/.bashrc

上面命令使用vim编辑器(查看vim编辑器使用方法)打开了hadoop这个用户的环境变量配置文件,请在这个文件的开头位置,添加如下几行内容:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_371
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

结果如下:

保存.bashrc文件并退出vim编辑器。然后,继续执行如下命令让.bashrc文件的配置立即生效:

source ~/.bashrc

这时,可以使用如下命令查看是否安装成功:

java -version

如果能够在屏幕上返回如下信息,则说明安装成功:

hadoop@ubuntu:~$ java -version
java version "1.8.0_371"
Java(TM) SE Runtime Environment (build 1.8.0_371-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

结果如下:

至此,就成功安装了Java环境。下面就可以进入Hadoop的安装。

7. 安装Hadoop3.3.5

Hadoop安装文件,可以到Hadoop官下载hadoop-3.3.5.tar.gz。
也可以直接点击这里从百度云盘下载软件(提取码:ziyu),进入百度网盘后,进入“软件”目录,找到hadoop-3.3.5.tar.gz文件,下载到本地。
我们选择将 Hadoop 安装至 /usr/local/ 中:

cd Downloads
sudo tar -zxvf /hadoop-3.3.5.tar.gz -C /usr/local   # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-3.3.5/ ./hadoop            # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop       # 修改文件权限

Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:

cd /usr/local/hadoop
./bin/hadoop version

相对路径与绝对路径: 请务必注意命令中的相对路径与绝对路径,本文后续出现的 ./bin/..../etc/... 等包含 ./ 的路径,均为相对路径,以 /usr/local/hadoop 为当前目录。例如在 /usr/local/hadoop 目录中执行 ./bin/hadoop version 等同于执行 /usr/local/hadoop/bin/hadoop version。可以将相对路径改成绝对路径来执行,但如果你是在主文件夹 ~ 中执行 ./bin/hadoop version,执行的会是 /home/hadoop/bin/hadoop version,就不是我们所想要的了。

结果如下:

8. Hadoop单机配置(非分布式)

Hadoop 默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。

现在我们可以执行例子来感受下 Hadoop 的运行。Hadoop 附带了丰富的例子(运行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。

在此我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中。

cd /usr/local/hadoop
mkdir ./input
cp ./etc/hadoop/*.xml ./input   # 将配置文件作为输入文件
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar grep ./input ./output 'dfs[a-z.]+'
cat ./output/*          # 查看运行结果

执行成功后如下所示,输出了作业的相关信息,输出的结果是符合正则的单词 dfsadmin 出现了1次

注意,Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 ./output 删除。

rm -r ./output

9. Hadoop伪分布式配置

Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。

修改配置文件 core-site.xml,通过 gedit 编辑会比较方便: 

gedit ./etc/hadoop/core-site.xml

将当中的:



修改为下面配置:


    
        hadoop.tmp.dir
        file:/usr/local/hadoop/tmp
        Abase for other temporary directories.
    
    
        fs.defaultFS
        hdfs://localhost:9000
    

同样的,打开配置文件 hdfs-site.xml

gedit ./etc/hadoop/hdfs-site.xml

修改配置文件 hdfs-site.xml


    
        dfs.replication
        1
    
    
        dfs.namenode.name.dir
        file:/usr/local/hadoop/tmp/dfs/name
    
    
        dfs.datanode.data.dir
        file:/usr/local/hadoop/tmp/dfs/data
    

Hadoop配置文件说明:

Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。

此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。

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

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

成功的话,会看到 "successfully formatted" 的提示,具体返回信息类似如下:

2023-07-11 14:28:30,560 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************

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

......
2023-07-11 15:31:35,677 INFO common.Storage: Storage directory /usr/local/hadoop/tmp/dfs/name **has been successfully formatted**.
2023-07-11 15:31:35,700 INFO namenode.FSImageFormatProtobuf: Saving image file /usr/local/hadoop/tmp/dfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
2023-07-11 15:31:35,770 INFO namenode.FSImageFormatProtobuf: Image file /usr/local/hadoop/tmp/dfs/name/current/fsimage.ckpt_0000000000000000000 of size 393 bytes saved in 0 seconds .
2023-07-11 15:31:35,810 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
2023-07-11 15:31:35,816 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid = 0 when meet shutdown.
2023-07-11 15:31:35,816 INFO namenode.NameNode: SHUTDOWN_MSG:  
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop/127.0.1.1
*************************************************************/

如果在这一步时提示 Error: JAVA_HOME is not set and could not be found. 的错误,则说明之前设置 JAVA_HOME 环境变量那边就没设置好,请按教程先设置好 JAVA_HOME 变量,否则后面的过程都是进行不下去的。如果已经按照前面教程在.bashrc文件中设置了JAVA_HOME,还是出现 Error: JAVA_HOME is not set and could not be found. 的错误,那么,请到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-dfs.sh  #start-dfs.sh是个完整的可执行文件,中间没有空格

若出现如下SSH提示,输入yes即可。

启动时可能会出现如下 WARN 提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable WARN 提示可以忽略,并不会影响正常使用。

启动 Hadoop 时提示 Could not resolve hostname:

如果启动 Hadoop 时遇到输出非常多“ssh: Could not resolve hostname xxx”的异常情况,如下图所示:

这个并不是 ssh 的问题,可通过设置 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

保存后,务必执行 source ~/.bashrc 使变量设置生效,然后再次执行 ./sbin/start-dfs.sh 启动 Hadoop。

启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: "NameNode"、"DataNode" 和 "SecondaryNameNode"(如果 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试)。如果没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。

Hadoop无法正常启动的解决方法: 一般可以查看启动日志来排查原因,注意几点:

  • 启动时会提示形如 "DBLab-XMU: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.out",其中 DBLab-XMU 对应你的机器名,但其实启动日志信息是记录在 /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.log 中,所以应该查看这个后缀为 .log 的文件;
  • 每一次的启动日志都是追加在日志文件之后,所以得拉到最后面看,对比下记录的时间就知道了。
  • 一般出错的提示在最后面,通常是写着 Fatal、Error、Warning 或者 Java Exception 的地方。
  • 可以在网上搜索一下出错信息,看能否找到一些相关的解决方法。

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

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

成功启动后,可以访问 Web 界面 http://localhost:9870 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

核心要点:

        1、执行 ./sbin/start-dfs.sh 启动 Hadoop。

        2、通过命令 jps 来判断是否成功启动。

        3、启动后可以访问 Web 界面 http://localhost:9870 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

运行成功后Web界面为:

10. 运行Hadoop伪分布式实例

上面的单机模式,grep 例子读取的是本地数据,伪分布式读取的则是 HDFS 上的数据。要使用 HDFS,首先需要在 HDFS 中创建用户目录:

./bin/hdfs dfs -mkdir -p /user/hadoop

 核心思想:

        1、想要运行Hadoop就需要两个核心技术:a. HDFS;b. mapreduce

        2、HDFS:用于分布式存储;MapReduce:用于分析计算数据

        3、使用伪分布式Hadoop,本质就是在本地启用HDFS。从而让Hadoop并不是读取本地文件来分析,而是从HDFS从读取数据来使用MapReduce处理。

        4、伪分布和分布唯一区别:有没有真实使用多个终端去操作

        5、用户想要使用HDFS就需要为自己创建目录,本质就是在NameNode中注册,方便后续查找对应的DataNode。

注意: 教材《大数据技术原理与应用》的命令是以"./bin/hadoop dfs"开头的Shell命令方式,实际上有三种shell命令方式。

  1. hadoop fs
  2. hadoop dfs
  3. hdfs dfs

hadoop fs适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统
hadoop dfs只能适用于HDFS文件系统
hdfs dfs跟hadoop dfs的命令作用一样,也只能适用于HDFS文件系统

接着将 ./etc/hadoop 中的 xml 文件作为输入文件复制到分布式文件系统中,即将 /usr/local/hadoop/etc/hadoop 复制到分布式文件系统中的 /user/hadoop/input 中。我们使用的是 hadoop 用户,并且已创建相应的用户目录 /user/hadoop ,因此在命令中就可以使用相对路径如 input,其对应的绝对路径就是 /user/hadoop/input:

./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put ./etc/hadoop/*.xml input

复制完成后,可以通过如下命令查看文件列表:

./bin/hdfs dfs -ls input

伪分布式运行 MapReduce 作业的方式跟单机模式相同,区别在于伪分布式读取的是HDFS中的文件(可以将单机步骤中创建的本地 input 文件夹,输出结果 output 文件夹都删掉来验证这一点)。

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar grep input output 'dfs[a-z.]+'

 查看运行结果的命令(查看的是位于 HDFS 中的输出结果):

./bin/hdfs dfs -cat output/*

我们也可以将运行结果取回到本地:

rm -r ./output    # 先删除本地的 output 文件夹(如果存在)
./bin/hdfs dfs -get output ./output     # 将 HDFS 上的 output 文件夹拷贝到本机
cat ./output/*

Hadoop 运行程序时,输出目录不能存在,否则会提示错误 "org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/hadoop/output already exists" ,因此若要再次执行,需要执行如下命令删除 output 文件夹:

./bin/hdfs dfs -rm -r output    # 删除 output 文件夹

运行程序时,输出目录不能存在: 运行 Hadoop 程序时,为了防止覆盖结果,程序指定的输出目录(如 output)不能存在,否则会提示错误,因此运行前需要先删除输出目录。在实际开发应用程序时,可考虑在程序中加上如下代码,能在每次运行时自动删除输出目录,避免繁琐的命令行操作:

Configuration conf = new Configuration();
Job job = new Job(conf);
 
/* 删除输出目录 */
Path outputPath = new Path(args[1]);
outputPath.getFileSystem(conf).delete(outputPath, true);

若要关闭 Hadoop,则运行

./sbin/stop-dfs.sh

注意: 下次启动 hadoop 时,无需进行 NameNode 的初始化,只需要运行 ./sbin/start-dfs.sh 就可以!

11. 总结

如果觉得对你有帮助,辛苦友友点个赞,收个藏呀~~~ 

本文转载自:Hadoop3.3.5安装教程_单机/伪分布式配置_Hadoop3.3.5/Ubuntu22.04(20.04/18.04/16.04)_厦大数据库实验室博客

作者:厦门大学计算机系林子雨副教授

本文地址:https://www.vps345.com/8787.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 javascript 前端 chrome edge 英语 python MCP Ubuntu 开发环境 神经网络 人工智能 深度学习 计算机视觉 卷积神经网络 笔记 ssh 进程 操作系统 进程控制 经验分享 llama 算法 opencv 自然语言处理 语言模型 网络 php 阿里云 网络安全 网络协议 docker java 容器 ubuntu nginx 负载均衡 deepseek Ollama 模型联网 API CherryStudio macos windows conda 数据库 centos oracle 关系型 安全 分布式 数据分析 Dify 大数据 spark hive vscode jellyfin nas openvpn server openvpn配置教程 centos安装openvpn mysql tomcat c++ 并查集 leetcode fstab jenkins gitee spring boot tcp/ip ip协议 asm C# MQTTS 双向认证 emqx json adb android harmonyos 华为 开发语言 typescript 计算机网络 RTSP xop RTP RTSPServer 推流 视频 学习 高级IO epoll 环境变量 科技 ai 个人开发 debian PVE react.js 前端面试题 node.js 持续部署 机器学习 学习方法 pycharm ide pytorch vue.js audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 Qwen2.5-coder 离线部署 matplotlib fonts-noto-cjk ue5 vr redis pip ip命令 新增网卡 新增IP 启动网卡 多线程 ssl Docker Hub docker pull 镜像源 daemon.json Linux fastapi mcp mcp-proxy mcp-inspector fastapi-mcp agent sse 前端框架 YOLO 目标检测 burp suite 抓包 vnc ui 华为云 华为od HarmonyOS Next rabbitmq qt QT 5.12.12 QT开发环境 Ubuntu18.04 efficientVIT YOLOv8替换主干网络 TOLOv8 filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 智能路由器 外网访问 内网穿透 端口映射 word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 鸿蒙 git elasticsearch maxkb ARG 网络药理学 生信 生物信息学 gromacs 分子动力学模拟 MD 动力学模拟 llm transformer 程序员创富 nlp gcc centos 7 小程序 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 云原生 ip vue3 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 powerpoint 自动化 dify numpy http 单片机 DeepSeek-R1 API接口 protobuf 序列化和反序列化 安装 MacOS录屏软件 spring cloud 面试 性能优化 jdk intellij-idea 架构 mac 游戏程序 ios kafka AI大模型 大模型技术 本地部署大模型 ollama 私有化 本地部署 聚类 虚拟机 VMware java-ee EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 开源 github 实时音视频 实时互动 Alexnet 物联网 mcu iot 信息与通信 运维开发 windows 服务器安装 etcd 数据安全 RBAC 媒体 产品经理 agi microsoft vim websocket c# cron crontab日志 创意 社区 xcode 计算机外设 电脑 软件需求 Flask FastAPI Waitress Gunicorn uWSGI Uvicorn eureka 互信 数据结构 c语言 链表 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 Dell R750XS DevEco Studio 思科 rust gnu 嵌入式 linux驱动开发 arm开发 嵌入式硬件 集成学习 集成测试 sublime text 编辑器 进程信号 rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK uni-app 后端 unix k8s kubernetes spring threejs 3D 进程优先级 调度队列 进程切换 apache minicom 串口调试工具 测试工具 fd 文件描述符 飞牛nas fnos IIS服务器 IIS性能 日志监控 log4j C 进程地址空间 腾讯云 chatgpt DeepSeek 大模型 maven intellij idea stm32 ansible 云桌面 微软 AD域控 证书服务器 dubbo 监控 自动化运维 yum docker-compose docker compose windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 mq rocketmq rpc alias unalias 别名 AI编程 僵尸进程 WSL2 Ubuntu22.04 虚拟化 开发人员主页 Linux的权限 flash-attention 报错 list sql .net selenium svn VMware安装Ubuntu Ubuntu安装k8s bash 远程工作 低代码 sqlserver 豆瓣 追剧助手 迅雷 微信 gpu算力 NFS prometheus 监控k8s 监控kubernetes Hive环境搭建 hive3环境 Hive远程模式 ESP32 arm WLAN aws googlecloud MQTT协议 消息服务器 代码 udp vSphere vCenter 软件定义数据中心 sddc AI 爬虫 数据集 LDAP 键盘 基础环境 Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 AIGC AI-native gpt Agent LLM CrewAI jmeter 软件测试 edge浏览器 HCIE 数通 rime bug burpsuite 安全工具 mac安全工具 burp安装教程 渗透工具 Ubuntu Server Ubuntu 22.04.5 gateway Clion Nova ResharperC++引擎 Centos7 远程开发 大数据平台 web安全 系统安全 perf linux内核 5G 3GPP 卫星通信 pillow html5 firefox 监控k8s集群 集群内prometheus kamailio sip VoIP vmware 卡死 Cline 自动化编程 https rust腐蚀 openwrt iperf3 带宽测试 ssh漏洞 ssh9.9p2 CVE-2025-23419 WSL win11 无法解析服务器的名称或地址 安卓模拟器 RAGFLOW database 本地环回 bind ros2 moveit 机器人运动 rancher golang ai小智 语音助手 ai小智配网 ai小智教程 智能硬件 esp32语音助手 diy语音助手 selete iftop 网络流量监控 机器人 wireshark 显示过滤器 ICMP Wireshark安装 网络工程师 网络管理 软考 2024 2024年上半年 下午真题 答案 linux环境变量 ux 视觉检测 程序人生 VMware创建虚拟机 环境配置 电子信息 通信工程 毕业 Windsurf 数据挖掘 网络用户购物行为分析可视化平台 大数据毕业设计 1024程序员节 文件系统 路径解析 代码调试 ipdb 安装教程 GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 live555 源码剖析 rtsp实现步骤 流媒体开发 webstorm nftables 防火墙 中间件 iis 多线程服务器 Linux网络编程 visual studio code FTP 服务器 远程控制 远程看看 远程协助 无人机 jar gradle 缓存 强制清理 强制删除 mac废纸篓 linux上传下载 rtsp rtp KylinV10 麒麟操作系统 Vmware 串口服务器 flask xml bcompare Beyond Compare 硬件工程 flutter camera Arduino Hyper-V WinRM TrustedHosts 命令 compose DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 政务 分布式系统 监控运维 Prometheus Grafana iBMC UltraISO Kali Linux 黑客 渗透测试 信息收集 虚拟局域网 postgresql linux安装配置 域名服务 DHCP 符号链接 配置 kali 共享文件夹 深度求索 私域 知识库 tcpdump 系统架构 微服务 设计模式 软件工程 mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 压测 ECS VMware安装mocOS macOS系统安装 交互 腾讯云大模型知识引擎 Deepseek Deepseek-R1 私有化部署 推理模型 Ubuntu共享文件夹 共享目录 Linux共享文件夹 课程设计 安卓 cuda 主从复制 中兴光猫 换光猫 网络桥接 自己换光猫 云原生开发 K8S k8s管理系统 系统开发 binder 车载系统 framework 源码环境 Samba NAS kylin docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 fpga开发 鸿蒙系统 Reactor C++ Linux PID 虚拟现实 区块链 JAVA Java cpu 内存 实时 使用 开发 docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos gitlab dell服务器 go 代理模式 C语言 ipython YOLOv12 Chatbox YOLOv8 NPU Atlas800 A300I pro asi_bench ubuntu20.04 ros ros1 Noetic 20.04 apt 安装 milvus mybatis 微信分享 Image wxopensdk 像素流送api 像素流送UE4 像素流送卡顿 像素流送并发支持 统信UOS 麒麟 bonding 链路聚合 迁移指南 UOS 统信操作系统 ffmpeg 音视频 firewalld 读写锁 ddos stm32项目 llama3 Chatglm 开源大模型 windows日志 unity ping++ tar Portainer搭建 Portainer使用 Portainer使用详解 Portainer详解 Portainer portainer virtualenv ue4 着色器 虚幻 mongodb 目标跟踪 OpenVINO 推理应用 隐藏文件 隐藏目录 管理器 通配符 rag ragflow ragflow 源码启动 zotero WebDAV 同步失败 工业4.0 向日葵 客户端 温湿度数据上传到服务器 Arduino HTTP cudnn anaconda springcloud DNS playbook 剧本 网易邮箱大师 AI写作 OpenManus 博客 指令 命名管道 客户端与服务端通信 html grafana KingBase CLion 远程连接 IDE Doris搭建 docker搭建Doris Doris搭建过程 linux搭建Doris Doris搭建详细步骤 Doris部署 ollama下载加速 CPU 主板 电源 网卡 oceanbase rc.local 开机自启 systemd 远程 执行 sshpass 操作 深度优先 图论 并集查找 换根法 树上倍增 智能手机 Termux WSL2 上安装 Ubuntu express p2p 银河麒麟 kylin v10 麒麟 v10 ESXi 设置代理 实用教程 WebUI DeepSeek V3 安防软件 权限 postman mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 .netcore 模拟实现 micropython esp32 mqtt cocoapods prompt 机柜 1U 2U 思科模拟器 Cisco nuxt3 okhttp 推荐算法 SenseVoice android studio 蓝耘科技 元生代平台工作流 ComfyUI 远程桌面 Qualcomm WoS Python QNN AppBuilder ruoyi AI作画 react next.js 部署 部署next.js Mac内存不够用怎么办 HarmonyOS OpenHarmony 真机调试 ELF加载 outlook 银河麒麟服务器操作系统 系统激活 文心一言 sdkman 编程 r语言 数据可视化 pdf 算力 计算机 程序员 Jellyfin Xinference RAGFlow tcp wsl 版本 TrueLicense 图形渲染 硬件架构 yolov8 W5500 OLED u8g2 TCP服务器 pygame 小游戏 五子棋 其他 Kali 渗透 华为证书 HarmonyOS认证 华为证书考试 docker命令大全 ci/cd 相机 hadoop DocFlow 图像处理 社交电子 数据库系统 ubuntu24 vivado24 React Next.js 开源框架 CosyVoice 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 jupyter hibernate 云耀服务器 minio 免费域名 域名解析 nvidia rustdesk 混合开发 环境安装 JDK 边缘计算 SEO Open WebUI OD机试真题 华为OD机试真题 服务器能耗统计 chfs ubuntu 16.04 上传视频文件到服务器 uniApp本地上传视频并预览 uniapp移动端h5网页 uniapp微信小程序上传视频 uniapp app端视频上传 uniapp uview组件库 漏洞 显示管理器 lightdm gdm kind redhat trea idea 宝塔面板 同步 备份 建站 安全威胁分析 mysql离线安装 ubuntu22.04 mysql8.0 k8s集群资源管理 vscode 1.86 源码 毕业设计 fork wait waitpid exit 大模型入门 大模型教程 鲲鹏 昇腾 npu Cookie 直流充电桩 充电桩 su sudo IPMI frp centos-root /dev/mapper yum clean all df -h / du -sh HP Anyware 智能音箱 智能家居 考研 onlyoffice 在线office 工具 弹性计算 云服务器 裸金属服务器 弹性裸金属服务器 京东云 微信小程序 群晖 openEuler unity3d 命令行 基础入门 devops Helm k8s集群 RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 具身智能 网络穿透 elk 火绒安全 axure 富文本编辑器 Nuxt.js SSH Xterminal uniapp vue ebpf uprobe 繁忙 服务器繁忙 解决办法 替代网站 汇总推荐 AI推理 恒源云 powerbi 信息可视化 python2 ubuntu24.04 css zabbix dba 实习 双系统 致远OA OA服务器 服务器磁盘扩容 ocr c CORS 跨域 大模型面经 职场和发展 大模型学习 chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 AnythingLLM AnythingLLM安装 雨云 NPS 飞书 zip unzip XCC Lenovo dns WebVM IM即时通讯 QQ 企业微信 剪切板对通 HTML FORMAT 网络爬虫 流水线 脚本式流水线 嵌入式系统开发 curl wget saltstack matlab Linux 维护模式 embedding AutoDL MySql 能力提升 面试宝典 技术 IT信息化 oneapi kvm qemu libvirt 大模型微调 话题通信 服务通信 skynet 飞牛NAS 飞牛OS MacBook Pro code-server MQTT mosquitto 消息队列 Zoertier 内网组网 harmonyOS面试题 金仓数据库 2025 征文 数据库平替用金仓 cnn 邮件APP 免费软件 LORA 大语言模型 NLP Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 django sqlite 华为认证 交换机 MS Materials openssl 密码学 业界资讯 模拟退火算法 搜索引擎 EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 ssh远程登录 图形化界面 virtualbox echarts 网页设计 镜像下载 freebsd 信号处理 conda配置 conda镜像源 oracle fusion oracle中间件 Linux24.04 deepin AISphereButler shell java-rabbitmq 硅基流动 ChatBox 国产操作系统 ukui 麒麟kylinos openeuler npm 统信 虚拟机安装 小番茄C盘清理 便捷易用C盘清理工具 小番茄C盘清理的优势尽显何处? 教你深度体验小番茄C盘清理 C盘变红?!不知所措? C盘瘦身后电脑会发生什么变化? Google pay Apple pay 框架搭建 视频编解码 输入法 Java Applet URL操作 服务器建立 Socket编程 网络文件读取 less x64 SIGSEGV SSE xmm0 稳定性 看门狗 remote-ssh TCP WebServer Typore docker run 数据卷挂载 交互模式 make命令 makefile文件 强化学习 单例模式 excel etl RustDesk自建服务器 rustdesk服务器 docker rustdesk 网络攻击模型 lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 web3.py 技能大赛 scikit-learn web VPS pyqt MI300x 孤岛惊魂4 WebRTC 镜像 kotlin iphone 网页服务器 web服务器 Nginx telnet 远程登录 交叉编译 RTMP 应用层 db big data opensearch helm n8n dity make 服务器主板 AI芯片 eNSP 网络规划 VLAN 企业网络 游戏服务器 TrinityCore 魔兽世界 adobe 传统数据库升级 银行 LLMs ROS 自动驾驶 k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm 网络编程 聊天服务器 套接字 Socket 实战案例 webrtc searxng 服务器扩容没有扩容成功 IPMITOOL BMC 硬件管理 Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 opcua opcda KEPServer安装 export import save load 迁移镜像 open webui sqlite3 ruby 线程 cfssl Docker Compose Ubuntu 24.04.1 轻量级服务器 ROS2 拓扑图 asp.net大文件上传 asp.net大文件上传下载 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 VMware Tools vmware tools安装 vmwaretools安装步骤 vmwaretools安装失败 vmware tool安装步骤 vm tools安装步骤 vm tools安装后不能拖 vmware tools安装步骤 文件分享 top Linux top top命令详解 top命令重点 top常用参数 VSCode can 线程池 移动云 视频平台 录像 视频转发 性能测试 视频流 存储 mamba Vmamba 云服务 可信计算技术 智能电视 springsecurity6 oauth2 授权服务器 token sas firewall 崖山数据库 YashanDB visualstudio 银河麒麟操作系统 国产化 Playwright 自动化测试 Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 nfs CH340 串口驱动 CH341 uart 485 服务器部署ai模型 P2P HDLC SSL 域名 rsyslog Anolis nginx安装 linux插件下载 nac 802.1 portal 健康医疗 互联网医院 RAG 检索增强生成 文档解析 大模型垂直应用 GRUB引导 Linux技巧 服务器数据恢复 数据恢复 存储数据恢复 raid5数据恢复 磁盘阵列数据恢复 TRAE 开机黑屏 医疗APP开发 app开发 Trae AI 原生集成开发环境 Trae AI 3d 程序 性能分析 jvm 驱动开发 嵌入式实习 RAID RAID技术 磁盘 模拟器 教程 Ark-TS语言 三级等保 服务器审计日志备份 宝塔面板无法访问 虚拟显示器 Kylin-Server 服务器安装 idm 网络结构图 yaml Ultralytics 可视化 cmos 硬件 EasyConnect bootstrap ecmascript nextjs reactjs ceph nvm 黑客技术 AI代码编辑器 流式接口 URL 软件构建 lb 协议 api banner xfce 联想开天P90Z装win10 kernel 小智 显卡驱动 Web服务器 多线程下载工具 PYTHON 压力测试 OpenSSH 树莓派 VNC 重启 排查 系统重启 日志 原因 gpt-3 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors 网工 7z ssrf 失效的访问控制 金融 seatunnel string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap 计算生物学 生物信息 基因组 SSL证书 数据库架构 数据管理 数据治理 数据编织 数据虚拟化 Web应用服务器 序列化反序列化 jina IPv4 子网掩码 公网IP 私有IP SSH 密钥生成 SSH 公钥 私钥 生成 HarmonyOS NEXT 原生鸿蒙 xrdp 游戏引擎 灵办AI Linux的基础指令 thingsboard 飞牛 composer 单元测试 功能测试 odoo 服务器动作 Server action 雨云服务器 产测工具框架 IMX6ULL 管理框架 环境迁移 springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 IIS .net core Hosting Bundle .NET Framework vs2022 AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 直播推流 本地部署AI大模型 换源 国内源 Debian 服务器安全 网络安全策略 防御服务器攻击 安全威胁和解决方案 程序员博客保护 数据保护 安全最佳实践 毕设 mariadb 相差8小时 UTC 时间 联网 easyconnect 代理 netty 代码托管服务 gitea 微信公众平台 risc-v Carla 智能驾驶 宝塔 lio-sam SLAM wsl2 uv tensorflow trae 状态管理的 UDP 服务器 Arduino RTOS GCC crosstool-ng Invalid Host allowedHosts 多层架构 解耦 ubuntu24.04.1 Wi-Fi 自学笔记 小米 澎湃OS Android c/c++ 串口 多进程 HiCar CarLife+ CarPlay QT RK3588 CentOS Stream CentOS Node-Red 编程工具 流编程 wps DIFY rnn Dell HPE 联想 浪潮 蓝桥杯 云电竞 云电脑 todesk 宕机切换 服务器宕机 安全架构 fast KVM 执法记录仪 智能安全帽 smarteye 工作流 workflow 图片增强 增强数据 llama.cpp SysBench 基准测试 samba 分析解读 服务器时间 .net mvc断点续传 Minecraft IO DOIT 四博智联 信号 notepad arcgis 数学建模 yolov5 MCP server C/S k8s二次开发 集群管理 国产数据库 瀚高数据库 数据迁移 下载安装 Redis Desktop pyautogui iDRAC R720xd ShenTong DBeaver MacMini Mac 迷你主机 mini Apple 宠物 免费学习 宠物领养 宠物平台 开机自启动 矩阵 easyui langchain 小艺 Pura X 服务器管理 配置教程 网站管理 代码规范 XFS xfs文件系统损坏 I_O error 测试用例 磁盘监控 rclone AList webdav fnOS 服务器配置 聊天室 UOS1070e yum源切换 更换国内yum源 bot Docker 浏览器自动化 网站搭建 serv00 FunASR ASR 微信开放平台 微信公众号配置 file server http server web server DeepSeek r1 智慧农业 开源鸿蒙 团队开发 muduo 磁盘清理 cd 目录切换 X11 Xming 跨平台 VR手套 数据手套 动捕手套 动捕数据手套 visual studio rdp 实验 eclipse 热榜 王者荣耀 NLP模型 策略模式 safari 系统 miniapp 调试 debug 断点 网络API请求调试方法 Linux权限 权限命令 特殊权限 apt av1 电视盒子 机顶盒ROM 魔百盒刷机 Docker Desktop 历史版本 下载 毕昇JDK 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 neo4j 数据仓库 数据库开发 办公自动化 自动化生成 pdf教程 xpath定位元素 bat 设备 GPU PCI-Express jetty undertow keepalived grub 版本升级 扩容 sonoma 自动更新 MAC SecureCRT vu大文件秒传跨域报错cors linux 命令 sed 命令 半虚拟化 硬件虚拟化 Hypervisor Erlang OTP gen_server 热代码交换 事务语义 chrome devtools chromedriver vpn MNN Qwen springboot ArcTS 登录 ArcUI GridItem arkUI 大模型部署 SWAT 配置文件 服务管理 网络共享 gaussdb pgpool SSH 服务 SSH Server OpenSSH Server DeepSeek行业应用 Heroku 网站部署 GameFramework HybridCLR Unity编辑器扩展 自动化工具 端口测试 田俊楠 Cursor 用户缓冲区 自动化任务管理 游戏机 hugo Netty 即时通信 NIO 支付 微信支付 开放平台 ArkTs ArkUI 软链接 硬链接 AI agent 鸿蒙开发 移动开发 vasp安装 语法 本地化部署 分布式训练 sequoiaDB 捆绑 链接 谷歌浏览器 youtube google gmail Radius qt项目 qt项目实战 qt教程 cmake 远程过程调用 Windows环境 黑苹果 opengl 国标28181 视频监控 监控接入 语音广播 流程 SIP SDP 银河麒麟高级服务器 外接硬盘 Kylin MobaXterm 文件传输 物联网开发 根服务器 clickhouse 超融合 我的世界服务器搭建 minecraft glm4 EMQX 通信协议 prometheus数据采集 prometheus数据模型 prometheus特点 regedit 开机启动 junit 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 PX4 MAVROS 四旋翼无人机 perl laravel deep learning 北亚数据恢复 oracle数据恢复 需求分析 规格说明书 Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 影刀 #影刀RPA# es6 qt6.3 g726 Isaac Sim 虚拟仿真 vllm 语音识别 Python基础 Python教程 Python技巧 webgl 内网服务器 内网代理 内网通信 ECT转485串口服务器 ECT转Modbus485协议 ECT转Modbus串口服务器 CDN 玩机技巧 软件分享 软件图标 备选 网站 调用 示例 AD域 反向代理 Claude Mermaid 可视化图表 笔灵AI AI工具 内核 查询数据库服务IP地址 SQL Server DenseNet 代理服务器 开源软件 csrutil mac恢复模式进入方法 恢复模式 figma 沙盒 Headless Linux 阿里云ECS 增强现实 沉浸式体验 应用场景 技术实现 案例分析 AR wpf GoogLeNet scapy 极限编程 安装MySQL 移动魔百盒 电视剧收视率分析与可视化平台 USB转串口 Reactor反应堆 虚幻引擎 wsgiref Web 服务器网关接口 flink 远程服务 华为机试 问题解决 USB网络共享 自定义客户端 SAS 论文阅读 网络文件系统 浏览器开发 AI浏览器 deepseek r1 大大通 第三代半导体 碳化硅 回显服务器 UDP的API使用 java-rocketmq 做raid 装系统 armbian u-boot 负载测试 Sealos VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 proxy模式 软件卸载 系统清理 烟花代码 烟花 元旦 h.264 性能调优 安全代理 本地知识库部署 DeepSeek R1 模型 查看显卡进程 fuser ArtTS 项目部署到linux服务器 项目部署过程 ftp 升级 CVE-2024-7347 网络建设与运维 网络搭建 神州数码 神州数码云平台 云平台 web3 copilot Apache Beam 批流统一 案例展示 数据分区 容错机制 vscode1.86 1.86版本 ssh远程连接 whistle open Euler dde LLM Web APP Streamlit vmamba AI员工 免密 公钥 私钥 cpp-httplib tidb GLIBC netlink libnl3 kerberos sudo原理 su切换 navicat sysctl.conf vm.nr_hugepages Linux环境 单一职责原则 信创 信创终端 中科方德 PPI String Cytoscape CytoHubba 搭建个人相关服务器 人工智能生成内容 IMM deekseek 高效I/O HistoryServer Spark YARN jobhistory Attention TCP协议 wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 抗锯齿 word Windows 多路转接 知识图谱 授时服务 北斗授时 openstack Xen Logstash 日志采集 Mac软件 zookeeper 错误代码2603 无网络连接 2603 僵尸世界大战 游戏服务器搭建 iNode Macos ubuntu 18.04 GIS 遥感 WebGIS 服务器部署 本地拉取打包 nosql MVS 海康威视相机 项目部署 ai工具 v10 软件 ldap IDEA hosts deepseak 豆包 KIMI 腾讯元宝 dock 加速 CNNs 图像分类 欧标 OCPP 多个客户端访问 IO多路复用 TCP相关API 内网环境 lua lvm 磁盘挂载 磁盘分区 cursor aarch64 编译安装 HPC 架构与原理 大模型应用 音乐库 嵌入式Linux IPC 网卡的名称修改 eth0 ens33 浪潮信息 AI服务器 EMUI 回退 降级 triton 模型分析 SRS 流媒体 直播 NAT转发 NAT Server Unity Dedicated Server Host Client 无头主机 多端开发 智慧分发 应用生态 鸿蒙OS diskgenius 容器技术 ArkTS 移动端开发 匿名管道 vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 python3.11 seleium dash 正则表达式 glibc MDK 嵌入式开发工具 论文笔记 计算机科学与技术 底层实现 常用命令 文本命令 目录命令 技术共享 sentinel 元服务 应用上架 es LInux 对比 meld DiffMerge 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 端口聚合 windows11 midjourney Qwen2.5-VL 达梦 DM8 WINCC System V共享内存 进程通信 无桌面 EVE-NG shell脚本免交互 expect linux免交互 佛山戴尔服务器维修 佛山三水服务器维修 react native swoole FTP服务器 vite 大屏端 加解密 Yakit yaklang 生活 干货分享 黑客工具 密码爆破 IO模型 软负载 我的世界 我的世界联机 数码 docker desktop image stable diffusion win服务器架设 windows server 端口 查看 ss deployment daemonset statefulset cronjob tailscale derp derper 中转 线性代数 电商平台 ecm bpm C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 g++ g++13 音乐服务器 Navidrome 音流 rpa IMX317 MIPI H265 VCU H3C mcp服务器 client close 状态模式 运维监控 Linux find grep 钉钉 DevOps 软件交付 数据驱动 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 Docker快速入门 VS Code 前后端分离 uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 抓包工具 AD 域管理 mysql安装报错 windows拒绝安装 yashandb Tabs组件 TabContent TabBar TabsController 导航页签栏 滚动导航栏 AzureDataStudio 个人博客 hexo 小智AI服务端 xiaozhi TTS qt5 客户端开发 Spring Security 计算虚拟化 弹性裸金属 ISO镜像作为本地源 xshell termius iterm2 游戏开发 ranger MySQL8.0 阻塞队列 生产者消费者模型 服务器崩坏原因 李心怡 iTerm2 离线部署dify 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 UEFI Legacy MBR GPT U盘安装操作系统 docker部署Python 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 服务网格 istio docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 合成模型 扩散模型 图像生成 HTTP 服务器控制 ESP32 DeepSeek MacOS dns是什么 如何设置电脑dns dns应该如何设置 银河麒麟桌面操作系统 Kylin OS xss 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 企业网络规划 华为eNSP k8s部署 MySQL8.0 高可用集群(1主2从) pppoe radius ftp服务 文件上传 GeneCards OMIM TTD ABAP SVN Server tortoise svn 存储维护 NetApp存储 EMC存储 桌面快捷方式 retry 重试机制 HAProxy pyicu 录音麦克风权限判断检测 录音功能 录音文件mp3播放 小程序实现录音及播放功能 RecorderManager 解决录音报错播放没声音问题 env 变量 ShapeFile GeoJSON Ardupilot 西门子PLC 通讯 fiddler 联机 僵尸毁灭工程 游戏联机 开服 VGG网络 卷积层 池化层 autodl 环境搭建 Maven 零售 deepseek-r1 大模型本地部署 yum换源 Office 内网渗透 靶机渗透 ufw 日志分析 系统取证 initramfs Linux内核 Grub 数字证书 签署证书 VPN wireguard 蓝桥杯C++组 进程程序替换 execl函数 execv函数 execvp函数 execvpe函数 putenv函数 动静态库 多产物 ardunio BLE 进程间通信 粘包问题 蓝牙 nohup后台启动 显示器 Linux Vim ajax macOS solidworks安装 输入系统 工具分享 一切皆文件 mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 lighttpd安装 Ubuntu配置 Windows安装 服务器优化 服务器正确解析请求体 桌面环境 CPU 使用率 系统监控工具 linux 命令 玩游戏 弹性服务器 搜狗输入法 中文输入法 archlinux kde plasma beautifulsoup css3 配置原理 服务器ssl异常解决 Pyppeteer UDP 华为OD 可以组成网络的服务器 接口优化 电脑桌面出现linux图标 电脑桌面linux图标删除不了 电脑桌面Liunx图标删不掉 linux图标删不掉 流量运营 AI Agent 字节智能运维 风扇控制软件 WireGuard 异地组网 iventoy VmWare OpenEuler Unity插件 解决方案 gunicorn js 带外管理 充电桩平台 充电桩开源平台 端口号 开放端口 访问列表 高德地图 鸿蒙接入高德地图 HarmonyOS5.0 大模型推理 zerotier 管道 锁屏不生效 NFC 近场通讯 智能门锁 ollama api ollama外网访问 LVM lvresize 磁盘扩容 pvcreate SystemV qps 高并发 大版本升 升级Ubuntu系统 sublime text3 全文检索 图搜索算法 信息安全 massa sui aptos sei 空间 查错 实时内核 行情服务器 股票交易 速度慢 切换 股票量化接口 股票API接口 终端 电路仿真 multisim 硬件工程师 硬件工程师学习 电路图 电路分析 仪器仪表 umeditor粘贴word ueditor粘贴word ueditor复制word ueditor上传word图片 ueditor导入word ueditor导入pdf ueditor导入ppt openjdk nacos 网络原理 chromium dpi linuxdeployqt 打包部署程序 appimagetool 大模型训练/推理 推理问题 mindie 智能体开发 IP配置 netplan 终端工具 远程工具 llamafactory 微调 Xshell 安全漏洞 内存管理 动态规划 显卡驱动持久化 GPU持久化 用户管理 IPv6 IPv6测试 IPv6测速 IPv6检测 IPv6查询 分子对接 autodock mgltools PDB PubChem 打不开xxx软件 无法检查其是否包含恶意软件 autoware 分布式账本 智能合约 信任链 共识算法 c/s 跨域请求 软件开发 源代码管理 考试 AimRT 脚本 PyQt PySide6 券商 股票交易接口api 类型 特点 金仓数据库概述 金仓数据库的产品优化提案 ubuntu安装 linux入门小白 区块链项目 7-zip servlet 哈希算法 Bug解决 Qt platform OpenCV 程序化交易 量化交易 高频交易 机械臂 免费