

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 檢視和重新啟動 Amazon EMR 和應用程式程序 (常駐程式)
<a name="emr-process-restart-stop-view"></a>

當您對叢集進行疑難排解時，您可能需要列出執行中的程序。您可能還想停止或重新啟動程序。例如，您可以在變更組態後重新啟動程序，或在分析日誌檔案和錯誤訊息後發現特定程序有問題。

在叢集上執行的程序有兩種類型：Amazon EMR 程序 (例如，執行個體控制器和日誌推送器) 和與叢集上安裝的應用程式關聯的程序 (例如，hadoop-hdfs-namenode 和 hadoop-yarn-resourcemanager)。

若要直接在叢集上使用程序，您必須先連接至主節點。如需詳細資訊，請參閱[連線至 Amazon EMR 叢集](emr-connect-master-node.md)。

## 檢視執行中的程序
<a name="emr-process-view"></a>

根據您使用的 Amazon EMR 版本，您用來檢視叢集上執行中程序的方法會有所不同。

------
#### [ EMR 5.30.0 and 6.0.0 and later ]

**Example ：列出所有執行中的程序**  
下列範例使用 `systemctl` 和指定 `--type` 來檢視所有程序。  

```
systemctl --type=service
```

**Example ：列出特定程序**  
下列範例會列出名稱包含 `hadoop` 的所有程序。  

```
systemctl --type=service | grep -i hadoop
```
輸出範例：  

```
 hadoop-hdfs-namenode.service           loaded active running Hadoop namenode
 hadoop-httpfs.service                  loaded active running Hadoop httpfs
 hadoop-kms.service                     loaded active running Hadoop kms
 hadoop-mapreduce-historyserver.service loaded active running Hadoop historyserver
 hadoop-state-pusher.service            loaded active running Daemon process that processes and serves EMR metrics data.
 hadoop-yarn-proxyserver.service        loaded active running Hadoop proxyserver
 hadoop-yarn-resourcemanager.service    loaded active running Hadoop resourcemanager
 hadoop-yarn-timelineserver.service     loaded active running Hadoop timelineserver
```

**Example ：查看特定程序的詳細狀態報告**  
下列範例會顯示 `hadoop-hdfs-namenode` 服務的詳細狀態報告。  

```
sudo systemctl status hadoop-hdfs-namenode
```
輸出範例：  

```
hadoop-hdfs-namenode.service - Hadoop namenode
   Loaded: loaded (/etc/systemd/system/hadoop-hdfs-namenode.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2021-08-18 21:01:46 UTC; 26min ago
 Main PID: 9733 (java)
    Tasks: 0
   Memory: 1.1M
   CGroup: /system.slice/hadoop-hdfs-namenode.service
           ‣ 9733 /etc/alternatives/jre/bin/java -Dproc_namenode -Xmx1843m -server -XX:OnOutOfMemoryError=kill -9 %p ...

Aug 18 21:01:37 ip-172-31-20-123 systemd[1]: Starting Hadoop namenode...
Aug 18 21:01:37 ip-172-31-20-123 su[9715]: (to hdfs) root on none
Aug 18 21:01:37 ip-172-31-20-123 hadoop-hdfs-namenode[9683]: starting namenode, logging to /var/log/hadoop-hdfs/ha...out
Aug 18 21:01:46 ip-172-31-20-123 hadoop-hdfs-namenode[9683]: Started Hadoop namenode:[  OK  ]
Aug 18 21:01:46 ip-172-31-20-123 systemd[1]: Started Hadoop namenode.
Hint: Some lines were ellipsized, use -l to show in full.
```

------
#### [ EMR 4.x - 5.29.0 ]

**Example ：列出所有執行中的程序**  
下列範例會列出所有執行中的程序。  

```
initctl list
```

------
#### [ EMR 2.x - 3.x ]

**Example ：列出所有執行中的程序**  
下列範例會列出所有執行中的程序。  

```
ls /etc/init.d/
```

------

## 停止和重新啟動程序
<a name="emr-process-restart"></a>

在您判斷執行中的是哪些程序後，必要時，您可以先停止它們然後再予以重新啟動。

------
#### [ EMR 5.30.0 and 6.0.0 and later ]

**Example ：停止程序**  
下列範例會停止 `hadoop-hdfs-namenode` 程序。  

```
sudo systemctl stop hadoop-hdfs-namenode
```
您可以查詢 `status` 來確認程序已停止。  

```
sudo systemctl status hadoop-hdfs-namenode
```
輸出範例：  

```
hadoop-hdfs-namenode.service - Hadoop namenode
  Loaded: loaded (/etc/systemd/system/hadoop-hdfs-namenode.service; enabled; vendor preset: disabled)
  Active: failed (Result: exit-code) since Wed 2021-08-18 21:37:50 UTC; 8s ago
Main PID: 9733 (code=exited, status=143)
```

**Example ：開始程序**  
下列範例會啟動 `hadoop-hdfs-namenode` 程序。  

```
sudo systemctl start hadoop-hdfs-namenode
```
您可以查詢狀態來確認程序正在執行。  

```
sudo systemctl status hadoop-hdfs-namenode
```
輸出範例：  

```
hadoop-hdfs-namenode.service - Hadoop namenode
   Loaded: loaded (/etc/systemd/system/hadoop-hdfs-namenode.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2021-08-18 21:38:24 UTC; 2s ago
  Process: 13748 ExecStart=/etc/init.d/hadoop-hdfs-namenode start (code=exited, status=0/SUCCESS)
 Main PID: 13800 (java)
    Tasks: 0
   Memory: 1.1M
   CGroup: /system.slice/hadoop-hdfs-namenode.service
           ‣ 13800 /etc/alternatives/jre/bin/java -Dproc_namenode -Xmx1843m -server -XX:OnOutOfMemoryError=kill -9 %p...
```

------
#### [ EMR 4.x - 5.29.0 ]

**Example ：停止執行中的程序**  
下列範例會停止 `hadoop-hdfs-namenode` 服務。  

```
sudo stop hadoop-hdfs-namenode
```

**Example ：重新啟動已停止的程序**  
下列範例會重新啟動 `hadoop-hdfs-namenode` 服務。您必須使用 `start` 命令，而不是 `restart`。  

```
sudo start hadoop-hdfs-namenode
```

**Example ：檢查程序狀態**  
下列命令會擷取 `hadoop-hdfs-namenode` 的狀態。您可以使用 `status` 命令來確認程序已停止或已啟動。  

```
sudo status hadoop-hdfs-namenode
```

------
#### [ EMR 2.x - 3.x ]

**Example ：停止應用程式程序**  
下列範例會停止與叢集上安裝的 Amazon EMR 版本關聯的 `hadoop-hdfs-namenode` 服務。  

```
sudo /etc/init.d/hadoop-hdfs-namenode stop
```

**Example ：重新啟動應用程式程序**  
下列範例命令會重新啟動 `hadoop-hdfs-namenode` 程序：  

```
sudo /etc/init.d/hadoop-hdfs-namenode start
```

**Example ：停止 Amazon EMR 程序**  
下列範例會停止與叢集上 Amazon EMR 版本沒有關聯的程序，例如執行個體控制器。  

```
sudo /sbin/stop instance-controller
```

**Example ：重新啟動 Amazon EMR 程序**  
下列範例會重新啟動與叢集上 Amazon EMR 版本沒有關聯的程序，例如執行個體控制器。  

```
sudo /sbin/start instance-controller
```

**注意**  
`/sbin/start, stop` 和 `restart` 命令是 `/sbin/intictl` 的符號連結。如需 `initctl` 的更多資訊，請在命令提示字元輸入 `man initctl` 以參閱 initctl man 頁面。

------