开发者学堂课程【快速掌握阿里云 E-MapReduce: E-Mapreduce 数据同步】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/390/detail/5002
E-Mapreduce 数据同步
内容介绍
一、基本概念
二、数据传输
一、基本概念
数据同步主要是把别的系统数据同步到 ECS-EDM 里面去
基本概念:(一些名字例如)
1. OSS
2. RDS:例如数据库、mysql
3. 数据集成(CDP):就是内部开发的一个数据连之间互相导向的一个工具、一个网页配置
4. Sqoop:它就是一个中间键
二、数据传输
步骤问题:以下各步骤的操作方法,期间会写脚本去访问 Hive
1、 上传本地文件到 OSS
(1)、首先要有一个源,这个源就是数据库里的一个表,因为需要从数据库中导出来,大概如下图所示:
会从其中新建一个实例,也就是建一个数据库;里面有一个账号然后先进入库,再进入账号;完成好了以后,点击数据安全性,它就是需要在 rds这边设置一个白名单,这个白名单就是可以控制哪些地方可以访问 rds
大概就是配的 cdp 的白名单,这些ip需要记住,emr 集群,因为需要跑 sqoop 需要配置emr集群白名单放在这里,也可以去 emr 里去找内网 IP,如图所示:
如果觉得空了一台机器麻烦,便可以做一些方案优化它,把白名单配好,数据库做好可以登录到库,回到云数据库管理页面,选择登陆数据库
点击登录,便会出现一张现成的 student 表,打开表,执行
SELECT * FROM “student” limit 10;代码,便会出现以下结果表:
也可以导入文件,导入到学生数据文件中
因为数据少可以直接导入,如果数据很多,也可以通过别的方式传上去,也可以新增一条条写下来,这是第一个导数据到OSS里边。
(2)、可以直接打开 OSS 界面,新建一个 Bucket,例如这里建好了一个 testemr这样的一个 Bucket,里边有些数据,比如有一个 example-shaded 包现将它删掉,再重新导入,便导入进来了;它也有一些工具,大家可以下载使用,都是方便的图形化工具,也支持写代码的操作;如果不会操作,可以点击帮助与文档点击如何进行大文件上传;)
2、 通过 CDP 把 RDS 的数据同步到 OSS 中
CDP同步原理:RDS(通过数据传输)——CDP 同步集群(数据传输)——OSS 服务
(1)、配置网络白名单
要配置 CDP 集群的白名单,如果说是 CDP 也可以通过 ecs 机器,配置 ecs 的白名单
(2)、配置同步任务
先点击到数据集成,先到 Pipeline 列表,这里大概有两种,分别是 ECS Pipeline(用ECS 机器)和普通 Pipeline(用默认的机器);新建一个 Pipeline 名为 rds_2_oss5,再从中创建一个作业,点击 JSON 视图,因为从 rds 到 oss 没有默认的,便把 JSON 的配置文件拷贝过去,放在如图白框中,从 MySQL 到 OSS
这里有一些配置参数需要根据自己的参数修改配置,例如名称的不统一,另外就是数据库、表、账户、密码、字段,有很多模式可以查看手册,另外就是到 oss,point、id、key、bucket 下出仓是哪个需要同步到 school/student 目录下,假如删除 student 文件,然后到数据集成作业管理运行文件,如有错误会显示失败,会显示错误地方(错误原因一般是相关的配置没配好,或者权限没开),运行成功,便会显示传过的数据。
3、 Hive 访问 OSS 数据
CREATE database school:
DROP TABLE student:
CREATE EXTERNAL TABLE student(
id string,
name string,
age int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY','
STORED AS TEXTFILE
LOCATION
'oss://93recQArCQwaJPOd:KHRaOzQgrJVZweuAVfEB4KNHDUlu6getestemr.oss-cn-hangzhou-internal.aliyuncs.com/warehouse/school/student':
select * from student limit 10:
先通过 getbash 登录集群,先连接集群,到 hadoop 里操作,然后进入 Hive,到root 下可能会有权限问题,不要在 root 下运行
将文件 student 和 table 都 drop 掉,然后新建一个表,代码如下:
Hive>CREATE EXTERNAL TABLE student(
> id string,
>name string,
>age int)
>R0W FORMAT DELIITED
>FIELDS TERMINATED BY
’
.
’
> STORED AS TEXWFIE
>
L
OCATION
’
oss:
/
/93recQArCQvaJPOd:KHRa0zQgrJVZweuAVfEB4KNHDU1u6g@textemr.oss-cn-hangzhou-internal.aliyuncs.com/varrhouse/school/student
4、 通过 SQOOP 把 RDS 的数据同步到 HDFS 中
RDS 输入产出是在 Slave 上起一个 maptask,把数据导过来,要配 rds 的白名单,安装 sqoop,演示如下:
再同步一下,便会提交一个MapReduce的作业,也就是讲map放到splits下,可以调速度、带宽,运行成功,查看文件是否存在,然后写hive脚本,建一个表,再仿写这时候location显示本地仓库。代码如下:
Hive>CREATE EXTERNAL TABLE student2(
> id string,
>name string,
>age int)
>R0W FORMAT DELIITED
>FIELDS TERMINATED BY
’
.
’
> STORED AS TEXWFIE
>
L
OCATION
’
/warehouse/school/student2
OK
Time taken:0.288 seconds
Hive> select* form student2 limit 10;,
查询结果如下:
另一个方式就是用 hadoop 提供的 mapred distcp 就可以
放入data下面,直接运行一个作业,成功后,查看是否有文件
5、 通过 MR distcp 把数据从 OSS 同步到 HDFS 中
OSS服务(通过数据传输DiskCp)——EMR集群