阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ubuntu下安装Hadoop详解(单机模式+伪分布模式)

431次阅读
没有评论

共计 9857 个字符,预计需要花费 25 分钟才能阅读完成。

一. 安装须知

  • Hadoop 版本问题:

    Hadoop 有两个主要版本,Hadoop 1.x.y 和 Hadoop 2.x.y 系列,比较老的教材上用的可能是 0.20 这样的版本。Hadoop 2.x 版本在不断更新,本教程均可适用。如果需安装 0.20,1.2.1 这样的版本,本教程也可以作为参考,主要差别在于配置项,配置请参考官网教程或其他教程。自学建议安装最新版本,目前是 hadoop2.7.2

  • 单机模式 && 伪分布模式

    • 单机模式(standalone)
      单机模式是 Hadoop 的 默认模式 。当首次解压 Hadoop 的源码包时,Hadoop 无法了解硬件安装环境,便保守地选择了最小配置。在这种默认模式下 所有 3 个 XML 文件均为空。当配置文件为空时,Hadoop 会完全运行在本地。因为不需要与其他节点交互,单机模式就不使用 HDFS,也不加载任何 Hadoop 的守护进程。** 该模式主要用于开发调试 **MapReduce 程序的应用逻辑。
      • 伪分布模式(Pseudo-Distributed Mode)
        伪分布模式在“单节点集群 ”上运行 Hadoop,其中所有的守护进程都运行在同一台机器上。该模式在单机模式之上增加了代码调试功能, 允许你检查内存使用情况,HDFS 输入输出,以及其他的守护进程交互
    • 全分布模式(Fully Distributed Mode)
      Hadoop 守护进程运行在一个集群上。

    备注:本教程使用 Ubuntu 14.04 64 位 +VMware12.0+Hadoop2.2.0 组合,请自行下载相关文件。

二. 开始安装

1. 前期准备

[1]将下载好的 jdk 压缩包 jdk-7u79-linux-x64.tar 复制到目录 /app/complied 下,并解压至路径 /usr/local/java 下面

hadoop@hadoop1:~$ cd /app  进入 app 目录下
hadoop@hadoop1:~$ /app mkdir complied  创建 complied 目录
root@hadoop1:cd /home/hadoop  进入 jdk 安装包所在目录
root@hadoop1:/home/hadoop# cp jdk-7u79-linux-x64.tar /app/compied 复制 jdk 安装包至目录 /app/complied 下
root@hadoop1:/app/complied# tar -zxvf jdk-7u79-linux-x64.tar 解压安装包
root@hadoop1:/app/complied# mv jdk1.7.0_79 /usr/local/java 移动解压文件

[2]将下载好的 hadoop 压缩包 hadoop-2.2.0-64bit.tar.gz 复制到目录 /app/complied 下,并解压至路径 /usr/local/hadoop 下面

root@hadoop1:~# cd /home/hadoop  进入 hadoop 安装包所在目录
root@hadoop1:/home/hadoop# cp hadoop-2.2.0-64bit.tar.gz /app/compied 复制 hadoop 安装包至目录 /app/complied 下
root@hadoop1:/app/complied# tar -zxvf hadoop-2.2.0-64bit.tar.gz 解压安装包
root@hadoop1:/app/complied# mv hadoop2.2.0 /usr/local/hadoop 移动解压文件

2. 创建 hadoop 用户组和 hadoop 用户

root@hadoop1:~# sudo addgroup hadoop  创建用户组
root@hadoop1:~# sudo adduser --ingroup hadoop hadoop 在 hadoop 用户组中创建用户 hadoop
root@hadoop1:~# sudo adduser hadoop sudo 创建 hadoop 用户

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

由于 Hadoop 用 ssh 通信,先安装 ssh

hadoop@hadoop1:~$ sudo apt-get install openssh-server

ssh 安装完成以后,先启动 SSH 服务

hadoop@hadoop1:~$ sudo /etc/init.d/ssh start 

启动后,可以通过如下命令查看服务是否正确启动:

hadoop@hadoop1:~$ ps -e | grep ssh 

作为一个安全通信协议,使用时需要密码,因此我们要设置成免密码登录,生成私钥和公钥:

hadoop@hadoop1:~$ ssh-keygen -t rsa -P ""

Ubuntu 下安装 Hadoop 详解(单机模式 + 伪分布模式)

第一次操作时会提示输入密码,按 Enter 直接过,这时会在~/home/{username}/.ssh 下生成两个文件:id_rsa 和 id_rsa.pub,前者为私钥,后者为公钥,现在我们将公钥追加到 authorized_keys 中(authorized_keys 用于保存所有允许以当前用户身份登录到 ssh 客户端用户的公钥内容):

hadoop@hadoop1:~$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 

现在可以登入 ssh 确认以后登录时不用输入密码:

