通過網路連接功能,您可以實現Serverless Spark與自有VPC(Virtual Private Cloud)之間的網路互連,從而訪問VPC內的資料來源、伺服器,或調用VPC內的其他服務。本文將以Spark SQL和Application JAR類型任務串連至自有VPC中的HMS(Hive Metastore)為例,詳細介紹如何配置網路連接以實現VPC的互連。
前提條件
已準備好資料來源。本文以在EMR on ECS頁面建立包含Hive服務,元数据為内置 MySQL的DataLake叢集為例,詳情請參見建立叢集。
使用限制
當前僅支援使用下列可用性區域的交換器。
步驟一:新增網路連接
進入網路連接頁面。
在左側導覽列,選擇。
在Spark頁面,單擊目標工作空間名稱。
在EMR Serverless Spark頁面,單擊左側導覽列中的網路連接。
在網路連接頁面,單擊新增網路連接。
在新增網路連接對話方塊中,配置以下資訊,單擊確定。
參數
說明
串連名稱
輸入新增串連的名稱。
專用網路
選擇與EMR叢集相同的專用網路。
如果當前沒有可選擇的專用網路,請單擊建立專用網路,前往專用網路控制台建立,詳情請參見專用網路與交換器。
說明如果您的Serverless Spark需要訪問公網,則必須確保添加的網路連接具備公網訪問能力。例如,可以在VPC中部署一個公網NAT Gateway,以便Serverless Spark執行個體通過該網關訪問公網。更多詳情,請參見使用公網NAT GatewaySNAT功能訪問互連網。
交換器
選擇與EMR叢集部署在同一專用網路下的交換器。
如果當前可用性區域沒有交換器,請單擊虛擬交換器,前往專用網路控制台建立,詳情請參見建立和管理交換器。
重要僅支援選擇特定可用性區域下的交換器,詳情請參見使用限制。
當狀態顯示為已成功時,表示新增網路連接成功。

步驟二:為EMR叢集添加安全性群組規則
擷取已建立網路連接中指定交換器的網段。
您可以登入專用網路管理主控台的交換器頁面,擷取交換器的網段。

添加安全性群組規則。
在EMR on ECS頁面,單擊目的地組群的叢集ID。
在基础信息頁面的安全地區,單擊集群安全组後面的連結。
在安全性群組詳情頁面的訪問規則地區,單擊增加規則,填寫以下資訊,然後單擊確定。
參數
說明
協議
指定允許的網路通訊協定類型。預設為TCP。
說明如果您的網路連接用於Kerberos認證,建議選擇開放88連接埠的UDP協議。有關Kerberos認證更多資訊,請參見開啟Kerberos身份認證。
訪問來源
填寫前一步驟中擷取的指定交換器的網段。
重要為防止被外部的使用者攻擊導致安全問題,授權對象禁止填寫為0.0.0.0/0。
訪問目的(本執行個體)
指定允許訪問的目標連接埠號碼。例如,9083。
(可選)步驟三:串連Hive服務並查詢表資料
如果您已有建立並配置好的Hive表,則可以跳過該步驟。
使用SSH方式登入叢集的Master節點,詳情請參見登入叢集。
執行以下命令,進入Hive命令列。
hive執行以下命令,建立表。
CREATE TABLE my_table (id INT,name STRING);執行以下命令,向表中插入資料。
INSERT INTO my_table VALUES (1, 'John'); INSERT INTO my_table VALUES (2, 'Jane');執行以下命令,查詢資料。
SELECT * FROM my_table;
(可選)步驟四:準備並上傳資源檔
如果您後續使用JAR任務類型,則需提前準備好資源檔。如果使用本文的SparkSQL任務類型,則可以跳過該步驟。
在本地建立一個Maven工程。
使用
mvn package命令打包,編譯打包後產生sparkDataFrame-1.0-SNAPSHOT.jar檔案。在EMR Serverless Spark頁面的目標工作空間下,單擊左側的檔案管理。
在檔案管理頁面,單擊上傳檔案。
上傳本地打包好的
sparkDataFrame-1.0-SNAPSHOT.jar檔案。
步驟五:建立並運行任務
JAR任務
在EMR Serverless Spark頁面,單擊左側的資料開發。
單擊建立。
輸入名稱,類型選擇,單擊確定。
在建立的任務開發中,配置以下資訊,其餘參數無需配置,然後單擊運行。
參數
說明
主jar資源
選擇前一步驟中上傳的資源檔。例如,sparkDataFrame-1.0-SNAPSHOT.jar。
Main Class
提交Spark任務時所指定的主類。本文樣本填寫為com.example.DataFrameExample。
網路連接
選擇您在步驟一中新增的網路連接的名稱。
Spark配置
配置以下資訊。
spark.hadoop.hive.metastore.uris thrift://*.*.*.*:9083 spark.hadoop.hive.imetastoreclient.factory.class org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory其中,
*.*.*.*為HMS服務的內網IP地址,請您根據實際情況替換。本樣本為EMR叢集Master節點的內網IP地址,您可以在EMR叢集的節點管理頁面,開啟emr-master節點群組前的
表徵圖查看。運行任務後,在下方的運行記錄地區,單擊任務操作列的日誌探查。
在日誌探查頁簽,您可以查看相關的日誌資訊。
SparkSQL任務
建立並啟動SQL會話,詳情請參見管理SQL會話。
網路連接:選擇您在步驟一中新增的網路連接的名稱。
Spark配置:需要配置以下參數資訊。
spark.hadoop.hive.metastore.uris thrift://*.*.*.*:9083 spark.hadoop.hive.imetastoreclient.factory.class org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory其中,
*.*.*.*為HSM服務的內網IP地址,請您根據實際情況替換。本樣本為EMR叢集Master節點的內網IP地址,您可以在EMR叢集的節點管理頁面,開啟emr-master節點群組前的
表徵圖查看。
在EMR Serverless Spark頁面,單擊左側的資料開發。
在開發目錄頁簽下,單擊
表徵圖。在建立對話方塊中,輸入名稱(例如users_task),類型使用預設的SparkSQL,然後單擊確定。
在建立的任務開發中,選擇Catalog、資料庫和已啟動的SQL會話執行個體,輸入以下命令,並單擊運行。
SELECT * FROM default.my_table;說明當您計劃將基於外部Metastore的SQL代碼部署到工作流程時,請確保您的SQL語句以
db.table_name的形式指定表名,並且務必在介面右上方“Catalog”選項中選取一個預設庫,其格式應為catalog_id.default。下方的運行結果地區會向您展示返回資訊。
