大數據基礎系列 4:偽分布式 Hadoop 在 Ubuntu 上的安裝流程完整步驟及易錯點分析

文章目錄

  • 前言
  • 一、創建 Ubuntu 用戶
  • 二、安裝 Java
    • 2.1、查看本地 Java 版本
    • 2.2、驗證 Java 在本地的配置情況
  • 三、安裝 ssh 服務
    • 3.1、安裝 openssh-server
    • 3.2、查看 ssh 服務是否啟動
  • 四、Hadoop 偽分布式安裝
    • 4.1、Hadoop 下載
    • 4.2、進入下載安裝包的目錄
    • 4.3、Hadoop 解壓
      • 4.3.1、解壓命令 tar zxvf 中 zxvf 分別是什么意思?
      • 4.3.2、查看 Hadoop 解壓后目錄文件
      • 4.3.3、轉移 Hadoop 安裝路徑
    • 4.4、檢查 Hadoop 目錄所有者權限
    • 4.5、修改 Hadoop 目錄所有者權限
    • 4.5、查看 Hadoop 目錄結構
    • 4.6、Hadoop 約定目錄結構分析
    • 4.7、Hadoop 中的配置文件分析
    • 4.8、設置 Hadoop 環境變量
  • 五、準備啟動 Hadoop 集群
    • 5.1、啟動 Hadoop 集群的準備工作
    • 5.2、Hadoop 腳本的用法文檔
    • 5.3、查看 Hadoop 的版本信息
  • 六、偽分布式操作
    • 6.1、修改配置文件
    • 6.2、執行 NameNode 初始化
    • 6.3、開啟 NameNode 和 DataNode 守護進程
    • 6.4、查看所有的 Java 進程
  • 七、訪問 Web 界面來查看 Hadoop 的信息
  • 八、關閉 Hadoop
  • 總結


前言

本文為大數據基礎系列 4:偽分布式 Hadoop 在 Ubuntu 上的安裝流程完整步驟及易錯點分析,以 ubuntu-18.04.3、hadoop-3.2.1-tar.gz 為例。本系列的其他文章可以移步本人大數據專欄進行查看。對于本篇文章,我個人是很有自信的,一篇文章掌握一門課程核心技術點。

在這里插入圖片描述


一、創建 Ubuntu 用戶

關于創建 Ubuntu 用戶的內容這里不做詳細敘述了,需要的同學請參考我之前的文章:Ubuntu 答疑:Ubuntu 添加和刪除用戶具體步驟及進程被占用的解決方式

二、安裝 Java

對于 Ubuntu 本身,系統可能已經預裝了Java,它的 JDK 版本類型為 openjdk,路徑為"/usr/lib/jvm/default-java",之后配置 JAVA_HOME 環境變量我們可設置為該值。其具體位置如下圖所示:

在這里插入圖片描述
Apache Hadoop 的 2.7 版和更高版本需要 Java 7。它是在 OpenJDK 和 Oracle(HotSpot)的 JDK / JRE 上構建和測試的。早期版本(2.6 和更早版本)支持 Java 6。

2.1、查看本地 Java 版本

我們輸入 java -version 查看本地 jdk 版本號,沒安裝的話輸入同樣指令,可以根據提示下載需要版本,具體如下圖所示:

在這里插入圖片描述

2.2、驗證 Java 在本地的配置情況

輸入 javac,顯示命令參數列表,說明配置成功,不顯示請根據提示安裝,具體如下圖所示:

在這里插入圖片描述

三、安裝 ssh 服務

需要具體安裝 SSH 無密碼登陸參考的同學可以看我之前的文章: ssh 配置:在 Linux 中 ssh 配置無密碼登陸完整步驟以及易錯點分析

對于 Hadoop 的偽分布式和全分布式而言,Hadoop 的名稱節點(NameNode)需要啟動集群中所有機器的 Hadoop 的守護進程,這個過程可以通過 SSH 登陸來實現。Hadoop 并沒有提供 SSH 輸入密碼登陸的形式,因此為了能夠順利登陸每臺機器,需要將所有機器配置為名稱節點可以無密碼登陸的形式。

3.1、安裝 openssh-server

安裝 openssh-server,在終端輸入如下代碼:

sudo apt install openssh-server

本人已經安裝,具體如下圖所示:

