天天看点

Hadoop数据迁到MaxCompute

通过最佳实践帮助您实现上述案例效果

接下来,我们需要准备好一张表及数据集;

hive表名:hive_dplus_good_sale;

是否分区表:分区表,分区名为pt;

hdfs文件数据列分隔符:英文逗号;

表数据量:100条。

源hive表建表语句

数据预览如下:

Hadoop数据迁到MaxCompute
Hadoop数据迁到MaxCompute

hdfs&datax类型对照表

在hive表中的数据类型

datax 内部类型

tinyint,smallint,int,bigint

long

float,double,decimal

double

string,char,varchar

string

boolean

date,timestamp

date

binary

1.1 开通maxcompute

Hadoop数据迁到MaxCompute
Hadoop数据迁到MaxCompute
Hadoop数据迁到MaxCompute

1.2 数加上创建maxcompute project

操作步骤:

Hadoop数据迁到MaxCompute

步骤2:创建项目。付费模式选择i/o后付费,输入项目名称:

Hadoop数据迁到MaxCompute

步骤3:创建maxcompute表。进入大数据开发套件的数据开发页面:

Hadoop数据迁到MaxCompute

新建表

Hadoop数据迁到MaxCompute

对应建表语句:

maxcompute中的结构化数据是以表的形式存在,我们可以通过工具或者api将数据直接写入表中。

网络传输

datax是阿里开源的一款工具,可以适配常见的数据源,包括关系数据库、文本文件等,这是一款单机的软件,适用于中小数据量的传输,传输效率按照单机网卡 50%(约50mb/s)计算,一天可以传输的数据量为

50mb/s 60 60 * 24 / 1024/1024 ≈ 4t

具体的传输效率会取决于网络环境(机房出口带宽、本地网络),机器性能,文件格式与数量等多个因素。

使用datax传输数据到odps的部署结构如下,在ecs机器或一台物理机器上部署好datax,此机器要能够同时连通数据源与maxcompute(原odps)服务。

Hadoop数据迁到MaxCompute

sqoop可以并行起多个任务导出数据,相比datax可以取得更好的性能。

磁盘导入

当数据量比较大(pb级别以上)时,可以考虑通过磁盘将数据导入odps,需要磁盘导入请联系相应的大数据业务架构师。

api: tunnel sdk

当数据源较特殊,无法使用以上现有的工具的时候,可以用sdk编写适配的工具,从数据源读出并写入odps中,tunnel是数据上传的底层接口,可以同时接受大量客户端并行的写入。

<a href="https://help.aliyun.com/document_detail/27837.html?spm=5176.doc34614.6.144.ryeiri">https://help.aliyun.com/document_detail/27837.html?spm=5176.doc34614.6.144.ryeiri</a>

ecs机器部署

前提准备:获取ecs的主机名和ip:

Hadoop数据迁到MaxCompute

步骤1:增加调度资源。大数据开发套件-&gt;项目管理-&gt;调度资源管理-&gt;增加调度资源,输入名称和标识hive2mc:

Hadoop数据迁到MaxCompute

步骤2:添加配置ecs服务器:

Hadoop数据迁到MaxCompute

输入前提准备中获取到的ecs服务器名称和ip,点击添加。

步骤3:初始化ecs服务器:

Hadoop数据迁到MaxCompute

按照弹框提示,登录ecs服务器(登录外网ip)在root用户下执行两个命令,即部署相关datax等服务。

命令执行成功后,回到“管理服务器”页面,点击刷新按钮可以看到服务器状态为“正常”状态:

Hadoop数据迁到MaxCompute

此时该项目的调度资源组就有两个:默认资源组、刚添加成功的资源组,后面执行datax任务即使用刚添加成功的资源组进行调度运行。

任务配置

前提准备:查看hive表对应数据文件地址

Hadoop数据迁到MaxCompute

步骤1:前面ecs机器部署介绍的资源组配置好后,导航上点击进入“数据开发”页面进行任务开发。

Hadoop数据迁到MaxCompute

步骤2:创建工作流,命名为hive2mc_demo,选择一次性调度(本case是做一次性迁移,若需要每日生产调度则选择周期调度):

Hadoop数据迁到MaxCompute

步骤3:在工作流中创建shell节点:

Hadoop数据迁到MaxCompute

步骤4:代码配置。shell节点创建后,双击节点图,进入代码编辑器进行shell代码编辑。

代码中进行datax配置,reader为hdfsreader,writer为odpswriter,具体代码如下,只需要修改reader和writer的配置:

hdfsreader

path:hive表hdfs文件路径(注意格式);

defaultfs: hdfs文件系统namenode节点地址(注意格式);

index:hdfs数据文本第几列,以0开始。

type:hdfs数据对应datax的类型,请看hdsf&amp;datax类型对照表;

filetype: hdfs数据文件类型;

encoding: hdfs数据文件的编码;

fielddelimiter: hdfs数据文件字段分隔符。

odpswriter

project: maxcompute目标表所属项目名称;

table: maxcompute目标表名称;

partition:表分区值,此case直接用固定值;

column:目标表列,注意顺序与reader的列顺序一一对应;

accessid:写入目标表所用的云账号access id;

accesskey:写入目标表所用的云长access key;

truncate:写入前是否清空当前表/分区数据,需要清空就true,需要保留就false。

步骤5:保存shell节点,提交工作流。

Hadoop数据迁到MaxCompute

步骤6:指派执行资源组。这里将给shell任务指定执行的机器即我们前面部署的ecs。

Hadoop数据迁到MaxCompute

hive2mc资源组即为《ecs机器部署》章节中配置的资源组。资源组配置好后,后面就可以执行shell任务进行数据迁移。

接前面的步骤,点击shell节点的操作-&gt;流程:

Hadoop数据迁到MaxCompute
Hadoop数据迁到MaxCompute

进入该节点的任务管理视图界面,右击节点图,选择测试节点,即可把该阶段调度执行起来:

Hadoop数据迁到MaxCompute

示例名称和业务日期采用默认,直接点击生成并运行,然后点击“前往查看运行结果”。

Hadoop数据迁到MaxCompute

进入测试实例视图,可以看到节点示例执行状态,如下图变成绿色打勾的符号说明执行成功,右击节点图选择 查看运行日志 查看具体执行日志。

Hadoop数据迁到MaxCompute

查看日志中读出100条,写入失败0条,说明成功写入100条数据;

Hadoop数据迁到MaxCompute

可以到数据开发中创建一个脚本文件

Hadoop数据迁到MaxCompute

运行代码:

查看数据是否正常。

Hadoop数据迁到MaxCompute

也可以执行

<code>select count(*) from mc_dplus_good_sale where pt=20160618;</code>

查看是否导入的数据是否是100条。

Hadoop数据迁到MaxCompute