hadoop@hadoop1:~$ ssh localhost

登出:

hadoop@hadoop1:~$ exit

4. 安装配置 Java 环境
– 安装 openjdk

hadoop@hadoop1:~$ sudo apt-get install openjdk-8-jdk

安装好 OpenJDK 后,需要找到相应的安装路径,这个路径是用于配置 JAVA_HOME 环境变量的。执行如下命令:

hadoop@hadoop1:~$ dpkg -L openjdk-7-jdk | grep '/bin/javac'

我们需要的路径为 /usr/lib/jvm/java-8-openjdk-amd64
接着配置 JAVA_HOME 环境变量,为方便,我们在 ~/.bashrc 中进行设置

hadoop@hadoop1:~$ vim ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64   #jdk 的安装路径

接着还需要让该环境变量生效,执行如下代码:

source ~/.bashrc    # 使变量设置生效

测试是否配置成功

echo $JAVA_HOME     # 检验变量值
java -version
$JAVA_HOME/bin/java -version  # 与直接执行 java -version 一样

Ubuntu 下安装 Hadoop 详解(单机模式 + 伪分布模式)

  • 安装 Oracle 的 jdk

前面准备部分已经将 jdk 压缩包解压后的文件复制到 /usr/local/java 目录中,按照 openjdk 的环境变量配置方式配置即可。

5. 安装配置 hadoop 环境

hadoop 解压目录为 /usr/local/hadoop, 修改 hadoop 用户对 hadoop 文件夹的读写权限

hadoop@hadoop1:~$ sudo chown 774 hadoop ./hadoop
  • 设定 hadoop-env.sh(Java 安装路径)
    进入./etc/hadoop 目录,打开 hadoop-env.sh,添加以下信息:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 (openjdk 的默认安装路径)
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:/usr/local/hadoop/bin
  • Hadoop 单机配置(非分布式)

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

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

在此我们选择运行 wordcount 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中单词并统计出现的次数,最后输出结果到 output 文件夹中。