在這里插入圖片描述

3.2、查看 ssh 服務是否啟動

輸入如下代碼:

sudo ps -e|grep ssh

回車,有 sshd,說明 ssh 服務已經啟動,具體如下圖所示:

在這里插入圖片描述
如果沒有啟動,輸入sudo service ssh start,回車,ssh 服務就會啟動。

四、Hadoop 偽分布式安裝

偽分布式安裝是指在一臺機器上模擬一個小的集群,但是集群只有一個節點。

4.1、Hadoop 下載

在 Linux 系統/Ubuntu 上打開自帶火狐瀏覽器,輸入地址 https://hadoop.apache.org/,打開 Hadoop 的頁面,點擊 Download 進行下載,具體如下圖所示:

在這里插入圖片描述
我們選擇所需版本的 binary 鏈接,進入,具體如下圖所示:

在這里插入圖片描述
點擊第一個鏡像鏈接,進入下載頁面,具體如下圖所示:

在這里插入圖片描述

4.2、進入下載安裝包的目錄

cd /home/bailu/下載

這里根據自己目錄輸入,我的如下圖所示:

在這里插入圖片描述
在這里插入圖片描述

4.3、Hadoop 解壓

對下載的 Hadoop 壓縮包執行解壓命令如下:

sudo tar -zxvf hadoop-3.2.1.tar.gz

4.3.1、解壓命令 tar zxvf 中 zxvf 分別是什么意思?

  • x : 從 tar 包中把文件提取出來。
  • z : 表示 tar 包是被 gzip 壓縮過的,所以解壓時需要用 gunzip 解壓。
  • v : 顯示詳細信息。
  • f xxx.tar.gz : 指定被處理的文件是 xxx.tar.gz。

4.3.2、查看 Hadoop 解壓后目錄文件

輸入 ll 查看下載目錄下的文件和目錄,會看到多了一個目錄 hadoop-3.2.1,這是安裝包解壓后的目錄,具體如下圖所示:

在這里插入圖片描述

4.3.3、轉移 Hadoop 安裝路徑

在下載目錄下輸入如下命令,將 hadoop-3.2.1 目錄轉移到 usr/local/hadoop 中:

sudo mv hadoop-3.2.1 /usr/local/hadoop

目標文件夾如下圖所示:

在這里插入圖片描述

4.4、檢查 Hadoop 目錄所有者權限

我們進入 Hadoop目錄,可能會發現文件帶鎖,輸入 ll 查看所有者不是本人,具體如下圖所示:

在這里插入圖片描述

4.5、修改 Hadoop 目錄所有者權限

這時我們就需要將 Hadoop 目錄的所有者更改,根目錄輸入如下命令:

sudo chown bailu:bailu -R /usr/local/hadoop

具體如下圖所示:

在這里插入圖片描述
修改之后我們可以看到所有者已經更改,具體如下圖所示:

在這里插入圖片描述

4.5、查看 Hadoop 目錄結構

根目錄輸入 cd /usr/local/hadoop 進入 Hadoop 目錄,輸入 ll 查看 Hadoop 下目錄結構,具體如下圖所示:

在這里插入圖片描述

4.6、Hadoop 約定目錄結構分析

  • bin:Hadoop 最基本的管理腳本和使用腳本所在目錄,這些腳本是 sbin 目錄下管理腳本的基礎實現,用戶可以直接使用這些腳本管理和使用 Hadoop。
  • etc:Hadoop 配置文件所在目錄,包括 core-site.xml,hdfs-site.xml,mapred-site.xml 等從 hadoop 1.0 繼承而來的配置文件和 yarn-site.xml 等 hadoop 2.0 新增的配置文件。
  • include:對外提供的編程庫頭文件(具體動態庫和靜態庫在 lib 目錄中),這些頭文件均是用 c++ 定義的,通常用于 c++ 程序訪問 hdfs 或者編寫 mapreduce 程序。
  • lib:該目錄包含了 Hadoop 對外提供的的編程動態庫和靜態庫,與 include 目錄中的頭文件結合使用。
  • libexec:各個服務對應的 shell 配置文件所在目錄,可用于配置日志輸出目錄,啟動參數(比如 JVM 參數)等基本信息。
  • sbin:Hadoop 管理腳本所在目錄,主要包含 HDFS 和 YARN 中各類服務的啟動/關閉腳本。
  • share:Hadoop 各個模塊編譯后的 jar 包所在目錄。

