

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

# 使用 Hive Live Long and Process (LLAP)
<a name="emr-hive-llap"></a>

Amazon EMR 6.0.0 支援 Hive 的 Live Long and Process (LLAP) 功能。與之前的預設 Tez 容器執行模式相比，LLAP 使用具有智慧型記憶體內快取的持續性協助程式來改善查詢效能。

Hive LLAP 協助程式係以 YARN 服務的方式進行管理和執行。由於 YARN 服務可以被視為長時間執行的 YARN 應用程式，因此某些叢集資源是專用於 Hive LLAP，無法用於其他工作負載。如需詳細資訊，請參閱 [LLAP](https://cwiki.apache.org/confluence/display/Hive/LLAP) 和 [YARN 服務 API](https://hadoop.apache.org/docs/r3.2.1/hadoop-yarn/hadoop-yarn-site/yarn-service/YarnServiceAPI.html)。

## 在 Amazon EMR 上啟用 Hive LLAP
<a name="emr-llap-enable"></a>

若要在 Amazon EMR 上啟用 Hive LLAP，請在啟動叢集時提供下列組態。

```
[
  {
    "Classification": "hive",
    "Properties": {
      "hive.llap.enabled": "true"
    }
  }
]
```

如需詳細資訊，請參閱[設定應用程式](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html)。

依預設，Amazon EMR 會將約 60% 的叢集 YARN 資源配置給 Hive LLAP 常駐程式。您可以設定配置給 Hive LLAP 的叢集 YARN 資源百分比，以及 Hive LLAP 配置要考慮的任務和核心節點數目。

例如，下列配置會以三個任務或核心節點上的三個協助程式啟動 Hive LLAP，並將三個核心或任務節點的 YARN 資源的 40% 分配給 Hive LLAP 協助程式。

```
[
  {
    "Classification": "hive",
    "Properties": {
      "hive.llap.enabled": "true",
      "hive.llap.percent-allocation": "0.4",
      "hive.llap.num-instances": "3"
    }
  }
]
```

您可以在分類 API 中使用下列 `hive-site` 組態來覆寫預設 LLAP 資源設定。


| 屬性 | Description | 
| --- | --- | 
| hive.llap.daemon.yarn.container.mb | LLAP 協助程式容器總大小 (以 MB 為單位) | 
| hive.llap.daemon.memory.per.instance.mb |  LLAP 協助程式容器中由執行器所使用的記憶體總量 (以 MB 為單位)  | 
| hive.llap.io.memory.size |  LLAP 輸入/輸出的快取大小  | 
| hive.llap.daemon.num.executors |  每個 LLAP 協助程式的執行器數目  | 

## 在叢集上手動啟動 Hive LLAP
<a name="emr-llap-manually"></a>

LLAP 使用的所有依存項目和配置都會被封裝到 LLAP tar 存檔中，作為叢集啟動的一部分。如果使用 `"hive.llap.enabled": "true"` 啟用 LLAP，建議您使用 Amazon EMR 重新組態對 LLAP 進行組態變更。

否則，對於任何 `hive-site.xml` 的手動變更，您必須使用 `hive --service llap` 命令來重建 LLAP tar 存檔，如下列範例所示。

```
# Define how many resources you want to allocate to Hive LLAP

LLAP_INSTANCES=<how many llap daemons to run on cluster>
LLAP_SIZE=<total container size per llap daemon>
LLAP_EXECUTORS=<number of executors per daemon>
LLAP_XMX=<Memory used by executors>
LLAP_CACHE=<Max cache size for IO allocator>

yarn app -enableFastLaunch

hive --service llap \
--instances $LLAP_INSTANCES \
--size ${LLAP_SIZE}m \
--executors $LLAP_EXECUTORS \
--xmx ${LLAP_XMX}m \
--cache ${LLAP_CACHE}m \
--name llap0 \
--auxhbase=false \
--startImmediately
```

## 檢查 Hive LLAP 狀態
<a name="emr-llap-check"></a>

使用下列命令以透過 Hive 檢查 Hive LLAP 的狀態。

```
hive --service llapstatus
```

使用下列命令以透過 YARN 檢查 Hive LLAP 的狀態。

```
yarn app -status (name-of-llap-service)

# example: 
yarn app -status llap0 | jq
```

## 啟動或停止 Hive LLAP
<a name="emr-llap-start"></a>

由於 Hive LLAP 是以持久性 YARN 服務的方式執行，因此您可以停用或重新啟動 YARN 服務來停止或重新啟動 Hive LLAP。下列命令示範了這一點。

```
yarn app -stop llap0
yarn app -start llap0
```

## 調整 Hive LLAP 常駐程式的數量
<a name="emr-llap-resize"></a>

使用下列命令來減少 LLAP 執行個體的數目。

```
yarn app -flex llap0 -component llap -1
```

如需詳細資訊，請參閱 [Flex a component of a service](https://hadoop.apache.org/docs/r3.2.1/hadoop-yarn/hadoop-yarn-site/yarn-service/QuickStart.html#Flex_a_component_of_a_service)。