Hadoop Hive遷移至MaxCompute

芊寶寶發表於2019-05-06

本文向您詳細介紹如何將 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複製程式碼


Hadoop Hive遷移至MaxCompute


查詢Table:

hive -e 'show tables';
hive -e 'select * from hive_sale';複製程式碼


Hadoop Hive遷移至MaxCompute


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
);複製程式碼


Hadoop Hive遷移至MaxCompute


在建表過程中,需要考慮到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;複製程式碼


Hadoop Hive遷移至MaxCompute


檢視資料檔案:


Hadoop Hive遷移至MaxCompute


2.1.2、執行Tunnel命令完成檔案上傳

進入MaxCompute控制檯,執行Tunnel upload命令完成資料上傳:

tunnel upload /home/sixiang/000000_0 daniel.maxcompute_sale;複製程式碼


Hadoop Hive遷移至MaxCompute


2.2、通過DataWorks-資料整合上傳

2.2.1、新建自定義資源組

MaxCompute所處的網路環境與Hadoop叢集中的DataNode網路通常不可達,可通過自定義資源組的方式,將DataWorks同步任務執行在Hadoop叢集的Master節點上(Hadoop叢集內Master和DataNode網路可通)

檢視Hadoop叢集DataNode:執行hadoop dfsadmin –report 命令檢視


Hadoop Hive遷移至MaxCompute


上圖可以看到,DataNode為內網地址,很難與DataWorks預設資源組互通,所以需要設定自定義資源組,將Master Node設定為執行DataWorks資料同步任務的節點。

進入DataWorks資料整合頁面,選擇資源組,點選新增資源組,如下圖所示:


Hadoop Hive遷移至MaxCompute


在新增伺服器步驟中,需要輸入機器的UUID和IP等資訊,機器IP需填寫MasterNode公網IP(內網IP可能不通)。

機器的UUID需要進入MasterNode管理終端,通過命令dmidecode | grep UUID獲取,如下所示:


Hadoop Hive遷移至MaxCompute


完成新增伺服器後,需保證Master Node與DataWorks網路可聯通;按照提示安裝自定義資源組agent,觀察當前狀態為可用,說明新增自定義資源組成功。


Hadoop Hive遷移至MaxCompute


2.2.3、新建資料來源

DataWorks新建專案後,預設設定自己為資料來源odps_first;因此我們只需新增Hadoop叢集資料來源,在DataWorks資料整合頁面,點選資料來源 > 新增資料來源,在彈框中選擇HDFS型別的資料來源。


Hadoop Hive遷移至MaxCompute


在彈出視窗中,填寫“資料來源名稱”、“DefaultFS”

如果Hadoop叢集為HA叢集,則此處地址為hdfs://IP:8020,如果Hadoop叢集為非HA叢集,則此處地址為hdfs://IP:9000。在本文中,Hadoop機器與DataWorks通過公網連線,因此此處填寫公網IP。


Hadoop Hive遷移至MaxCompute


完成配置後,點選測試連通性,如果提示“測試連通性成功”,則說明資料來源新增成功。

2.2.4、配置資料同步任務

在DataWorks“資料開發”頁面,選擇新建資料整合節點-資料同步,在匯入模板彈窗選擇資料來源型別如下:


Hadoop Hive遷移至MaxCompute


具體指令碼如下:

{
    "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 命令確認。

完成配置後,點選執行。如果提示任務執行成功,則說明同步任務已完成。


Hadoop Hive遷移至MaxCompute


2.2.5、驗證結果

在DataWorks資料開發/臨時查詢,執行select * FROM hive_sale 驗證結果,如下圖所示:


Hadoop Hive遷移至MaxCompute


當然,也可以通過在odpscmd命令列工具中SQL查詢表結果:


Hadoop Hive遷移至MaxCompute



原文連結

本文為雲棲社群原創內容,未經允許不得轉載。


相關文章