4.7、Hadoop 中的配置文件分析

文件名稱格式描述
hadoop-env.shBash 腳本記錄配置 Hadoop 運行所需的環境變量,以運行 Hadoop
core-site.xmlHadoop 配置 XMLHadoop core 的配置項,如 HDFS 和 MapReduce 常用的 I/O 設置等
hdfs-site.xmlHadoop 配置 XMLHadoop 守護進程的配置項,包括 NameNode、Secondary NameNode 和 DataNode 等
mapred-site.xmlHadoop 配置 XMLMapReduce 守護進程的配置項,包括 JobTracker 和 TaskTracker
masters純文本運行 SecondaryNameNode 的機器列表(每行一個)
slaves純文本運行 DataNode 和 TaskTracker 的機器列表(每行一個)
hadoop-metrics.propertiesJava 屬性控制 metrics 在 Hadoop 上如何發布的屬性

4.8、設置 Hadoop 環境變量

接下來我們需要設置 Hadoop 環境變量,編輯 ~/.bashrc,任意目錄下輸入如下代碼:

sudo gedit ~/.bashrc

具體如下圖所示:

在這里插入圖片描述
在這里插入圖片描述
讓環境變量立即生效,輸入命令: source ~/.bashrc,具體如下圖所示:

在這里插入圖片描述

五、準備啟動 Hadoop 集群

5.1、啟動 Hadoop 集群的準備工作

在任意目錄下輸入如下代碼:

sudo gedit /usr/local/hadoop/hadoop-3.2.1/etc/hadoop/hadoop-env.sh

編輯 etc/hadoop/hadoop-env.sh 以定義一些參數,將原文本文件中的 JAVA_HOME 設置成真實的 JDK 地址,具體如下所示:

在這里插入圖片描述

  #設置為 Java 安裝的根目錄export JAVA_HOME =/usr/java/latest

在這里插入圖片描述

5.2、Hadoop 腳本的用法文檔

嘗試以下命令:Hadoop 根目錄下輸入 bin/hadoop 這將顯示 Hadoop 腳本的用法文檔,具體如下圖所示:

在這里插入圖片描述

5.3、查看 Hadoop 的版本信息

這時我們可以查看 Hadoop 的版本信息,輸入如下命令:

 ./bin/hadoop version

具體如下圖所示:

在這里插入圖片描述

六、偽分布式操作

6.1、修改配置文件

對于偽分布式,僅需修改 core-site.xml、hdfs-site.xml 文件,詳細修改如下。

對于 etc/hadoop/core-site.xml,輸入命令如下:

sudo gedit /usr/local/hadoop/hadoop-3.2.1/etc/hadoop/core-site.xml

修改之后如下圖所示:

在這里插入圖片描述
說明

  • <name> 標簽設置配置項的名字,<value> 設置配置項的值。
  • 對于 core-site.xml 文件,只需在其中指定 HDFS 的地址和端口號,端口號按照官方文檔設置為 9000 即可。

對于 etc/hadoop/hdfs-site.xml,輸入命令如下:

sudo gedit /usr/local/hadoop/hadoop-3.2.1/etc/hadoop/hdfs-site.xml

修改之后如下圖所示:

在這里插入圖片描述
說明

  • 對于 hdfs-site.xml 文件,我們設置 replication 值為 1,這也是 Hadoop 運行的默認最小值,它限制了 HDFS 文件系統中同一份數據的副本數量。
  • 這里采用偽分布式,在集群中只有一個節點,因此副本數量 replication 的值也只能設置為 1。

6.2、執行 NameNode 初始化

在配置完成后,首先需要初始化文件系統。由于 Hadoop 的很多工作是在自帶的 HDFS 文件系統上完成的,因此需要將文件系統初始化之后才能進一步執行計算任務。

在 Hadoop 根目錄執行 NameNode 初始化的命令如下:

./bin/hdfs namenode -format

具體如下圖所示:

在這里插入圖片描述
遇到這一步,繼續執行,具體如下圖所示:

在這里插入圖片描述
成功的話,會看到"successfully formatted"和"Exitting with status"的提示,若為"Exitting with status 1"則是出錯。

