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

Hadoop 2.2.0版本HDFS的HA配置

430次阅读
没有评论

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

注:以下配置描述的是 HDFS 的 QJM 方式的 HA 配置。

1.1 zookeeper 集群配置

这里我使用了三台机器 (在笔记本上使用 vmware 创建了三个虚拟机来实现) 部署 zookeeper 集群,机器 IP 分别是:

l 192.168.111.130(hostname:hd0)

l 192.168.111.131(hostname:hd1)

l 192.168.111.132(hostname:hd2)

首先建立 zookeeper 的数据目录,比如:

mkdir -p /opt/Hadoop/data/zookeeper

同时建立日志存放目录:

mkdir –p /opt/hadoop/logs/zookeeper

然后修改环境变量(比如修改~/.profile),增加如下变量:

export ZOO_HOME=/opt/hadoop/apps/zookeeper-3.4.5

export ZOO_LOG_DIR=/opt/hadoop/logs/zookeeper

在 $ZOO_HOME/conf 下创建配置文件:

touch zoo.cfg

在 zoo.cfg 文件是加入以下配置:

tickTime=2000

dataDir=/opt/hadoop/data/zookeeper

clientPort=31315

initLimit=5

syncLimit=2

server.1=192.168.111.130:31316:31317

server.2=192.168.111.131:31316:31317

server.3=192.168.111.132:31316:31317

在三台服务器的目录 /opt/hadoop/data/zookeeper 下分别创建一个叫 myid 的文件,内容分别是 1,2,3,如:

# 在 192.168.111.130 上执行如下命令

echo 1 >/opt/hadoop/data/zookeeper/myid

# 在 192.168.111.131 上执行如下命令

echo 2 >/opt/hadoop/data/zookeeper/myid

# 在 192.168.111.132 上执行如下命令

echo 3 >/opt/hadoop/data/zookeeper/myid

最后就是分别启动 zookeeper 服务了:

cd $ZOO_HOME

./bin/zkServer.sh start

通过 jps 命令可以检查是否启动成功:

hd@hd0:/opt/hadoop/apps/zookeeper-3.4.5$ jps

1239 QuorumPeerMain

看到 QuorumPeerMain 进程就表示 zookeeper 启动成功了。

测试 zookeeper 集群是否建立成功,在 $ZOO_HOME 目录下执行以下命令即可,如无报错表示集群创建成功:

./bin/zkCli.sh -server localhost:31315

1.2 HDFS2.2.0HA 配置

1.2.1 core-site.xml

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://mycluster</value>

</property>

 

<property>

<name>io.file.buffer.size</name>

<value>131072</value>

</property>

 

<property>

<name>hadoop.tmp.dir</name>

<value>/opt/hadoop/data/hadoop/temp</value>

<description>Abase for other temporarydirectories.</description>

</property>

 

<property>

<name>hadoop.proxyuser.hadoop.hosts</name>

<value>*</value>

</property>

 

<property>

<name>hadoop.proxyuser.hadoop.groups</name>

<value>*</value>

</property>

 

<property>

<name>ha.zookeeper.quorum</name>

<value>192.168.111.130:31315,192.168.111.131:31315,192.168.111.132:31315</value>

</property>

 

<property>

<name>ha.zookeeper.session-timeout.ms</name>

<value>1000</value>

<description>ms</description>

</property>

</configuration>

1.2.2 hdfs-site.xml

<?xml version=”1.0″encoding=”UTF-8″?>

<?xml-stylesheet type=”text/xsl”href=”https://www.linuxidc.com/Linux/2014-02/configuration.xsl”?>

<configuration>

<property>

<name>dfs.namenode.name.dir</name>

<value>/opt/hadoop/data/hadoop/dfs/name</value>

</property>

 

<property>

<name>dfs.datanode.data.dir</name>

<value>/opt/hadoop/data/hadoop/dfs/data</value>

</property>

 

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

 

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

 

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

 

<property>

<name>dfs.permissions.enabled</name>

<value>false</value>

</property>

 

<property>

<name>dfs.nameservices</name>

<value>mycluster</value>

<description>Logical name for this newnameservice</description>

</property>

 

<property>

<name>dfs.ha.namenodes.mycluster</name>

<value>nn1,nn2</value>

<description>Unique identifiers for each NameNode in thenameservice</description>

</property>

 

<property>

<name>dfs.namenode.rpc-address.mycluster.nn1</name>

<value>192.168.111.130:8020</value>

</property>

<property>

<name>dfs.namenode.rpc-address.mycluster.nn2</name>

<value>192.168.111.132:8020</value>

</property>

 

<property>

<name>dfs.namenode.servicerpc-address.mycluster.nn1</name>

<value>192.168.111.130:53310</value>

</property>

<property>