hadoop@hadoop1:/usr/local/hadoop$ cd /usr/local/hadoop
hadoop@hadoop1:/usr/local/hadoop$ mkdir ./input
hadoop@hadoop1:/usr/local/hadoop$ cp ./etc/hadoop/*.xml ./input   # 将配置文件作为输入文件
hadoop@hadoop1:/usr/local/hadoop$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount input output 
hadoop@hadoop1:/usr/local/hadoop$ cat ./output/*          # 查看运行结果

解释命令:

bin/hadoop jar(使用 hadoop 运行 jar 包)hadoop-mapreduce-examples..jar(代表版本号)wordcount(要使用的类,后边的是参数)input output‘dfs[a-z.]+’整个就是运行 hadoop 示例程序中的 wordcount,对应的 hdfs 上的输入目录为 input、输出目录为 output。

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

hadoop@hadoop1:/usr/local/hadoop$ rm -r ./output
  • 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)
<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>
  • 修改配置文件 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 配置文件说明

====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 的格式化:

hadoop@hadoop1:/usr/local/hadoop$ ./bin/hdfs namenode -format

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

hadoop@hadoop1:/usr/local/hadoop$ ./sbin/start-dfs.sh

成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。
Ubuntu 下安装 Hadoop 详解(单机模式 + 伪分布模式)

  • 安装 Hadoop 集群
    参考:http://www.linuxidc.com/Linux/2015-02/113486.htm

三. 测试并运行实例

1. 单机模式之 wordcount 实例

hadoop@hadoop1:/usr/local/hadoop$ cd /usr/local/hadoop
hadoop@hadoop1:/usr/local/hadoop$ mkdir ./input
hadoop@hadoop1:/usr/local/hadoop$ cp ./etc/hadoop/*.xml ./input  # 将配置文件作为输入文件
hadoop@hadoop1:/usr/local/hadoop$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount input output 
hadoop@hadoop1:/usr/local/hadoop$ cat ./output/*          # 查看运行结果

2. 伪分布模式之 grep 实例

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

hadoop@hadoop1:/usr/local/hadoop$ ./bin/hadoop fs -mkdir -p /user/hadoop

注意:创建的用户目录不能直接在系统中查看,因为 hadoop 创建的是逻辑上的目录,必须在 hadoop 上才能查看。查看命令如下:

hadoop@hadoop1:/usr/local/hadoop$ ./bin/hadoop fs -ls /

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

hadoop@hadoop1:/usr/local/hadoop$ ./bin/hdfs dfs -mkdir input
hadoop@hadoop1:/usr/local/hadoop$ ./bin/hdfs dfs -put ./etc/hadoop/*.xml input

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

hadoop@hadoop1:/usr/local/hadoop$ ./bin/hadoop fs -ls input

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

hadoop@hadoop1:/usr/local/hadoop$ ./bin/hadoopjar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

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

hadoop@hadoop1:/usr/local/hadoop$ ./bin/hdfs dfs -cat output/*

Ubuntu 下安装 Hadoop 详解(单机模式 + 伪分布模式)

运行结果还可以取回本地

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

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

hadoop@hadoop1:/usr/local/hadoop$ ./bin/hdfs dfs -rm -r output    # 删除 output 文件夹

== 备注:./bin/hdfs dfs = ./bin/hadoop fs==

关闭 Hadoop

hadoop@hadoop1:/usr/local/hadoop$ ./sbin/stop-dfs.sh

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

3. 启动 YARN

新版的 Hadoop 使用了新的 MapReduce 框架(MapReduce V2,也称为 YARN,Yet Another Resource Negotiator)。

YARN 是从 MapReduce 中分离出来的,== 负责资源管理与任务调度 ==。YARN 运行于 MapReduce 之上,提供了 == 高可用性 ==、== 高扩展性 ==,上述通过 ./sbin/start-dfs.sh 启动 Hadoop,仅仅是启动了 MapReduce 环境,我们可以启动 YARN,让 YARN 来负责资源管理与任务调度。

  • 首先修改配置文件 mapred-site.xml,这边需要先进行重命名:
hadoop@hadoop1:/usr/local/hadoop$ mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml
  • 然后再进行编辑,同样使用 gedit 编辑会比较方便些 gedit ./etc/hadoop/mapred-site.xml:
<configuration>
        <property>
             <name>mapreduce.framework.name</name>
             <value>yarn</value>
        </property>
</configuration>
  • 接着修改配置文件 yarn-site.xml:
<configuration>
        <property>
             <name>yarn.nodemanager.aux-services</name>
             <value>mapreduce_shuffle</value>
            </property>
</configuration>
  • 然后就可以启动 YARN 了(需要先执行过 ./sbin/start-dfs.sh):
hadoop@hadoop1:/usr/local/hadoop$ ./sbin/start-yarn.sh      # 启动 YARN
hadoop@hadoop1:/usr/local/hadoop$ ./sbin/mr-jobhistory-daemon.sh start historyserver  # 开启历史服务器,才能在 Web 中查看任务运行情况

Ubuntu 下安装 Hadoop 详解(单机模式 + 伪分布模式)
– 开启后通过 jps 查看,可以看到多了 NodeManager 和 ResourceManager 两个后台进程,如下图所示。

  • 启动 YARN 之后,运行实例的方法还是一样的,仅仅是资源管理方式、任务调度不同。观察日志信息可以发现,不启用 YARN 时,是“mapred.LocalJobRunner”在跑任务,启用 YARN 之后,是“mapred.YARNRunner”在跑任务。启动 YARN 有个好处是可以通过 Web 界面查看任务的运行情况:http://localhost:8088/cluster,如下图所示。

但 YARN 主要是为集群提供更好的资源管理与任务调度,然而这在单机上体现不出价值,反而会使程序跑得稍慢些。因此在单机上是否开启 YARN 就看实际情况了。

备注:不启动 YARN 需重命名 mapred-site.xml

如果不想启动 YARN,务必把配置文件 mapred-site.xml 重命名,改成 mapred-site.xml.template,需要用时改回来就行。否则在该配置文件存在,而未开启 YARN 的情况下,运行程序会提示“Retrying connect to server: 0.0.0.0/0.0.0.0:8032”的错误,这也是为何该配置文件初始文件名为 mapred-site.xml.template。

  • 关闭 YARN 的脚本如下:
hadoop@hadoop1:/usr/local/hadoop$ ./sbin/stop-yarn.sh
hadoop@hadoop1:/usr/local/hadoop$ ./sbin/mr-jobhistory-daemon.sh stop historyserver

四. 总结

花了一整天的时间,终于把这篇博客写完了,对 hadoop 的环境配置和工作工程有了一个初步的认识了,尤其对 hdfs 文件系统了有了初步的感觉,同时 Linux 的使用又熟练一些,在这里感谢网络上的各个小伙伴的帮助,之后会继续跟进 Hadoop 相关的内容。

下面关于 Hadoop 的文章您也可能喜欢,不妨看看:

Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程  http://www.linuxidc.com/Linux/2015-02/113487.htm

CentOS 安装和配置 Hadoop2.2.0  http://www.linuxidc.com/Linux/2014-01/94685.htm

Ubuntu 14.04 LTS 下安装 Hadoop 1.2.1(伪分布模式)http://www.linuxidc.com/Linux/2016-09/135406.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

Hadoop 2.6.0 HA 高可用集群配置详解  http://www.linuxidc.com/Linux/2016-08/134180.htm

Spark 1.5、Hadoop 2.7 集群环境搭建  http://www.linuxidc.com/Linux/2016-09/135067.htm

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-10/136128.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计9857字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7984773
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...