遷移服務(MMA)
MaxCompute提供的數(shù)據(jù)遷移服務支持通過MMA(MaxCompute Migration Assist)服務,將Hive數(shù)據(jù)安全且高效地遷移到MaxCompute。
遷移流程
使用限制
不支持遷移Hive數(shù)據(jù)至已開啟Schema功能的MaxCompute項目。關于Schema介紹詳情,請參見Schema操作。
已開啟Schema功能不支持關閉。
步驟一:安裝UDTF
使用MaxCompute遷移功能時,需要在Hive服務器上安裝UDTF(Unified Data Transfer Service)并自定義Hive UDTF函數(shù),利用Hive UDTF函數(shù)來獲取、轉(zhuǎn)換、上傳數(shù)據(jù)到MaxCompute,以實現(xiàn)復雜數(shù)據(jù)的遷移。關于Hive UDTF詳情,請參見UDTF。
根據(jù)Hive版本下載UDTF jar包。
執(zhí)行以下命令,上傳UDTF jar至HDFS。本文以
mma-udtf-hive2.jar
為例。hdfs dfs -put -f mma-udtf-hive2.jar hdfs:///tmp/
使用Beeline或Hive命令登錄Hive,創(chuàng)建Hive UDTF。
DROP FUNCTION IF EXISTS default.odps_data_dump_multi; CREATE FUNCTION default.odps_data_dump_multi as 'com.aliyun.odps.mma.io.McDataTransmissionUDTF' USING JAR 'hdfs:///tmp/mma-udtf-hive2.jar';
加載自定義函數(shù)Hive UDTF。
需要在Beeline命令行界面,執(zhí)行以下命令。
reload function;
說明如果有多個Hive Server2實例,要依次使用Beeline命令行界面,執(zhí)行以上命令。
步驟二:安裝并啟動MMA服務
MMA網(wǎng)絡架構圖
MMA作為連接Hive網(wǎng)絡環(huán)境和MaxCompute之間的中轉(zhuǎn)節(jié)點,其網(wǎng)絡架構圖如下所示。
環(huán)境準備
計劃安裝MMA服務的服務器,需滿足以下要求:
安裝JDK 8版本的Java。
能夠訪問Hive MetaStore和Hive Server2,以及MaxCompute的服務接入點。
操作步驟
根據(jù)Hive版本下載對應版本的MMA jar包。本文以
mms-agent-hive2.jar
為例。在jar包相同目錄下,新增并配置
config.ini
文件。config.ini
文件示例內(nèi)容如下。[mms] region = cn-hangzhou endpoint = maxcompute.cn-hangzhou.aliyuncs.com access_id = LTAI5tM2iHkTd4W69nof**** access_key = S0uZvwDYDa56WZ1tjVmA67z1YS**** mc_endpoint = http://service.cn-hangzhou.maxcompute.aliyun.com/api mc_data_endpoint = http://service.cn-hangzhou.maxcompute.aliyun.com/api mc_tunnel_endpoint = http://dt.cn-hangzhou.maxcompute.aliyun.com [agent] name = mmaagent_doc is_in_vpc = false
參數(shù)說明
參數(shù)名稱
是否必填
說明
region
是
Hive安裝的地域ID。各地域ID詳情,請參見服務接入點。
endpoint
是
MMA服務連接地址。各地域連接地址詳情,請參見服務接入點。
access_id
是
阿里云賬號或RAM用戶的AccessKey ID。
您可以進入AccessKey管理頁面獲取AccessKey ID。
access_key
是
AccessKey ID對應的AccessKey Secret。
您可以進入AccessKey管理頁面獲取AccessKey Secret。
mc_endpoint
是
訪問MaxCompute服務的連接地址。各地域及網(wǎng)絡對應的Endpoint值,請參見Endpoint。
mc_data_endpoint
否
Hive訪問MaxCompute服務的連接地址。各地域及網(wǎng)絡對應的Endpoint值,請參見Endpoint。
說明僅MMA與Hive不在同一網(wǎng)絡環(huán)境時,需配置此參數(shù)。
mc_tunnel_endpoint
否
Tunnel服務的外網(wǎng)訪問鏈接。如果您未配置Tunnel Endpoint,Tunnel會自動路由到MaxCompute服務所在網(wǎng)絡對應的Tunnel Endpoint。如果您配置了Tunnel Endpoint,則以配置為準,不進行自動路由。
各地域及網(wǎng)絡對應的Tunnel Endpoint值,請參見Endpoint。
source_id
否
數(shù)據(jù)源ID。若配置此參數(shù),當前MMA服務將與數(shù)據(jù)源綁定。
說明在數(shù)據(jù)源管理頁簽,單擊目標數(shù)據(jù)源操作列中的編輯,然后查看URL,獲取
source_id
其格式為/mms/source/{source_id}/config
。name
是
MMA服務名稱,租戶級別下MMA名稱不能重復。本文以
mmaagent_doc
為例。is_in_vpc
否
MMA服務是否運行在阿里云VPC內(nèi),默認為false。
執(zhí)行以下命令,啟動MMA服務。
java -jar mms-agent-hive2.jar -c config.ini
返回如下圖所示,即啟動成功。
步驟三:數(shù)據(jù)遷移
前提條件
阿里云賬號或RAM用戶已開通MaxCompute服務。
默認只有阿里云賬號可以創(chuàng)建、配置和刪除項目以及變更項目狀態(tài),如果您需要以RAM用戶管理MaxCompute項目,請確認已獲取RAM用戶賬號并已授予AliyunMaxComputeFullAccess系統(tǒng)策略或自定義RAM策略權限。
更多創(chuàng)建或獲取RAM用戶信息操作,請參見準備RAM用戶。
創(chuàng)建Hive數(shù)據(jù)源
登錄MaxCompute控制臺,在左上角選擇地域。
在左側(cè)導航欄,選擇
。在數(shù)據(jù)源管理頁簽,單擊新增數(shù)據(jù)源,配置數(shù)據(jù)源參數(shù)。
基本信息
參數(shù)名稱
是否必填
說明
數(shù)據(jù)源名稱
是
數(shù)據(jù)源的名稱。
數(shù)據(jù)源類型
是
待遷移的數(shù)據(jù)源類型,當前僅支持Hive。
Agent名稱
是
選擇已配置的MMA服務名稱,本文創(chuàng)建的名稱為
mmaagent_doc
。Metastore地址
是
Hive MetaStore服務的訪問地址。
Jdbc連接串
是
Hive JDBC的連接信息。格式為
jdbc:hive2://localhost:10000/default
。Jdbc用戶名
是
Hive JDBC的用戶名稱。
Jdbc密碼
否
Hive JDBC的密碼。
用于執(zhí)行Maxcompute Sql的Project
是
選擇遷移至MaxCompute的項目。
如果Hive開啟了Kerberos協(xié)議認證,需要填寫以下參數(shù)。
參數(shù)名稱
說明
Kerberos認證
打開Kerberos協(xié)議認證開關。
說明默認是Kerberos協(xié)議認證開關是關閉的。
Kerberos Principal
Kerberos身份認證標識。
Keytab文件
上傳Kerberos的服務端配置文件。
Krb5.conf文件
上傳Kerberos的客戶端配置文件。
其他信息,您可以根據(jù)需要選擇配置以下參數(shù)。
參數(shù)名稱
說明
單個任務處理的最多分區(qū)數(shù)量
需要遷移的分區(qū)數(shù)量的最大值。
單個任務處理的最大數(shù)量(單位GB)
需要遷移的分區(qū)數(shù)據(jù)大小的最大值。
Hive Job配置
Hive引擎相關的任務參數(shù),默認為MR引擎的部分配置。
說明該配置用于解決YARN容器內(nèi)存不足、指定Spark運行隊列等問題。
數(shù)據(jù)庫白名單
需要遷移的Hive數(shù)據(jù)庫,多個值之間以英?逗號分隔。
數(shù)據(jù)庫黑名單
不需要遷移的Hive數(shù)據(jù)庫,多個值之間以英?逗號分隔。
Metastore訪問并發(fā)量
訪問Hive MetaStore的并發(fā)量,用于提高獲取Hive元數(shù)據(jù)的速度。
表黑名單
不需要遷移的Hive數(shù)據(jù)庫表。
單個表的格式為
dbname.tablename
, 多個表之間以英?逗號分隔。表白名單
需要遷移的Hive數(shù)據(jù)庫表。
單個表的格式為
dbname.tablename
,多個表之間以英?逗號分隔。數(shù)據(jù)搬遷任務最大并發(fā)量
數(shù)據(jù)遷移并發(fā)數(shù)。
配置完成后,單擊新增。
在數(shù)據(jù)源管理頁簽,單擊數(shù)據(jù)源列表操作列中的更新元數(shù)據(jù)。
更新元數(shù)據(jù)將獲取當前Hive數(shù)據(jù)源中的數(shù)據(jù)庫信息。如果數(shù)據(jù)量較大,可能需要幾分鐘才能完成更新。
創(chuàng)建遷移計劃
選擇目標數(shù)據(jù)源,查看數(shù)據(jù)源下待遷移的數(shù)據(jù)庫列表。
您可以按照實際遷移需求,選擇整庫遷移或部分遷移。
整庫遷移
單擊待遷移數(shù)據(jù)庫列表操作列中的整庫遷移。
部分遷移
單擊待遷移數(shù)據(jù)庫列表操作列中的部分遷移。
在表列表頁簽或分區(qū)列表頁簽,勾選需要遷移的表或分區(qū)。
單擊新建遷移計劃。
在新建遷移計劃頁面,配置以下參數(shù)。
參數(shù)名稱
是否必填
說明
計劃名稱
是
遷移計劃的名稱。
數(shù)據(jù)源
是
Hive數(shù)據(jù)源名稱。
源庫
是
源數(shù)據(jù)庫名稱。
目標MaxCompute項目
是
目標MaxCompute項目名稱。
table黑白名單
否
配置需要遷移或不需要遷移的表,多個表之間使用英文逗號進行分隔。
說明如果未配置則默認將遷移源庫中的所有表。
表白(黑)名單
否
開啟校驗
否
校驗源表與目標表的記錄數(shù)。若開啟校驗,當校驗結果不一致,會提示校驗不通過。
增量遷移
否
增量遷移數(shù)據(jù),默認開啟。
說明在開啟增量遷移后,已經(jīng)成功遷移的分區(qū)或表數(shù)據(jù)將被跳過,不會再次進行遷移。
只遷移表結構
否
默認情況下,開啟后僅遷移表結構,而不遷移數(shù)據(jù)。
分區(qū)過濾
否
配置分區(qū)過濾條件,詳情請參見分區(qū)過濾表達式說明。
表名映射
否
設置遷移到目標MaxCompute項目后的表名稱。
配置完成后,單擊提交。
您可以在遷移計劃管理頁簽,查看已提交的遷移計劃的狀態(tài)和遷移進度。
更多操作
更新或刪除數(shù)據(jù)源信息
在數(shù)據(jù)源管理頁簽,單擊目標數(shù)據(jù)源操作列中編輯或刪除,進行更新或刪除數(shù)據(jù)源信息。
管理遷移計劃
在遷移計劃管理頁簽,您可以進行以下操作:
停止遷移計劃:單擊目標遷移計劃操作列中的停止。
啟動遷移計劃:單擊目標遷移計劃操作列中的開始。
刪除遷移計劃:單擊目標遷移計劃操作列中的刪除。
說明刪除遷移計劃時,如果計劃正在進行中,已完成遷移的數(shù)據(jù)將不會被刪除。
查看遷移計劃詳情:單擊目標遷移計劃操作列中的詳情,在遷移任務列表,單擊目標遷移任務操作列中的日志,查看遷移計劃的日志詳情。