<name>dfs.namenode.servicerpc-address.mycluster.nn2</name>

<value>192.168.111.132:53310</value>

</property>

 

<property>

<name>dfs.namenode.http-address.mycluster.nn1</name>

<value>192.168.111.130:50070</value>

</property>

<property>

<name>dfs.namenode.http-address.mycluster.nn2</name>

<value>192.168.111.132:50070</value>

</property>

 

<property>

<name>dfs.namenode.shared.edits.dir</name>

<value>qjournal://192.168.111.130:8485;192.168.111.131:8485;192.168.111.132:8485/mycluster</value>

</property>

 

<property>

<name>dfs.client.failover.proxy.provider.mycluster</name>

<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

</property>

 

<property>

<name>dfs.ha.fencing.methods</name>

<value>sshfence</value>

</property>

 

<property>

<name>dfs.ha.fencing.ssh.private-key-files</name>

<value>/home/hadoop/.ssh/id_rsa_nn1</value>

</property>

 

<property>

<name>dfs.ha.fencing.ssh.connect-timeout</name>

<value>30000</value>

</property>

 

<property>

<name>dfs.journalnode.edits.dir</name>

<value>/opt/hadoop/data/hadoop/journaldata</value>

</property>

 

<property>

<name>dfs.ha.automatic-failover.enabled</name>

<value>true</value>

</property>

 

<property>

<name>ha.failover-controller.cli-check.rpc-timeout.ms</name>

<value>60000</value>

</property>

 

<property>

<name>ipc.client.connect.timeout</name>

<value>60000</value>

</property>

 

<property>

<name>dfs.image.transfer.bandwidthPerSec</name>

<value>4194304</value>

</property>

</configuration>

在上面的配置中有一个地方要特别说明一下,dfs.ha.fencing.ssh.private-key-files 这里指向的是一个本地文件。上面我们是配置了两个 namenode 来实现 HDFS 的 HA 的,分别是 nn1 和 nn2,在 nn2 的~/.ssh/ 目录下需要将 nn1 的~/.ssh/ 目录下的 id_rsa 文件 copy 过来,并且应该重命名成如 id_rsa_nn1 这样的文件名,以免覆盖了本地的文件。

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.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 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

1.2.3 yarn-site.xml

<?xml version=”1.0″?>

<configuration>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

 

<property>

<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

<value>org.apache.Hadoop.mapred.ShuffleHandler</value>

</property>

 

<property>

<name>yarn.resourcemanager.address</name>

<value>192.168.111.130:8032</value>

</property>

 

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>192.168.111.130:8030</value>

</property>

 

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>192.168.111.130:8031</value>

</property>

 

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>192.168.111.130:8033</value>

</property>

 

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>192.168.111.130:8088</value>

</property>

</configuration>

1.3 installphase

安装环境:Ubuntu 12.04.3 LTS

硬件环境:三台服务器,两台 namenode,一台 datanode,分别如下:

ü 192.168.111.130,主 namenode,zookeeper,journalnode,zkfc

ü 192.168.111.131,datanode,zookeeper,journalnode

ü 192.168.111.132,备 namenode,zookeeper,journalnode,zkfc

 

0、首先把各个 zookeeper 起来,如果 zookeeper 集群还没有启动的话。

./bin/zkServer.sh start

 

1、然后在某一个 namenode 节点执行如下命令,创建命名空间

./bin/hdfs zkfc -formatZK

 

2、在各个节点用如下命令启日志程序

./sbin/hadoop-daemon.sh start journalnode

 

3、在主 namenode 节点用./bin/hadoopnamenode -format 格式化 namenode 和 journalnode 目录

./bin/hadoop namenode -format mycluster

 

4、在主 namenode 节点启动./sbin/hadoop-daemon.shstart namenode 进程

./sbin/hadoop-daemon.sh start namenode

 

5、在备节点执行第一行命令,这个是把备 namenode 节点的目录格式化并把元数据从主 namenode 节点 copy 过来,并且这个命令不会把 journalnode 目录再格式化了!然后用第二个命令启动备 namenode 进程!

./bin/hdfs namenode –bootstrapStandby

./sbin/hadoop-daemon.sh start namenode

 

6、在两个 namenode 节点都执行以下命令

./sbin/hadoop-daemon.sh start zkfc

 

7、在所有 datanode 节点都执行以下命令启动 datanode

./sbin/hadoop-daemon.sh start datanode

 

1.4 startupphase

下次启动的时候,就直接执行以下命令就可以全部启动所有进程和服务了:

./sbin/start-dfs.sh

 

然后访问以下两个地址查看启动的两个 namenode 的状态:

http://192.168.111.130:50070/dfshealth.jsp

http://192.168.111.132:50070/dfshealth.jsp

