本文向您詳細介紹如何將 Hadoop Hive 資料遷移到阿里雲MaxCompute大資料計算服務上。
一、環境準備
1.1、Hadoop叢集環境
在進行 Hadoop Hive 資料遷移前,您需要保證自己的Hadoop叢集環境正常。本文使用的Hadoop環境:
- HDFS 2.8.5
- YARN 2.8.5
- Hive 3.1.1
- Ganglia 3.7.2
- Spark 2.3.2
- HUE 4.1.0
- Zeppelin 0.8.0
- Tez 0.9.1
- Sqoop 1.4.7
- Pig 0.14.0
- Knox 1.1.0
- ApacheDS 2.0.0
1.2、Hadoop Hive資料準備
Hive指令碼:
CREATE TABLE IF NOT EXISTS hive_sale(
create_time timestamp,
category STRING,
brand STRING,
buyer_id STRING,
trans_num BIGINT,
trans_amount DOUBLE,
click_cnt BIGINT
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' lines terminated by '\n';
insert into hive_sale values
('2019-04-14','外套','品牌A','lilei',3,500.6,7),
('2019-04-15','生鮮','品牌B','lilei',1,303,8),
('2019-04-16','外套','品牌C','hanmeimei',2,510,2),
('2019-04-17','衛浴','品牌A','hanmeimei',1,442.5,1),
('2019-04-18','生鮮','品牌D','hanmeimei',2,234,3),
('2019-04-19','外套','品牌B','jimmy',9,2000,7),
('2019-04-20','生鮮','品牌A','jimmy',5,45.1,5),
('2019-04-21','外套','品牌E','jimmy',5,100.2,4),
('2019-04-22','生鮮','品牌G','peiqi',10,5560,7),
('2019-04-23','衛浴','品牌F','peiqi',1,445.6,2),
('2019-04-24','外套','品牌A','ray',3,777,3),
('2019-04-25','衛浴','品牌G','ray',3,122,3),
('2019-04-26','外套','品牌C','ray',1,62,7);複製程式碼
登入Hadoop叢集,建立Hive SQL指令碼,執行Hive命令完成指令碼初始化:
hive -f hive_data.sql複製程式碼
查詢Table:
hive -e 'show tables';
hive -e 'select * from hive_sale';複製程式碼
1.3、MaxCompute環境
開通MaxCompute,請參考:help.aliyun.com/document_de…
安裝並配置MaxCompute客戶端,請參考:help.aliyun.com/document_de…
1.4、MaxCompute Create Table
CREATE TABLE IF NOT EXISTS maxcompute_sale(
create_time STRING,
category STRING,
brand STRING,
buyer_id STRING,
trans_num BIGINT,
trans_amount DOUBLE,
click_cnt BIGINT
);複製程式碼
在建表過程中,需要考慮到Hive資料型別 與 MaxCompute資料型別的對映,可參考:
help.aliyun.com/document_de…
上述通過odpscmd命令列工具完成,命令列工具安裝和配置請參考:help.aliyun.com/document_de…
注意:MaxCompute2.0支援的資料型別,包括基本資料型別和複雜型別,詳見:
help.aliyun.com/document_de…
二、Hive遷移MaxCompute操作
2.1、通過Tunnel檔案上傳
2.1.1、生成Hive資料檔案
進入Hive,執行SQL語句,下面我們將匯出到本地的資料按行以逗號進行分隔:
insert overwrite local directory '/home/sixiang/' row format delimited fields terminated by ',' select * from hive_sale;複製程式碼
檢視資料檔案:
2.1.2、執行Tunnel命令完成檔案上傳
進入MaxCompute控制檯,執行Tunnel upload命令完成資料上傳:
tunnel upload /home/sixiang/000000_0 daniel.maxcompute_sale;複製程式碼
2.2、通過DataWorks-資料整合上傳
2.2.1、新建自定義資源組
MaxCompute所處的網路環境與Hadoop叢集中的DataNode網路通常不可達,可通過自定義資源組的方式,將DataWorks同步任務執行在Hadoop叢集的Master節點上(Hadoop叢集內Master和DataNode網路可通)
檢視Hadoop叢集DataNode:執行hadoop dfsadmin –report 命令檢視
上圖可以看到,DataNode為內網地址,很難與DataWorks預設資源組互通,所以需要設定自定義資源組,將Master Node設定為執行DataWorks資料同步任務的節點。
進入DataWorks資料整合頁面,選擇資源組,點選新增資源組,如下圖所示:
在新增伺服器步驟中,需要輸入機器的UUID和IP等資訊,機器IP需填寫MasterNode公網IP(內網IP可能不通)。
機器的UUID需要進入MasterNode管理終端,通過命令dmidecode | grep UUID獲取,如下所示:
完成新增伺服器後,需保證Master Node與DataWorks網路可聯通;按照提示安裝自定義資源組agent,觀察當前狀態為可用,說明新增自定義資源組成功。
2.2.3、新建資料來源
DataWorks新建專案後,預設設定自己為資料來源odps_first;因此我們只需新增Hadoop叢集資料來源,在DataWorks資料整合頁面,點選資料來源 > 新增資料來源,在彈框中選擇HDFS型別的資料來源。
在彈出視窗中,填寫“資料來源名稱”、“DefaultFS”
如果Hadoop叢集為HA叢集,則此處地址為hdfs://IP:8020,如果Hadoop叢集為非HA叢集,則此處地址為hdfs://IP:9000。在本文中,Hadoop機器與DataWorks通過公網連線,因此此處填寫公網IP。
完成配置後,點選測試連通性,如果提示“測試連通性成功”,則說明資料來源新增成功。
2.2.4、配置資料同步任務
在DataWorks“資料開發”頁面,選擇新建資料整合節點-資料同步,在匯入模板彈窗選擇資料來源型別如下:
具體指令碼如下:
{
"configuration": {
"reader": {
"plugin": "hdfs",
"parameter": {
"path": "/user/hive/warehouse/hive_sale/",
"datasource": "hadoop_to_odps",
"column": [
{
"index": 0,
"type": "string"
},
{
"index": 1,
"type": "string"
},
{
"index": 2,
"type": "string"
},
{
"index": 3,
"type": "string"
},
{
"index": 4,
"type": "long"
},
{
"index": 5,
"type": "double"
},
{
"index": 6,
"type": "long"
}
],
"defaultFS": "hdfs://xxx.xxx.xxx.xxx:9000",
"fieldDelimiter": ",",
"encoding": "UTF-8",
"fileType": "text"
}
},
"writer": {
"plugin": "odps",
"parameter": {
"partition": "",
"truncate": false,
"datasource": "odps_first",
"column": [
"create_time",
"category",
"brand",
"buyer_id",
"trans_num",
"trans_amount",
"click_cnt"
],
"table": "maxcompute_sale"
}
},
"setting": {
"errorLimit": {
"record": "1000"
},
"speed": {
"throttle": false,
"concurrent": 1,
"mbps": "1",
"dmu": 1
}
}
},
"type": "job",
"version": "1.0"
}複製程式碼
其中,path引數為資料在Hadoop叢集中存放的位置,您可以在登入Master Node後,使用
hdfs dfs –ls /user/hive/warehouse/hive_sale 命令確認。
完成配置後,點選執行。如果提示任務執行成功,則說明同步任務已完成。
2.2.5、驗證結果
在DataWorks資料開發/臨時查詢,執行select * FROM hive_sale 驗證結果,如下圖所示:
當然,也可以通過在odpscmd命令列工具中SQL查詢表結果:
本文為雲棲社群原創內容,未經允許不得轉載。