`

windows配置hadoop-1的伪分布式环境(续)

阅读更多

在前一篇文章中,介绍了一写常见问题的解决方法。

 

但是,当我重装系统,再次按照前面一篇文章( http://winseclone.iteye.com/blog/1734737 ) 安装cygwin和hadoop-1时,发现伪分布式环境使用mapred时,总是报错。(忘了,但是好像当时没有遇到过这种情况。就当是安装win8送给自己的礼物吧!)。

怀疑了很多东西,配置有问题,重新自定hadoop.tmp.dir,把hadoop-1.1.0换成hadoop-1.0.0等等。

 

错误日志如下:

 

$ hhadoop fs -rmr /test/output ; hhadoop jar hadoop-examples-1.0.0.jar wordcount /test/input /test/output
Deleted hdfs://WINSE:9000/test/output
13/03/23 22:46:07 INFO input.FileInputFormat: Total input paths to process : 1
13/03/23 22:46:08 INFO mapred.JobClient: Running job: job_201303232144_0002
13/03/23 22:46:09 INFO mapred.JobClient:  map 0% reduce 0%
13/03/23 22:46:16 INFO mapred.JobClient: Task Id : attempt_201303232144_0002_m_000002_0, Status : FAILED
java.lang.Throwable: Child Error
        at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:272)
Caused by: java.io.IOException: Task process exit with nonzero status of -1.
        at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:259)

13/03/23 22:46:16 WARN mapred.JobClient: Error reading task outputhttp://WINSE:50060/tasklog?plaintext=true&attemptid=attempt_201303232144_0002_m_000002_0&filter=stdout
13/03/23 22:46:16 WARN mapred.JobClient: Error reading task outputhttp://WINSE:50060/tasklog?plaintext=true&attemptid=attempt_201303232144_0002_m_000002_0&filter=stderr
13/03/23 22:46:22 INFO mapred.JobClient: Task Id : attempt_201303232144_0002_m_000002_1, Status : FAILED

 

经过修改原来,不断的修改,加入sysout打印,算是最终找出程序出现错误的地方!

 

org.apache.hadoop.mapred.DefaultTaskController.java #launchTask
org.apache.hadoop.mapred.JvmManager.java #runChild
org.apache.hadoop.mapred.TaskRunner.java #launchJvmAndWait

 

org.apache.hadoop.fs.FileUtil.java #checkReturnValue
org.apache.hadoop.fs.RawLocalFileSystem.java  #setPermission  #mkdirs

 

发现在org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(Path)方法中,建立文件的路径方法检查attempt_201303232144_0002_m_000001_0是否为文件夹时会失败!

 

而在cygwin中查看文件属性:

 

Winseliu@WINSE ~/hadoop/logs/userlogs/job_201303232144_0002
$ ll
总用量 9
lrwxrwxrwx 1 Winseliu None  89 3月  23 22:46 attempt_201303232144_0002_m_000001_0 -> /cluster/mapred/local/userlogs/job_201303232144_0002/attempt_201303232144_0002_m_000001_0
lrwxrwxrwx 1 Winseliu None  89 3月  23 22:46 attempt_201303232144_0002_m_000001_1 -> /cluster/mapred/local/userlogs/job_201303232144_0002/attempt_201303232144_0002_m_000001_1
lrwxrwxrwx 1 Winseliu None  89 3月  23 22:46 attempt_201303232144_0002_m_000001_2 -> /cluster/mapred/local/userlogs/job_201303232144_0002/attempt_201303232144_0002_m_000001_2
lrwxrwxrwx 1 Winseliu None  89 3月  23 22:46 attempt_201303232144_0002_m_000001_3 -> /cluster/mapred/local/userlogs/job_201303232144_0002/attempt_201303232144_0002_m_000001_3
lrwxrwxrwx 1 Winseliu None  89 3月  23 22:46 attempt_201303232144_0002_m_000002_0 -> /cluster/mapred/local/userlogs/job_201303232144_0002/attempt_201303232144_0002_m_000002_0
lrwxrwxrwx 1 Winseliu None  89 3月  23 22:46 attempt_201303232144_0002_m_000002_1 -> /cluster/mapred/local/userlogs/job_201303232144_0002/attempt_201303232144_0002_m_000002_1
lrwxrwxrwx 1 Winseliu None  89 3月  23 22:46 attempt_201303232144_0002_m_000002_2 -> /cluster/mapred/local/userlogs/job_201303232144_0002/attempt_201303232144_0002_m_000002_2
lrwxrwxrwx 1 Winseliu None  89 3月  23 22:46 attempt_201303232144_0002_m_000002_3 -> /cluster/mapred/local/userlogs/job_201303232144_0002/attempt_201303232144_0002_m_000002_3
-rwxr-xr-x 1 Winseliu None 404 3月  23 22:46 job-acls.xml

 

对于linux来说,这些就是引用到另一个文件夹,它本身应该也是文件夹!但是window的jdk不认识这些东西!

 

  public boolean mkdirs(Path f) throws IOException {
    Path parent = f.getParent();
    File p2f = pathToFile(f);
    return (parent == null || mkdirs(parent)) &&
      (p2f.mkdir() || p2f.isDirectory());
  }

 

所以在判断p2f.isDirectory()返回false,然后会抛出IOException,最终以-1的状态退出Map Child的程序!

 

其使用org.apache.hadoop.mapred.TaskRunner.prepareLogFiles(TaskAttemptID, boolean)方法来指定输出日志的位置。在最终执行的会在shell命令中把sysout和syserr输出到日志文件中( $COMMAND  1>>$stdout  2>>$stderr ,本文最后有贴运行时的cmd)。

 

而userlogs的父目录是使用hadoop.log.dir系统属性来进行配置的!

 

mapred.DefaultTaskController.launchTask()

|--mapred.TaskLog.buildCommandLine()

 

临时解决方法:

把hadoop.log.dir定位到真正mapred日志的目录( mapred.local.dir : ${hadoop.tmp.dir}/mapred/local )!

 

export HADOOP_LOG_DIR=/cluster/mapred/local

 

最终的效果,运行的程序会把日志输出到attempt目录下的stdout,stderr文件中。

 

Winseliu@WINSE /cluster/mapred/local/userlogs/job_201303240035_0001/attempt_201303240035_0001_m_000000_0
$ ll
总用量 6
lrwxrwxrwx  1 Winseliu None   89 3月  24 00:36 attempt_201303240035_0001_m_000000_0 -> /cluster/mapred/local/userlogs/job_201303240035_0001/attempt_201303240035_0001_m_000000_0
----------+ 1 Winseliu None  136 3月  24 00:36 log.index
-rw-r--r--+ 1 Winseliu None    0 3月  24 00:36 stderr
-rw-r--r--+ 1 Winseliu None    0 3月  24 00:36 stdout
----------+ 1 Winseliu None 1238 3月  24 00:36 syslog

 

上面的软链接是调用org.apache.hadoop.mapred.TaskLog.createTaskAttemptLogDir()生成的,本文最后有贴运行时ln命令及参数。

 

ln当linkname是一个已经存在文件夹时,会在linkname的文件夹下建立一个以targetname作为名称的链接。 

 

Winseliu@WINSE ~/tt
$ mkdir f1

Winseliu@WINSE ~/tt
$ ln -s f1 f1

Winseliu@WINSE ~/tt
$ ls -Rl
.:
总用量 0
drwxr-xr-x+ 1 Winseliu None 0 3月  24 13:56 f1

./f1:
总用量 1
lrwxrwxrwx 1 Winseliu None 2 3月  24 13:56 f1 -> f1

  

把windows的/cluster映射到cygwin(linux)的/cluster:

 

Winseliu@WINSE ~/hadoop
$ ll /cygdrive/c | grep cluster
drwxr-xr-x+ 1 Winseliu         None                      0 3月  24 00:08 cluster

Winseliu@WINSE ~/hadoop
$ ll / | grep cluster
lrwxrwxrwx   1 Winseliu None     19 3月  23 09:39 cluster -> /cygdrive/c/cluster

 

但是,运行wordcount的例子时,还是不正常!查看tasktracker的日志时,发现有String装成Integer的NumberFormatException异常!

 

修改org.apache.hadoop.mapred.JvmManager.JvmManagerForType.JvmRunner.kill()方法。添加pidStr为空字符串的检查!

 

String pidStr = jvmIdToPid.get(jvmId);
if (pidStr != null && !pidStr.isEmpty()) {

 

然后,终于看到Finish咯!在/test/output/part-r-00000中也看到了结果。

 

 

其他一些简化处理,即配置文件:

 

alias startCluster="~/hadoop/bin/start-all.sh"
alias stopCluster="~/hadoop/bin/stop-all.sh; ~/hadoop/bin/stop-all.sh"

alias hhadoop="~/hadoop/bin/hadoop"

 

Winseliu@WINSE ~
$ ll | grep hadoop
lrwxrwxrwx  1 Winseliu None    12 3月  23 10:44 hadoop -> hadoop-1.0.0
drwx------+ 1 Winseliu None     0 3月  24 00:06 hadoop-1.0.0

 

<!-- core-site.xml -->

<configuration>

<property>
<name>fs.default.name</name>
<value>hdfs://WINSE:9000</value>
</property>

<property>
<name>hadoop.tmp.dir</name>
<value>/cluster</value>
</property>

</configuration>

<!-- hdfs-site.xml -->

<configuration>

<property>
<name>dfs.replication</name>
<value>1</value>
</property>

<property>
  <name>dfs.permissions</name>
  <value>false</value>
</property>

<property>
  <name>dfs.permissions.supergroup</name>
  <value>None</value>
</property>

<property>
<name>dfs.safemode.extension</name>
<value>1000</value>
</property>

</configuration>

<!-- mapred-site.xml -->

<configuration>

<property>
<name>mapred.job.tracker</name>
<value>WINSE:9001</value>
</property>

</configuration>

 

关于查看启动的进程,看可以通过任务管理器来查看:


还可以看看pid的修改时间,来确认服务的启动:

我是经常通过50070和50030来查看的~~ 看到50030的Nodes为1时,就说明集群启动正常了。


 执行时的日志:

 

cmd : ln -s /cluster/mapred/local\userlogs\job_201303241340_0001\attempt_201303241340_0001_m_000000_0 C:\cluster\mapred\local\userlogs\job_201303241340_0001\attempt_201303241340_0001_m_000000_0
 
cmdLine : export HADOOP_CLIENT_OPTS="-Dhadoop.tasklog.taskid=attempt_201303241340_0001_m_000000_0 -Dhadoop.tasklog.iscleanup=false -Dhadoop.tasklog.totalLogFileSize=0"
export SHELL="/bin/bash"
export HADOOP_WORK_DIR="\cluster\mapred\local\taskTracker\Winseliu\jobcache\job_201303241340_0001\attempt_201303241340_0001_m_000000_0\work"
export HOME="/homes/"
export LOGNAME="Winseliu"
export HADOOP_TOKEN_FILE_LOCATION="/cluster/mapred/local/taskTracker/Winseliu/jobcache/job_201303241340_0001/jobToken"
export HADOOP_ROOT_LOGGER="INFO,TLA"
export LD_LIBRARY_PATH="\cluster\mapred\local\taskTracker\Winseliu\jobcache\job_201303241340_0001\attempt_201303241340_0001_m_000000_0\work"
export USER="Winseliu"

exec '/cygdrive/c/Java/jdk1.7.0_02/jre/bin/java' '-Djava.library.path=/home/Winseliu/hadoop-1.0.0/lib/native/Windows_NT_unknown-x86-32;\cluster\mapred\local\
taskTracker\Winseliu\jobcache\job_201303241340_0001\attempt_201303241340_0001_m_000000_0\work' '-Xmx200m' '-Djava.net.preferIPv4Stack=true' '-Dhadoop.metrics
.log.level=WARN' '-Djava.io.tmpdir=/cluster/mapred/local/taskTracker/Winseliu/jobcache/job_201303241340_0001/attempt_201303241340_0001_m_000000_0/work/tmp' '
-classpath' 'C:\cygwin\home\Winseliu\conf;C:\Java\jdk1.7.0_02\lib\tools.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\;C:\cygwin\home\Winseliu\hadoop-1.0.0\hadoop
-core-1.0.0.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\asm-3.2.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\aspectjrt-1.6.5.jar;C:\cygwin\home\Winseliu\had
oop-1.0.0\lib\aspectjtools-1.6.5.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\commons-beanutils-1.7.0.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\commons-be
anutils-core-1.8.0.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\commons-cli-1.2.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\commons-codec-1.4.jar;C:\cygwin\
home\Winseliu\hadoop-1.0.0\lib\commons-collections-3.2.1.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\commons-configuration-1.6.jar;C:\cygwin\home\Winseliu\h
adoop-1.0.0\lib\commons-daemon-1.0.1.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\commons-digester-1.8.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\commons-e
l-1.0.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\commons-httpclient-3.0.1.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\commons-lang-2.4.jar;C:\cygwin\home\
Winseliu\hadoop-1.0.0\lib\commons-logging-1.1.1.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\commons-logging-api-1.0.4.jar;C:\cygwin\home\Winseliu\hadoop-1.0
.0\lib\commons-math-2.1.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\commons-net-1.4.1.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\core-3.1.1.jar;C:\cygwin\
home\Winseliu\hadoop-1.0.0\lib\hadoop-capacity-scheduler-1.0.0.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\hadoop-fairscheduler-1.0.0.jar;C:\cygwin\home\Win
seliu\hadoop-1.0.0\lib\hadoop-thriftfs-1.0.0.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\hsqldb-1.8.0.10.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\jackso
n-core-asl-1.0.1.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\jackson-mapper-asl-1.0.1.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\jasper-compiler-5.5.12.ja
r;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\jasper-runtime-5.5.12.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\jdeb-0.8.jar;C:\cygwin\home\Winseliu\hadoop-1.0
.0\lib\jersey-core-1.8.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\jersey-json-1.8.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\jersey-server-1.8.jar;C:\cyg
win\home\Winseliu\hadoop-1.0.0\lib\jets3t-0.6.1.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\jetty-6.1.26.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\jetty-
util-6.1.26.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\jsch-0.1.42.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\junit-4.5.jar;C:\cygwin\home\Winseliu\hadoo
p-1.0.0\lib\kfs-0.2.2.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\log4j-1.2.15.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\mockito-all-1.8.5.jar;C:\cygwin\
home\Winseliu\hadoop-1.0.0\lib\mysql-connector-java-5.1.10-bin.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\ojdbc6.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\l
ib\oro-2.0.8.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\servlet-api-2.5-20081211.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\slf4j-api-1.4.3.jar;C:\cygwin
\home\Winseliu\hadoop-1.0.0\lib\slf4j-log4j12-1.4.3.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\sqoop-1.4.1-incubating.jar;C:\cygwin\home\Winseliu\hadoop-1.
0.0\lib\xmlenc-0.52.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\jsp-2.1\jsp-2.1.jar;C:\cygwin\home\Winseliu\hadoop-1.0.0\lib\jsp-2.1\jsp-api-2.1.jar;\cluste
r\mapred\local\taskTracker\Winseliu\jobcache\job_201303241340_0001\jars\classes;\cluster\mapred\local\taskTracker\Winseliu\jobcache\job_201303241340_0001\jar
s;\cluster\mapred\local\taskTracker\Winseliu\jobcache\job_201303241340_0001\attempt_201303241340_0001_m_000000_0\work' '-Dhadoop.log.dir=C:\cluster\mapred\lo
cal' '-Dhadoop.root.logger=INFO,TLA' '-Dhadoop.tasklog.taskid=attempt_201303241340_0001_m_000000_0' '-Dhadoop.tasklog.iscleanup=false' '-Dhadoop.tasklog.tota
lLogFileSize=0' 'org.apache.hadoop.mapred.Child' '127.0.0.1' '49203' 'attempt_201303241340_0001_m_000000_0' 'C:\cluster\mapred\local\userlogs\job_20130324134
0_0001\attempt_201303241340_0001_m_000000_0' '-1682417583'  < /dev/null  1>> /cygdrive/c/cluster/mapred/local/userlogs/job_201303241340_0001/attempt_20130324
1340_0001_m_000000_0/stdout 2>> /cygdrive/c/cluster/mapred/local/userlogs/job_201303241340_0001/attempt_201303241340_0001_m_000000_0/stderr

 

 linux的版本的日志目录结构:



 

 

 

  • 大小: 56.6 KB
  • 大小: 53.9 KB
  • 大小: 26.6 KB
分享到:
评论

相关推荐

    windows配置hadoop-1.1.0的伪分布式环境

    在Windows系统上配置Hadoop 1.1.0的伪分布式环境是一项技术性较强的任务,涉及到多个步骤和关键配置文件的设置。以下将详细介绍这个过程,以及与之相关的知识点。 首先,我们需要理解Hadoop的基本概念。Hadoop是...

    从零起步搭建Hadoop单机和伪分布式开发环境图文教程.

    5. 配置Hadoop单机模式:修改Hadoop配置文件,让Hadoop运行在单机模式。 6. 测试Wordcount示例:运行Hadoop自带的Wordcount示例,验证环境搭建是否成功。 搭建伪分布式开发环境的步骤大致与单机模式相似,但是需要...

    Windows7下eclipse调试Fedora虚拟机的hadoop+hbase伪分布式

    本文将详细介绍如何在有限的资源条件下,利用Windows7作为主机,通过VMware虚拟化技术运行Fedora操作系统,并在此环境中搭建Hadoop和HBase的伪分布式环境,最后在Windows下的Eclipse中配置相应的开发环境以进行远程...

    Hadoop单节点伪分布式搭建中文版

    【Hadoop 单节点伪分布式搭建】是一种适合学习和测试Hadoop环境的简易方式,无需配置复杂的多节点集群。在单节点伪分布式模式下,所有Hadoop服务都在同一个节点上以独立Java进程的方式运行,模拟分布式环境的行为,...

    hadoop-2.7.3winutils.rar

    对于单机模式,可以配置伪分布式模式,通过设置配置文件使得一个节点模拟分布式环境。 在Windows上使用Hadoop进行大数据处理,还需要了解如何使用Hadoop命令行工具,如hadoop fs系列命令来与HDFS交互,以及使用...

    Hadoop-2.8.5全面资料

    #### 三、Hadoop伪分布式环境搭建 伪分布式模式是指在一个单机系统中模拟一个完整的Hadoop集群环境,所有节点(NameNode、DataNode、JobTracker、TaskTracker等)都运行在同一台机器上。这种模式主要用于开发测试...

    实验3 Hadoop安装与配置2-伪分布式.docx

    实验报告标题为“实验3 Hadoop安装与配置2-伪分布式”,主要讲述了在Ubuntu环境下进行Hadoop的安装和配置过程,这是大数据处理课程JY1124的一部分。实验旨在让学生掌握Hadoop的安装和配置技术,为后续的大数据处理...

    hadoop2.0伪分布式搭建

    在搭建 Hadoop 2.0 的伪分布式环境之前,首先需要进行一系列的基础环境准备及配置工作。 ##### 1. Linux 环境配置 为了确保 Hadoop 能够顺利运行,需要对 Linux 系统进行以下几方面的配置: - **虚拟网络配置**:...

    Windows-hadoop-3.1.0.7z

    2. **配置Hadoop**: 解压hadoop-3.1.0文件,修改`conf`目录下的`core-site.xml`、`hdfs-site.xml`、`yarn-site.xml`和`mapred-site.xml`等配置文件,根据实际集群设置进行调整,例如HDFS的名称节点和数据节点地址。...

    hadoop-2.9.2 bin.zip

    本压缩包“hadoop-2.9.2 bin.zip”包含的是Hadoop 2.9.2版本的bin目录文件,主要用于在Windows环境下配置和运行Hadoop的伪分布式模式。 在Hadoop的安装和配置过程中,`bin`目录至关重要,因为这个目录下包含了所有...

    hadoop2.4.1伪分布式搭建.txt

    在进行Hadoop 2.4.1伪分布式的搭建之前,首先需要确保Linux环境的正确配置。以下将详细介绍所需的步骤。 ##### 1.1 VMware网络配置 - **开启VMware的NAT模式或桥接模式:** 进入`VMware`的网络设置界面,通过`...

    安装依赖文件(hadoop-2.7.2)

    6. **Hadoop单机模式与伪分布式模式**: 在Windows上,你可以选择启动Hadoop的本地模式(适合快速测试)或伪分布式模式(模拟多节点集群)。本地模式下,所有服务都在一个Java进程中运行,而伪分布式模式则模拟多节点...

    hadoop 2.6.0 安装包

    - **伪分布式模式**:在单台机器上模拟分布式环境,每个Hadoop进程都以独立Java进程运行。 - **完全分布式模式**:在多台机器上部署,适合生产环境。 5. **Hadoop生态组件** - **Hive**:基于Hadoop的数据仓库...

    hadoop2.4.1伪分布式搭建

    ### Hadoop 2.4.1 伪分布式环境搭建详细步骤 #### 一、环境准备:Linux...完成以上所有配置后,即可启动Hadoop伪分布式集群。具体启动命令可参考Hadoop官方文档或相关教程。至此,Hadoop 2.4.1伪分布式环境搭建完毕。

    hadoop-common-2.7.1-bin-master.zip+hbase-2.0.0-bin.tar.gz Hbase与Hadoop版本对应

    解压后,你需要配置Hadoop的环境变量,包括HADOOP_HOME、HADOOP_CONF_DIR等,并将bin目录添加到PATH中。 对于HBase,你需要配置HBASE_HOME环境变量,并在Hadoop的配置文件中指定Hadoop的路径。在hbase-site.xml中,...

    hadoop伪分布式安装方法步骤

    "hadoop伪分布式安装方法步骤" Hadoop是大数据处理的基石,而伪分布式安装是Hadoop的基本配置之一。在本资源中,我们将详细介绍Hadoop伪分布式安装的步骤,包括宿主机和客户机的网络连接、Hadoop的伪分布安装步骤、...

    linux虚拟机搭建hadoop伪分布式集群

    在搭建Hadoop伪分布式集群的过程中,首先需要在Linux环境下配置VMware的NAT网络,确保虚拟机能够稳定地运行和通信。NAT网络允许虚拟机通过宿主机与外部网络进行通信,同时保持IP地址的固定性。具体操作包括取消DHCP...

Global site tag (gtag.js) - Google Analytics