1.5 stop phase

停止所有 HDFS 相关的进程服务,执行以下命令:

./sbin/stop-dfs.sh

 

1.6 测试 HDFS 的 HA 功能

在任意一台 namenode 机器上通过 jps 命令查找到 namenode 的进程号,然后通过 kill - 9 的方式杀掉进程,观察另一个 namenode 节点是否会从状态 standby 变成 active 状态。

hd@hd0:/opt/hadoop/apps/hadoop$ jps

1686 JournalNode

1239 QuorumPeerMain

1380 NameNode

2365 Jps

1863 DFSZKFailoverController

hd@hd0:/opt/hadoop/apps/hadoop$ kill -9 1380

然后观察原来是 standby 状态的 namenode 机器的 zkfc 日志,若最后一行出现如下日志,则表示切换成功:

2013-12-31 16:14:41,114 INFOorg.apache.hadoop.ha.ZKFailoverController: Successfully transitioned NameNodeat hd0/192.168.111.130:53310 to active state

这时再通过命令启动被 kill 掉的 namenode 进程

./sbin/hadoop-daemon.sh start namenode

对应进程的 zkfc 最后一行日志如下:

2013-12-31 16:14:55,683 INFOorg.apache.hadoop.ha.ZKFailoverController: Successfully transitioned NameNodeat hd2/192.168.111.132:53310 to standby state

 

可以在两台 namenode 机器之间来回 kill 掉 namenode 进程以检查 HDFS 的 HA 配置!

相关阅读:

将本地文件拷到 HDFS 中 http://www.linuxidc.com/Linux/2013-05/83866.htm

从 HDFS 下载文件到本地 http://www.linuxidc.com/Linux/2012-11/74214.htm

将本地文件上传至 HDFS http://www.linuxidc.com/Linux/2012-11/74213.htm

HDFS 基本文件常用命令 http://www.linuxidc.com/Linux/2013-09/89658.htm

Hadoop 中 HDFS 和 MapReduce 节点基本简介 http://www.linuxidc.com/Linux/2013-09/89653.htm

《Hadoop 实战》中文版 + 英文文字版 + 源码【PDF】http://www.linuxidc.com/Linux/2012-10/71901.htm

Hadoop: The Definitive Guide【PDF 版】http://www.linuxidc.com/Linux/2012-01/51182.htm

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

注:以下配置描述的是 HDFS 的 QJM 方式的 HA 配置。

1.1 zookeeper 集群配置

这里我使用了三台机器 (在笔记本上使用 vmware 创建了三个虚拟机来实现) 部署 zookeeper 集群,机器 IP 分别是:

l 192.168.111.130(hostname:hd0)

l 192.168.111.131(hostname:hd1)

l 192.168.111.132(hostname:hd2)

首先建立 zookeeper 的数据目录,比如:

mkdir -p /opt/Hadoop/data/zookeeper

同时建立日志存放目录:

mkdir –p /opt/hadoop/logs/zookeeper

然后修改环境变量(比如修改~/.profile),增加如下变量:

export ZOO_HOME=/opt/hadoop/apps/zookeeper-3.4.5

export ZOO_LOG_DIR=/opt/hadoop/logs/zookeeper

在 $ZOO_HOME/conf 下创建配置文件:

touch zoo.cfg

在 zoo.cfg 文件是加入以下配置:

tickTime=2000

dataDir=/opt/hadoop/data/zookeeper

clientPort=31315

initLimit=5

syncLimit=2

server.1=192.168.111.130:31316:31317

server.2=192.168.111.131:31316:31317

server.3=192.168.111.132:31316:31317

在三台服务器的目录 /opt/hadoop/data/zookeeper 下分别创建一个叫 myid 的文件,内容分别是 1,2,3,如:

# 在 192.168.111.130 上执行如下命令

echo 1 >/opt/hadoop/data/zookeeper/myid

# 在 192.168.111.131 上执行如下命令

echo 2 >/opt/hadoop/data/zookeeper/myid

# 在 192.168.111.132 上执行如下命令

echo 3 >/opt/hadoop/data/zookeeper/myid

最后就是分别启动 zookeeper 服务了:

cd $ZOO_HOME

./bin/zkServer.sh start

通过 jps 命令可以检查是否启动成功:

hd@hd0:/opt/hadoop/apps/zookeeper-3.4.5$ jps

1239 QuorumPeerMain

看到 QuorumPeerMain 进程就表示 zookeeper 启动成功了。

测试 zookeeper 集群是否建立成功,在 $ZOO_HOME 目录下执行以下命令即可,如无报错表示集群创建成功:

./bin/zkCli.sh -server localhost:31315

1.2 HDFS2.2.0HA 配置

1.2.1 core-site.xml

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://mycluster</value>

</property>

 

