共用方式為


教學課程:使用 Azure CLI 在 HDInsight 中建立已啟用 Apache Kafka REST Proxy 的叢集

在本教學課程中,您將瞭解如何使用 Azure CLI 在 Azure HDInsight 中建立已啟用 Apache Kafka REST Proxy 的叢集。 Azure HDInsight 是企業受控、全方位、開放原始碼的分析服務。 Apache Kafka 是一個開放原始碼的分散式串流平台。 它通常用作訊息代理,因為它提供類似於發布-訂閱訊息佇列的功能。 Kafka REST Proxy可讓您透過HTTP上的 REST API 與Kafka叢集互動。 Azure CLI 是Microsoft管理 Azure 資源的跨平臺命令行體驗。

Apache Kafka API 只能由相同虛擬網路內的資源存取。 您可以使用 SSH 直接存取叢集。 若要將其他服務、網路或虛擬機器連線至 Apache Kafka,您必須先建立虛擬網路,然後在網路內建立資源。 如需詳細資訊,請參閱 使用虛擬網路連線到 Apache Kafka

在本教學課程中,您將瞭解:

  • Kafka REST Proxy 的必要條件
  • 使用 Azure CLI 建立 Apache Kafka 叢集

如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶

先決條件

  • 使用 Microsoft Entra ID 註冊的應用程式。 您撰寫與 Kafka REST Proxy 互動的用戶端應用程式會使用此應用程式的識別碼和秘密,向 Azure 進行驗證。 如需詳細資訊,請參閱使用 Microsoft 身分識別平台註冊應用程式

  • 具有您註冊應用程式作為成員的 Microsoft Entra 安全性群組。 此安全群組將用於控制允許哪些應用程式與 REST Proxy 互動。 如需建立 Microsoft Entra 群組的詳細資訊,請參閱建立 基本群組並使用 Microsoft Entra ID 新增成員

  • Azure CLI。 確保您至少擁有 2.0.79 版。 請參閱安裝 Azure CLI

