

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

# 在 EMR Studio 中優化 Spark 作業
<a name="emr-studio-spark-optimization"></a>

使用 EMR Studio 執行 Spark 作業時，您可以採取幾個步驟來協助確保您正在優化 Amazon EMR 叢集資源。

## 延長 Livy 工作階段
<a name="optimize-spark-livy-timeout"></a>

如果在 Amazon EMR 叢集上使用 Apache Livy 和 Spark，建議執行下列其中一個動作來增加 Livy 工作階段逾時：
+ 建立 Amazon EMR 叢集時，請在**輸入組態**欄位中設定此組態分類。

  ```
  [
      {
          "Classification": "livy-conf",
          "Properties": {
            "livy.server.session.timeout": "8h"
          }
      }
  ]
  ```
+ 對於已正在執行的 EMR 叢集，請使用 `ssh` 連接至叢集，並在 `/etc/livy/conf/livy.conf` 中設定 `livy-conf` 組態分類。

  ```
  [
      {
          "Classification": "livy-conf",
          "Properties": {
            "livy.server.session.timeout": "8h"
          }
      }
  ]
  ```

  變更組態後，可能需要重新啟動 Livy。
+ 如果不希望 Livy 工作階段逾時，請在 `/etc/livy/conf/livy.conf` 中將屬性 `livy.server.session.timeout-check` 設定為 `false`。

## 在叢集模式下執行 Spark
<a name="optimize-spark-cluster-mode"></a>

在叢集模式中，Spark 驅動程式會在核心節點而非主節點上執行，從而改善主節點的資源使用率。

若要在叢集模式而非預設用戶端模式下執行 Spark 應用程式，請在設定**部署模式**時選擇**叢集**模式，同時在新的 Amazon EMR 叢集中設定 Spark 步驟。如需詳細資訊，請參閱 Apache Spark 文件中的[叢集模式概觀](https://spark.apache.org/docs/latest/cluster-overview.html)。

## 增加 Spark 驅動程式記憶體
<a name="optimize-spark-memory"></a>

若要增加 Spark 驅動程式記憶體，請使用 EMR 筆記本中的 `%%configure` 魔術命令來設定 Spark 工作階段，如下列範例所示。

```
%%configure -f
{"driverMemory": "6000M"}
```