<property>

<name>io.file.buffer.size</name>

<value>131072</value>

</property>

 

<property>

<name>hadoop.tmp.dir</name>

<value>/opt/hadoop/data/hadoop/temp</value>

<description>Abase for other temporarydirectories.</description>

</property>

 

<property>

<name>hadoop.proxyuser.hadoop.hosts</name>

<value>*</value>

</property>

 

<property>

<name>hadoop.proxyuser.hadoop.groups</name>

<value>*</value>

</property>

 

<property>

<name>ha.zookeeper.quorum</name>

<value>192.168.111.130:31315,192.168.111.131:31315,192.168.111.132:31315</value>

</property>

 

<property>

<name>ha.zookeeper.session-timeout.ms</name>

<value>1000</value>

<description>ms</description>

</property>

</configuration>

1.2.2 hdfs-site.xml

<?xml version=”1.0″encoding=”UTF-8″?>

<?xml-stylesheet type=”text/xsl”href=”https://www.linuxidc.com/Linux/2014-02/configuration.xsl”?>

<configuration>

<property>

<name>dfs.namenode.name.dir</name>

<value>/opt/hadoop/data/hadoop/dfs/name</value>

</property>

 

<property>

<name>dfs.datanode.data.dir</name>

<value>/opt/hadoop/data/hadoop/dfs/data</value>

</property>

 

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

 

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

 

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

 

<property>

<name>dfs.permissions.enabled</name>

<value>false</value>

</property>

 

<property>

<name>dfs.nameservices</name>

<value>mycluster</value>

<description>Logical name for this newnameservice</description>

</property>

 

<property>

<name>dfs.ha.namenodes.mycluster</name>

<value>nn1,nn2</value>

<description>Unique identifiers for each NameNode in thenameservice</description>

</property>

 

<property>

<name>dfs.namenode.rpc-address.mycluster.nn1</name>

<value>192.168.111.130:8020</value>

</property>

<property>

<name>dfs.namenode.rpc-address.mycluster.nn2</name>

<value>192.168.111.132:8020</value>

</property>

 

<property>

<name>dfs.namenode.servicerpc-address.mycluster.nn1</name>

<value>192.168.111.130:53310</value>

</property>

<property>

<name>dfs.namenode.servicerpc-address.mycluster.nn2</name>

<value>192.168.111.132:53310</value>

</property>

 

<property>

<name>dfs.namenode.http-address.mycluster.nn1</name>

<value>192.168.111.130:50070</value>

</property>

<property>

<name>dfs.namenode.http-address.mycluster.nn2</name>

<value>192.168.111.132:50070</value>

</property>

 

<property>

<name>dfs.namenode.shared.edits.dir</name>

<value>qjournal://192.168.111.130:8485;192.168.111.131:8485;192.168.111.132:8485/mycluster</value>

</property>

 

<property>

<name>dfs.client.failover.proxy.provider.mycluster</name>

<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

</property>

 

<property>

<name>dfs.ha.fencing.methods</name>

<value>sshfence</value>

</property>

 

<property>

<name>dfs.ha.fencing.ssh.private-key-files</name>

<value>/home/hadoop/.ssh/id_rsa_nn1</value>

</property>

 

<property>

<name>dfs.ha.fencing.ssh.connect-timeout</name>

<value>30000</value>

</property>

 

<property>

<name>dfs.journalnode.edits.dir</name>

<value>/opt/hadoop/data/hadoop/journaldata</value>

</property>

 

<property>

<name>dfs.ha.automatic-failover.enabled</name>

<value>true</value>

</property>

 

<property>

<name>ha.failover-controller.cli-check.rpc-timeout.ms</name>

<value>60000</value>

</property>

 

<property>

<name>ipc.client.connect.timeout</name>

<value>60000</value>

</property>

 

<property>

<name>dfs.image.transfer.bandwidthPerSec</name>

<value>4194304</value>

</property>

</configuration>

在上面的配置中有一个地方要特别说明一下,dfs.ha.fencing.ssh.private-key-files 这里指向的是一个本地文件。上面我们是配置了两个 namenode 来实现 HDFS 的 HA 的,分别是 nn1 和 nn2,在 nn2 的~/.ssh/ 目录下需要将 nn1 的~/.ssh/ 目录下的 id_rsa 文件 copy 过来,并且应该重命名成如 id_rsa_nn1 这样的文件名,以免覆盖了本地的文件。

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.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 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

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

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7985933
文章搜索
热门文章
星哥带你玩飞牛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-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新 SSL 证书系统、申请 godaddy 的 APIKEY 公司之前花钱购买的 ssl 证书快...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

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

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...

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

一言一句话
-「
手气不错
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
你的云服务器到底有多强?宝塔跑分告诉你

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

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...