如果出現啟動錯誤,則可以在日志中查看錯誤原因,具體如下圖所示:

在這里插入圖片描述
對于控制臺報錯請注意:

  1. 每一次的啟動日志都是追加在日志文件之后,所以對于錯誤要拉到最后面看,對比下記錄的時間就知道了。
  2. 一般出錯的提示在最后面,通常是寫著 Fatal、Error、Warning 或者 Java Exception 的地方。

6.3、開啟 NameNode 和 DataNode 守護進程

輸入如下命令:

./sbin/start-dfs.sh

具體如下圖所示:

在這里插入圖片描述

6.4、查看所有的 Java 進程

運行之后,輸入 jps 指令可以查看所有的 Java 進程。在正常啟動時,可以得到如下類似結果,具體如下圖所示:

在這里插入圖片描述
說明jps(Java Virtual Machine Process Status Tool)是 java 提供的一個顯示當前所有 Java 進程 pid 的命令,適合在 linux/unix 平臺上簡單察看當前 Java 進程的一些簡單情況。很多人都是用過 unix 系統里的 ps 命令,這個命令主要是用來顯示當前系統的進程情況,有哪些進程以及進程 id。

jps 也是一樣,它的作用是顯示當前系統的 Java 進程情況及進程 id。我們可以通過它來查看我們到底啟動了幾個 Java 進程(因為每一個 Java 程序都會獨占一個 Java 虛擬機實例)。

七、訪問 Web 界面來查看 Hadoop 的信息

