大数据篇-sqoop学习

1.Introduction

Sqoop is a tool designed to transfer data between Hadoop and relational databases or mainframes. You can use Sqoop to import data from a relational database management system (RDBMS) such as MySQL or Oracle or a mainframe into the Hadoop Distributed File System (HDFS), transform the data in Hadoop MapReduce, and then export the data back into an RDBMS.

2.Sqoop数据数据转换工具
2.1.同步Mysql数据到Hive

sqoop.apache.org/docs/1.4.6/…

3.数据同步:全量和增量
3.1.引入

数据如果保留多份,就会存在一致性问题,就需要同步,同步分为两大类:全量和增量

3.2概括

数据如果要保留副本,要么同时写(就是多写),或者进行复制:异步写(即从主数据拷贝到副本);同时写(多写),引出一个问题,写多少节点算成功(场景:分布式系统)?全部写成功才算成功,还是写大多数成功算成功,还是写指定几个节点算成功?异步写的话,如果采用异步复制,那么实时性需要考量的话,就需要采用性能优先的架构。

3.3.同步的方式

数据同步一般分为两种方式:全量和增量。

3.3.1 全量

全量:每天定时(避开业务高峰期)或者周期性全量把数据从一个地方拷贝到另外一个地方;

全量的话,可以采用直接全部覆盖(使用“新”数据覆盖“旧”数据);或者走更新逻辑(覆盖前判断下,如果新旧不一致,就更新);

这里面有一个隐藏的问题:如果采用异步写,主数据物理删除了,怎么直接通过全量数据同步?这就需要借助一些中间操作日志文件,或者其他手段,把这些“看不到”的数据记录起来。

3.3.2 增量

增量的基础是全量,就是你要使用某种方式先把全量数据拷贝过来,然后再采用增量方式同步更新。

增量:指抓取某个时刻(更新时间)或者检查点(checkpoint)以后的数据来同步,不是无规律的全量同步。这里引入一个关键性的前提:副本一端要记录或者知道(通过查询更新日志或者订阅更新)哪些更新了。

3.3.2.1.确定更新点

采用更新时间戳、有的采用checkpoint等来标识和记录更新点。

4.全量同步示例:
4.1.全量同步
import
--connect
${jdbcUrl}
--connection-param-file
jdbc_options.txt
--username
${jdbcUserName}
--password-file
/user/admin/etl/conf/passwd
--query
SELECT id, date AS date, m AS month, q AS quarter, y AS year FROM time_dimension WHERE $CONDITIONS
--boundary-query 
select min(id), max(id) from time_dimension
--split-by
id
-m
4
--null-non-string
'0'
--fetch-size
100
--delete-target-dir
--target-dir
/etl/dzj/full_mysql_date_dim
--fields-terminated-by
'\"'
--hive-drop-import-delims
--hive-overwrite
--hive-import
--hive-table
dzj.test_date_dim
复制代码
增量同步

两种增量同步模式:append,lastmodified append适合于数据只有新增的情况,lastmodified适合于数据有更新的情况

job
--create
job_inc_syn_mysql_user_first_login_fact
--
import
--connect
${jdbcUrl}
--connection-param-file
jdbc_options.txt
--username
${jdbcUserName}
--password-file
/user/admin/etl/conf/passwd
--query
select user_first_login_record.user_id, date(user_first_login_record.first_login_date) as login_date,user_first_login_record.first_login_date as login_time from user_first_login_record where $CONDITIONS
--boundary-query
select min(user_first_login_record.first_login_date), max(user_first_login_record.first_login_date) from user_first_login_record
--split-by
user_first_login_record.first_login_date
-m
4
--null-non-string
'0'
--fetch-size
100
--target-dir
/user/hive/warehouse/dzj.db/user_first_login_fact
--fields-terminated-by
'\"'
--hive-drop-import-delims
--check-column
login_time
--incremental
lastmodified
--last-value
'2018-10-30 00:00:00'
--merge-key
id
复制代码
5.HUE创建job

6.HUE创建job

7. 在sqoop过程中要初步清洗事实表和纬度表

HDFS文件存储 服务器看不到,,bolck块。 Job Brower:执行任何一个日志 HQL HIV 本质HIVE转MapReduce() Job 日志 mapreduce执行成功没

视图:大的fact表创建视图 数据变化, 多一个字段少一个字段 视图不会根据fact表的改动而改动。

一个Model可以建多个cube. Hbase:打点数据 助诊因子

集群和时钟同步

安装mysql非必须用

角色:分配角色 HDFS:三个DataNode 根据NameNode拿到。

重启服务,不是重启机器

blog.csdn.net/wh211212/ar…

www.jianshu.com/p/02a84b96f…

各个组建的库名:存放组建的配置信息

User 分布式读取 limit读取 1小时

数据仓库的存储 只要再跑一下就好

workflow job accept 公平调度 Hbase Hive存储要走HDFS HDFS权限

文件夹的位置/配置文件:密码 jdbc Hive文件 HDFS git 看log

Hue oozie规范 _1 _2全量 交换的build 老的干掉

当一个fact数据变更 以前的数据也修复 当一个cube 1 2

re 每次执行全量的时候, dis 晴空 全跑 每天需要全量 recovery -x 自动执行正在用的比如1 2 disable

定时器:每天什么时候跑,,正在等待调度,,一直处于Running状态。

Oozie设置:很多小workflow。也可以创建比较大的workfollow ,然后串小的workfollow。

并行:mapReduce的过程,所有都有分发的。 Oozie:底层计算引擎是mapReduce。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值