Hadoop Hive迁移至MaxCompute

简介: 本文向您详细介绍如何将 Hadoop Hive 数据迁移到阿里云MaxCompute大数据计算服务上。

本文向您详细介绍如何将 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

image

查询Table:

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

image

1.3、MaxCompute环境

开通MaxCompute,请参考:https://help.aliyun.com/document_detail/58226.html

安装并配置MaxCompute客户端,请参考:https://help.aliyun.com/document_detail/27804.html

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
);

image

在建表过程中,需要考虑到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

二、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;

image

查看数据文件:

image

2.1.2、执行Tunnel命令完成文件上传

进入MaxCompute控制台,执行Tunnel upload命令完成数据上传:

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

image

2.2、通过DataWorks-数据集成上传

2.2.1、新建自定义资源组

MaxCompute所处的网络环境与Hadoop集群中的DataNode网络通常不可达,可通过自定义资源组的方式,将DataWorks同步任务运行在Hadoop集群的Master节点上(Hadoop集群内Master和DataNode网络可通)

查看Hadoop集群DataNode:执行hadoop dfsadmin –report 命令查看

image

上图可以看到,DataNode为内网地址,很难与DataWorks默认资源组互通,所以需要设置自定义资源组,将Master Node设置为执行DataWorks数据同步任务的节点。

进入DataWorks数据集成页面,选择资源组,点击新增资源组,如下图所示:

image

在添加服务器步骤中,需要输入机器的UUID和IP等信息,机器IP需填写MasterNode公网IP(内网IP可能不通)。

机器的UUID需要进入MasterNode管理终端,通过命令dmidecode | grep UUID获取,如下所示:

image

完成添加服务器后,需保证Master Node与DataWorks网络可联通;按照提示安装自定义资源组agent,观察当前状态为可用,说明新增自定义资源组成功。

image

2.2.3、新建数据源

DataWorks新建项目后,默认设置自己为数据源odps_first;因此我们只需添加Hadoop集群数据源,在DataWorks数据集成页面,点击数据源 > 新增数据源,在弹框中选择HDFS类型的数据源。

image

在弹出窗口中,填写“数据源名称”、“DefaultFS”

如果Hadoop集群为HA集群,则此处地址为hdfs://IP:8020,如果Hadoop集群为非HA集群,则此处地址为hdfs://IP:9000。在本文中,Hadoop机器与DataWorks通过公网连接,因此此处填写公网IP。

image

完成配置后,点击测试连通性,如果提示“测试连通性成功”,则说明数据源添加成功。

2.2.4、配置数据同步任务

在DataWorks“数据开发”页面,选择新建数据集成节点-数据同步,在导入模板弹窗选择数据源类型如下:

image

具体脚本如下:

{
    "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 命令确认。

完成配置后,点击运行。如果提示任务运行成功,则说明同步任务已完成。

image

2.2.5、验证结果

在DataWorks数据开发/临时查询,执行select * FROM hive_sale 验证结果,如下图所示:

image

当然,也可以通过在odpscmd命令行工具中SQL查询表结果:

image

目录
相关文章
|
4天前
|
存储 分布式计算 Hadoop
大数据处理架构Hadoop
【4月更文挑战第10天】Hadoop是开源的分布式计算框架,核心包括MapReduce和HDFS,用于海量数据的存储和计算。具备高可靠性、高扩展性、高效率和低成本优势,但存在低延迟访问、小文件存储和多用户写入等问题。运行模式有单机、伪分布式和分布式。NameNode管理文件系统,DataNode存储数据并处理请求。Hadoop为大数据处理提供高效可靠的解决方案。
22 2
|
3月前
|
SQL 关系型数据库 MySQL
Hive跨集群和版本迁移
Hive跨集群和版本迁移
|
4天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
6天前
|
SQL 分布式计算 Hadoop
利用Hive与Hadoop构建大数据仓库:从零到一
【4月更文挑战第7天】本文介绍了如何使用Apache Hive与Hadoop构建大数据仓库。Hadoop的HDFS和YARN提供分布式存储和资源管理,而Hive作为基于Hadoop的数据仓库系统,通过HiveQL简化大数据查询。构建过程包括设置Hadoop集群、安装配置Hive、数据导入与管理、查询分析以及ETL与调度。大数据仓库的应用场景包括海量数据存储、离线分析、数据服务化和数据湖构建,为企业决策和创新提供支持。
35 1
|
23天前
|
消息中间件 SQL 分布式计算
大数据Hadoop生态圈体系视频课程
熟悉大数据概念,明确大数据职位都有哪些;熟悉Hadoop生态系统都有哪些组件;学习Hadoop生态环境架构,了解分布式集群优势;动手操作Hbase的例子,成功部署伪分布式集群;动手Hadoop安装和配置部署;动手实操Hive例子实现;动手实现GPS项目的操作;动手实现Kafka消息队列例子等
18 1
大数据Hadoop生态圈体系视频课程
|
25天前
|
SQL 数据可视化 Apache
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
阿里云数据库 SelectDB 内核 Doris 的 SQL 方言转换工具, Doris SQL Convertor 致力于提供高效、稳定的 SQL 迁移解决方案,满足用户多样化的业务需求。兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移。
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
|
3月前
|
SQL 数据采集 分布式计算
Hadoop和Hive中的数据倾斜问题及其解决方案
Hadoop和Hive中的数据倾斜问题及其解决方案
37 0
|
3月前
|
SQL 分布式计算 安全
HIVE启动错误:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeExcept
HIVE启动错误:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeExcept
124 0
|
3月前
|
SQL 存储 分布式计算
Hadoop中的Hive是什么?请解释其作用和用途。
Hadoop中的Hive是什么?请解释其作用和用途。
35 0
|
4月前
|
分布式计算 资源调度 搜索推荐
《PySpark大数据分析实战》-02.了解Hadoop
大家好!今天为大家分享的是《PySpark大数据分析实战》第1章第2节的内容:了解Hadoop。
44 0
《PySpark大数据分析实战》-02.了解Hadoop

相关产品

  • 云原生大数据计算服务 MaxCompute