Hadoop Hive遷移至MaxCompute

本文向您詳細介紹如何將 Hadoop Hive 數據遷移到阿里雲MaxCompute大數據計算服務上。html

1、環境準備

1.一、Hadoop集羣環境

在進行 Hadoop Hive 數據遷移前,您須要保證本身的Hadoop集羣環境正常。本文使用的Hadoop環境:sql

  • 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.二、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:ide

hive -e 'show tables';
hive -e 'select * from hive_sale';

1.三、MaxCompute環境

開通MaxCompute,請參考:https://help.aliyun.com/document_detail/58226.html工具

安裝並配置MaxCompute客戶端,請參考:https://help.aliyun.com/document_detail/27804.htmloop

1.四、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數據類型的映射,可參考:
https://help.aliyun.com/document_detail/54081.html測試

上述經過odpscmd命令行工具完成,命令行工具安裝和配置請參考:https://help.aliyun.com/document_detail/27804.html大數據

注意:MaxCompute2.0支持的數據類型,包括基本數據類型和複雜類型,詳見:
https://help.aliyun.com/document_detail/27821.html阿里雲

2、Hive遷移MaxCompute操做

2.一、經過Tunnel文件上傳

2.1.一、生成Hive數據文件

進入Hive,執行SQL語句,下面咱們將導出到本地的數據按行以逗號進行分隔:

insert overwrite local directory  '/home/sixiang/' row format delimited fields terminated by ',' select * from hive_sale;

查看數據文件:

2.1.二、執行Tunnel命令完成文件上傳

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

tunnel upload /home/sixiang/000000_0 daniel.maxcompute_sale;

2.二、經過DataWorks-數據集成上傳

2.2.一、新建自定義資源組

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.三、新建數據源

DataWorks新建項目後,默認設置本身爲數據源odps_first;所以咱們只需添加Hadoop集羣數據源,在DataWorks數據集成頁面,點擊數據源 > 新增數據源,在彈框中選擇HDFS類型的數據源。

在彈出窗口中,填寫「數據源名稱」、「DefaultFS」

若是Hadoop集羣爲HA集羣,則此處地址爲hdfs://IP:8020,若是Hadoop集羣爲非HA集羣,則此處地址爲hdfs://IP:9000。在本文中,Hadoop機器與DataWorks經過公網鏈接,所以此處填寫公網IP。

完成配置後,點擊測試連通性,若是提示「測試連通性成功」,則說明數據源添加成功。

2.2.四、配置數據同步任務

在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.五、驗證結果

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

固然,也能夠經過在odpscmd命令行工具中SQL查詢表結果:


原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索