此時,可以通過 Linux 本地瀏覽器訪問 Web 界面(http://localhost:9870)來查看 Hadoop 的信息,具體如下圖所示:

在這里插入圖片描述
如果存在 DataNode 啟動異常時或者沒有啟動的問題,請查看:Apache Hadoop 答疑:解決 Apache Hadoop 啟動時 DataNode 啟動異常的問題。具體如下圖所示:

在這里插入圖片描述

八、關閉 Hadoop

若要關閉 Hadoop,則在 Hadoop 根目錄下運行如下命令:

./sbin/stop-dfs.sh

具體如下圖所示:

在這里插入圖片描述


總結

本文是本專欄文章的第四篇,也是做重要的一篇,后期的 Hadoop 生態體系均是圍繞本文展開,同時補充了一些 linux 系統操作的相關知識,對于鞏固 linux 系統也是有一定的幫助。簡而言之,如果你切實掌握了本文的內容,那么你后期學大數據的其他組成部分也就輕車熟路了。

在這里插入圖片描述


我是白鹿,一個不懈奮斗的程序猿。望本文能對你有所裨益,歡迎大家的一鍵三連!若有其他問題、建議或者補充可以留言在文章下方,感謝大家的支持!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/530765.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530765.shtml
英文地址,請注明出處:http://en.pswp.cn/news/530765.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Eclipse 答疑:為什么在 Eclipse 中,運行本程序卻是另外一個程序的結果?

文章目錄前言一、錯誤產生場景1.1、執行一個無誤的 Java 程序&#xff08;即產生結果的程序&#xff09;1.2、執行未出結果的 Java 程序二、錯誤處理方式總結前言 你使用 Eclipse 敲代碼的時候&#xff0c;有沒有遇到過這樣一種情況&#xff0c;明明我點擊運行本程序結果卻是另…

什么是代碼調試(debugging)?進行代碼調試的基本方法有哪些?

文章目錄前言一、什么是代碼調試&#xff1f;二、常見的代碼調試方式2.1、手工跟蹤&#xff08;hand trace&#xff09;2.2、手工跟蹤的適用范圍2.3、使用調試工具2.4、調試工具具備的特性總結前言 我們在項目開發過程中&#xff0c;經常遇到需要進行調試的代碼模塊。對于初學者…

Java 格式轉換:利用格式轉換實現隨機數生成隨機 char 字母及 string 字母串

文章目錄前言一、char 型與數值型轉換規則二、隨機數生成隨機字母三、隨機數生成隨機字母串總結前言 我們都知道在 Java 語言中有八種基本數據類型&#xff0c;而不同數據類型之間的轉換你了解多少呢&#xff1f;今天我們通過本文帶你了解利用格式轉換實現 char 和 String 產生…

ssh 配置:在 Linux 中 ssh 配置無密碼登陸完整步驟以及易錯點分析

文章目錄前言一、什么是 SSH&#xff1f;二、ssh 配置無密碼登陸原理三、Linux 系統上生成 SSH 密鑰和公鑰四、登錄驗證總結前言 對于 Hadoop 的偽分布式和全分布式而言&#xff0c;Hadoop 的名稱節點&#xff08;NameNode&#xff09;需要啟動集群中所有機器的 Hadoop 的守護進…

Apache Hadoop 啟動報錯:masternode:ssh: connect to host master port 22: Connection timed out 總結

文章目錄前言一、錯誤場景描述二、問題總結及解決辦法2.1、IP 配置錯誤及解決方法2.2、端口被防火墻禁用及解決方法總結前言 最近在 Win10 系統上配置了ubuntu-18.04.3&#xff0c;在配置集群的 ssh 無秘鑰登錄時&#xff0c;經常能碰到 ssh: connect to host master port 22: …

大數據入門系列 1:全網最全,Windows 安裝 VMware Workstation 虛擬機完整步驟及需要注意的問題

文章目錄前言一、下載正版虛擬機不同版本1.1、通過官網進行下載 VM 虛擬機1.1.1、選擇所需版本下載1.1.2、VM 15.1.0 Pro for Windows 下載1.2、免注冊賬號又安全地下載虛擬機1.2.1、瀏覽器搜索下載需要的版本1.2.2、校驗下載包的安全性二、虛擬機安裝步驟2.1、進入安裝向導2.2…

Apache Hadoop 答疑:解決 Apache Hadoop 啟動時 DataNode 啟動異常的問題

文章目錄前言一、啟動 HDFS 并顯示當前所有 Java 進程二、DataNode 啟動異常場景描述三、DataNode 啟動異常解決方式四、Web 界面檢查 Hadoop 信息總結前言 本文用于解決 Apache Hadoop 啟動時 DataNode 啟動異常的問題&#xff0c;但是請注意這會刪除 HDFS 中原有的所有數據&a…

Java 跨平臺運行機理:Dos 命令在桌面新建文件夾,并在其中編譯、運行一段 Java 程序

文章目錄前言一、打開 Dos 命令界面二、Dos 查看桌面文件目錄序列三、Dos 創建文件夾四、相關 Windows 系統 Shell 命令補充五、Dos 進入文件夾編寫 Java 文件六、Dos 執行編譯命令編譯 Java 文件七、查看 .class 文件八、Dos 運行 Java 文件輸出信息九、Dos 刪除文件總結前言 …

大數據入門系列 5:全網最全,Hadoop 實驗——熟悉常用的 HDFS 目錄操作和文件操作

文章目錄前言一、實驗目的二、實驗平臺三、實驗內容和要求3.1、HDFS 目錄操作3.1.1、創建用戶目錄3.1.2、顯示 HDFS 中與當前用戶對應的目錄內容3.1.3、列出 HDFS 上的所有目錄3.1.4、用戶目錄下創建一個 input 目錄3.1.5、根目錄下創建 input 的目錄3.1.6、刪除子目錄3.2、HDF…

Java 操作符:Java 中操作符優先級、一二三元操作符及邏輯操作符的中德模佛定理

文章目錄前言一、操作符介紹與優先級表二、一元運算符與二元運算符的區別&#xff1f;三、Java 中唯一的三元操作符四、邏輯操作符中的德模佛定理總結前言 在 Java 中我們常見的操作符分為三種&#xff0c;分別是邏輯操作符、關系操作符、算術操作符&#xff0c;其優先級和結合…

Java 答疑:編譯器和解釋器有何區別?Java 語言屬于編譯型編程語言還是解釋型編程語言?

文章目錄前言一、Java 與 Java 字節碼二、什么是編譯器&#xff08;Compiler&#xff09;三、什么是解釋器&#xff08;Interpreter&#xff09;四、編譯器與解釋器有何區別&#xff1f;五、Java 語言屬于哪種語言&#xff1f;總結前言 我們都知道開發語言整體分為兩類&#xf…

Java 案例練習:編寫 Java 程序,輸入年份和月份,使用 switch 結構計算對應月份的天數。月份為 1、3、5、7、8、10、12 時,天數為 31 天。月份為 4、6、9、11 時,天數為

文章目錄一、練習題目二、使用 switch 語句實現代碼三、將代碼改寫回 if else 的選擇結構一、練習題目 編寫 Java 程序&#xff0c;輸入年份和月份&#xff0c;使用 switch 結構計算對應月份的天數。 月份為 1、3、5、7、8、10、12 時&#xff0c;天數為 31 天。 月份為 4、6、…

SRA 案例練習:解釋 CRUD 矩陣方法,并從上面 “用于化學品跟蹤管理系統的 CRUDL 矩陣示例”圖中找出被遺漏的需求,并解釋是如何找的?

文章目錄 一、練習題目二、CRUD 矩陣介紹三、矩陣分析四、尋找遺漏需求一、練習題目 解釋 CRUD 矩陣方法,并從上面 “用于化學品跟蹤管理系統的 CRUDL 矩陣示例”圖中找出被遺漏的需求,并解釋是如何找的。 二、CRUD 矩陣介紹 CRUD 矩陣是用于尋找遺漏需求比較精確的方法,其…

《軟件需求分析(第二版)》第 14 章——需求管理的原則和實踐 重點部分總結

文章目錄 前言一、討論二、簡答題三、名詞解釋總結前言 軟件需求分析就是把軟件計劃期間建立的軟件可行性分析求精和細化,分析各種可能的解法,并且分配給各個軟件元素。需求分析是軟件定義階段中的最后一步,是確定系統必須完成哪些工作,也就是對目標系統提出完整、準確、清…

《軟件需求分析(第二版)》第 15 章——變更管理 重點部分總結

文章目錄 前言一、討論二、判斷題三、簡答題總結前言 軟件需求分析就是把軟件計劃期間建立的軟件可行性分析求精和細化,分析各種可能的解法,并且分配給各個軟件元素。需求分析是軟件定義階段中的最后一步,是確定系統必須完成哪些工作,也就是對目標系統提出完整、準確、清晰…

《軟件需求分析(第二版)》第 16 章——需求鏈中的聯系鏈 重點部分總結

文章目錄 前言一、討論總結前言 軟件需求分析就是把軟件計劃期間建立的軟件可行性分析求精和細化,分析各種可能的解法,并且分配給各個軟件元素。需求分析是軟件定義階段中的最后一步,是確定系統必須完成哪些工作,也就是對目標系統提出完整、準確、清晰、具體的要求。本文是…

《軟件項目管理(第二版)》第 10 章——項目收尾 重點部分總結

文章目錄 前言一、討論二、簡答題總結前言 學習了項目的開發與發布之后,我們就可以單獨對一個項目進行開發了,但是在企業中開發中,除了編碼之外,還需要項目管理、團隊協作開發等,這就是軟件項目管理板塊要學習的內容。本文是對《軟件項目管理(第二版)》第 10 章——項目…

《軟件項目管理(第二版)》第 9 章——項目監督與控制 重點部分總結

文章目錄 前言一、討論二、選擇題三、判斷題四、簡答題總結前言 學習了項目的開發與發布之后,我們就可以單獨對一個項目進行開發了,但是在企業中開發中,除了編碼之外,還需要項目管理、團隊協作開發等,這就是軟件項目管理板塊要學習的內容。本文是對《軟件項目管理(第二版…

SSM(Spring+Spring MVC+Mybatis)整合 1:整體概述、目錄內容及實驗環境介紹

文章目錄 前言一、概述二、系列文章全目錄三、實驗環境總結前言 通過本次 Java EE 三大框架(Spring、Spring MVC、MyBatis)原理、技術和方法的整合,大量的項目實踐實際動手能力,解決總結在 SSM 項目中存在的問題,為畢業設計以及后期從事 Java 相關開發工作打下堅實的基礎。…

Tomcat 服務:解決 Apache Tomcat 更新后 Tomcat9w.exe 無法啟動 Tomcat 服務的問題

解決 Tomcat9w.exe 無法啟動 Tomcat 服務的問題/解決 Apache Tomcat 更新后 Apache Tomcat 9.0 Tomcat9 Properties 配置不匹配的問題 文章目錄解決 Tomcat9w.exe 無法啟動 Tomcat 服務的問題/解決 Apache Tomcat 更新后 Apache Tomcat 9.0 Tomcat9 Properties 配置不匹配的問題…