建立 Apache Kafka 叢集

  1. 登入 Azure 訂用帳戶。

    az login
    
    # If you have multiple subscriptions, set the one to use
    # az account set --subscription "SUBSCRIPTIONID"
    
  2. 設定環境變數。 本教學課程中變數的使用是以 Bash 為基礎。 其他環境將需要細微的變化。

    Variable Description
    resourceGroupName 將 RESOURCEGROUPNAME 取代為新資源群組的名稱。
    位置 將 LOCATION 取代為將建立叢集的區域。 如需有效位置的清單,請使用命令az account list-locations
    叢集名稱 (clusterName) 將 CLUSTERNAME 替換為您新叢集的全域唯一名稱。
    storageAccount 將 STORAGEACCOUNTNAME 取代為新儲存體帳戶的名稱。
    http密碼 將 PASSWORD 取代為叢集登入的密碼,admin
    ssh密碼 將PASSWORD替換為安全Shell使用者名稱 sshuser的密碼。
    安全群組名稱 將 SECURITYGROUPNAME 替換為客戶端 Microsoft Entra 的 Kafka REST Proxy 安全群組名稱。 變數會被傳遞到用於--kafka-client-group-nameaz-hdinsight-create參數。
    安全性群組識別碼 將 SECURITYGROUPID 替換為 Microsoft Entra 用戶端 Kafka REST Proxy 的安全性群組識別碼。 變數會被傳遞到用於--kafka-client-group-idaz-hdinsight-create參數。
    儲存容器 叢集將會使用的儲存體容器,在本教學課程中保持原狀。 此變數將設定為叢集的名稱。
    workernodeCount (工作節點數量) 叢集中的工作節點數目,請在本教程中保持不變。 為了保證高可用性,Kafka 至少需要 3 個工作節點
    clusterType HDInsight 叢集的類型,針對本教學課程請保持不變。
    clusterVersion HDInsight 叢集版本,在本教學課程中保持原狀。 Kafka REST Proxy 需要最低叢集版本 4.0。
    componentVersion Kafka 版本,請在此教學中保持原樣。 Kafka REST Proxy 需要最低元件版本 2.1。

    使用所需的值更新變數。 然後輸入 CLI 命令來設定環境變數。

    export resourceGroupName=RESOURCEGROUPNAME
    export location=LOCATION
    export clusterName=CLUSTERNAME
    export storageAccount=STORAGEACCOUNTNAME
    export httpPassword='PASSWORD'
    export sshPassword='PASSWORD'
    export securityGroupName=SECURITYGROUPNAME
    export securityGroupID=SECURITYGROUPID
    
    export storageContainer=$(echo $clusterName | tr "[:upper:]" "[:lower:]")
    export workernodeCount=3
    export clusterType=kafka
    export clusterVersion=4.0
    export componentVersion=kafka=2.1
    
  3. 輸入下列命令來建立資源群組

     az group create \
        --location $location \
        --name $resourceGroupName
    
  4. 輸入下列命令來建立 Azure 儲存體帳戶

    # Note: kind BlobStorage is not available as the default storage account.
    az storage account create \
        --name $storageAccount \
        --resource-group $resourceGroupName \
        --https-only true \
        --kind StorageV2 \
        --location $location \
        --sku Standard_LRS
    
  5. 從 Azure 儲存體帳戶擷取主金鑰,並輸入下列命令將它儲存在變數中:

    export storageAccountKey=$(az storage account keys list \
        --account-name $storageAccount \
        --resource-group $resourceGroupName \
        --query [0].value -o tsv)
    
  6. 輸入下列命令來建立 Azure 儲存體容器

    az storage container create \
        --name $storageContainer \
        --account-key $storageAccountKey \
        --account-name $storageAccount
    
  7. 建立 HDInsight 叢集。 在輸入指令之前,請注意下列參數:

    1. Kafka 叢集的必要參數:

      參數 Description
      --類型 值必須是 Kafka
      --workernode-data-disks-每個節點 每個工作節點要使用的資料磁碟數目。 HDInsight Kafka 僅支援資料磁碟。 本教程使用值 2
    2. Kafka REST Proxy 的必要參數:

      參數 Description
      --kafka-management-node-size 節點的大小。 本教學課程使用值 Standard_D4_v2
      --kafka-client-group-id Kafka REST Proxy 的用戶端 Microsoft Entra 安全性群組識別碼。 值是從變數 $securityGroupID 傳遞。
      --kafka-client-group-name Kafka REST Proxy 的用戶端 Microsoft Entra 安全性群組名稱。 該值從變數 $securityGroupName 傳遞。
      --version HDInsight 叢集版本必須至少為 4.0。 該值從變數 $clusterVersion 傳遞。
      --組件版本 Kafka 版本必須至少為 2.1。 該值從變數 $componentVersion 傳遞。

      如果您想要建立沒有 REST Proxy 的叢集,請從命令中--kafka-management-node-size刪除 --kafka-client-group-id--kafka-client-group-nameaz hdinsight create

    3. 如果您有現有的虛擬網路,請新增參數 --vnet-name--subnet,以及其值。

    輸入下列命令來建立叢集:

    az hdinsight create \
        --name $clusterName \
        --resource-group $resourceGroupName \
        --type $clusterType \
        --component-version $componentVersion \
        --http-password $httpPassword \
        --http-user admin \
        --location $location \
        --ssh-password $sshPassword \
        --ssh-user sshuser \
        --storage-account $storageAccount \
        --storage-account-key $storageAccountKey \
        --storage-container $storageContainer \
        --version $clusterVersion \
        --workernode-count $workernodeCount \
        --workernode-data-disks-per-node 2 \
        --kafka-management-node-size "Standard_D4_v2" \
        --kafka-client-group-id $securityGroupID \
        --kafka-client-group-name "$securityGroupName"
    

    叢集建立程式可能需要幾分鐘的時間才能完成。 通常大約 15。

清理資源

完成本文之後,您可能想要刪除叢集。 利用 HDInsight,您的資料會儲存在 Azure 儲存體中,以便您在未使用叢集時安全地刪除該叢集。 您也需支付 HDInsight 叢集的費用 (即使未使用)。 由於叢集費用是儲存體費用的許多倍,所以刪除未使用的叢集符合經濟效益。

輸入所有或部分的下列命令來移除資源:

# Remove cluster
az hdinsight delete \
    --name $clusterName \
    --resource-group $resourceGroupName

# Remove storage container
az storage container delete \
    --account-name $storageAccount  \
    --name $storageContainer

# Remove storage account
az storage account delete \
    --name $storageAccount  \
    --resource-group $resourceGroupName

# Remove resource group
az group delete \
    --name $resourceGroupName

後續步驟

現在您已使用 Azure CLI 在 Azure HDInsight 中成功建立已啟用 Apache Kafka REST Proxy 的叢集,請使用 Python 程式碼與 REST Proxy 互動: