hadoop生态之sqoop

el/2024/7/13 11:30:20

序言

    在使用大数据的时候,各种不同的数据都要将数据采集同步到数据仓库中,一个是属于业务系统的RDBMS系统,也就是各种关系型数据库,一个是hadoop生态的存储,中间用于传输的数据的工具可以使用sqoop,也就是sql to hadoop。

    在数据进入数仓的ODS层的时候,使用sqoop,在进入hadoop之后,就可以使用其他的计算框架进行分析,例如hive,MR,spark等。

sqoop

      1 sqoop所处的位置

        sqoop是一个用于数据传输的工具,是连接RDBMS和数仓ODS的桥梁:

    sqoop是将结构化数据同步到hdfs中,也可以是hive和hbase等,支持不同的数据库,只要将相关的连接数据库驱动放到安装sqoop的lib库中即可,从而能连接,进行数据的导入导出操作。

    在进行使用sqoop的时候,考虑到任务数量的众多,需要从不同的业务系统中同步数据,而业务系统使用的数据库又是多种多样的,从数仓的建立来说,需要确定相关的指标,从而需要首先规划好哪些数据库,哪些数据需要同步,任务数量多,从而需要考虑任务的优先级管理,任务的优先级决定了指标的产出时间,可以划分核心指标,从而得到核心任务,也就是需要优先产出的任务,从而定义好相应的任务。

    血缘关系,也就是sqoop数据导入任务才是第一步,后面还有数仓中的各种数据清洗,数据统计分析的任务,从而需要划分好任务依赖。

    为了方便问题的排查,也就是对于sqoop的导入数据任务来说,每个导入使用一个导入job来实现。

    ODS作为第一层,保持业务数据的一致性,基本不会对数据进行任何处理,直接保存在数仓中。从而表命名可以使用ods_databasename_tablename_di,ods表示表所在的层级,数据库名称表示数据的来源,而表名和业务系统一致,di表示每日增量day increase,全量的就不需要标注了,对于任务名称来说,也可以使用表名一致的方式,从而便于问题的排查,见名知意。

    2 数据分类

    在业务系统的表里面的数据,可以分为三类数据,一种是全量数据,这种表示同步的时候,只要全部同步就好,数据量比较少,而且变化的频率不高,像用户,地区这种维度表。

    对于增量数据,也就是这个表里面的数据只会存在insert操作,而不会存在update操作,像交易表,这种只会新增记录,基本不会涉及修改。

    对于新增及变化的数据,这种一般就是订单表,不但每天都会有新增的数据,而且会存在修改的动作,也就是修改订单的状态,从而每天都会发生变化。

    3 sqoop使用

    sqoop的安装很简单,只要下载之后,修改一下简单的配置就可以使用,但是由于sqoop需要使用hadoop的map任务,从而需要提前安装好hadoop,在这个基础上安装sqoop(注意将连接数据库的驱动放到sqoop的lib目录中)。

[root@KEL1 conf]# cat sqoop-env.sh 
# Set Hadoop-specific environment variables here.
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/opt/module/hadoop-2.7.2
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/opt/module/hadoop-2.7.2
#set the path to where bin/hbase is available
#export HBASE_HOME=
#Set the path to where bin/hive is available
export HIVE_HOME=/opt/module/apache-hive-1.2.2
#Set the path for where zookeper config dir is
#export ZOOCFGDIR=
[root@KEL1 conf]# which hadoop
/opt/module/hadoop-2.7.2/bin/hadoop

    全量导入(


http://www.ngui.cc/el/5239887.html

相关文章

hdfs和yarn高可用对比

序言 总有一天你会笑着说出曾经令你痛苦的事情,毕竟有些东西虽然不是你想要的,但是却是你自找的,表面上是无奈,实际上是懒得去做选择,成功的路只有一条,而失败的路则是各种各样的原因。 得不到的时候念念不忘,得到的时候,却不珍惜,这到底是为什么呢?是忘记了…

三月闲聊

序言 生活原本很沉闷,但跑起来有风。 工欲善其事必先利其器,当你有一些想法的时候,如果没有合适的工具,那将是一个很痛苦的过程。。。至于有多痛苦呢,越追求细节的越enjoy。。。 风言风语 1 在理论的指导下实践 无论是…

七月闲聊

序言 风都停了,所以闲下来瞎聊聊。。。 最近头有点痒,可能是要长脑子了。。。 风言风语 1 开源与商业 看最近的天气,总是不太安稳,一会儿暴风雨,一会儿插喉咙,多事之秋。 谈到商业产品的时候,总…

八月闲聊

序言 远方就是窗外的风景,可望而不可及,在家呆的太久,都忘记了今夕是何年。 如果你来南京玩,记得带好你的绿码。。。 风言风语 1 尊重你的用户,也尊重你自己 可以吵架,但是吵架是为了更好的去了解对方&…

平淡让你无脑?

序言 我的意中人,一定会驾着五彩祥云来打死我。。。平凡之间的平淡。 空花幻月,都是用来迷惑众生的。。。听我讲道理,比死还难受。 风言风语 最近都在升级,产品种类繁多,但是从整体的角度来说,都是点点几个…

从一个小问题探讨解题思路

序言 前奏一响,心一动,就是跑路的信号,从入门到删库。。。你看这篇文章,她像不像一封辞职信。 运维的终点在哪儿?如果运维的终点是没有运维,那么这一切又将有什么存在的含义? 风言风语 问题背景…

敏捷运维

序言 表面上都是自由的,实际上四周围墙,无法跨越;表面上都有很多选择,实际上没得选。 成功是一种考验,失败也是,原因能想出来吗? 敏捷运维,敏捷开发,在各种压力进行运维&…

c++中单独大括号的用法

经常看到大的工程中使用单独的大括号,其用法主要是使用单独大括号里面的临时变量。

记录一些cmake的用法

今天用add_directory时,出现了 “you have changed variables that require your cache to be deleted. Configure will be re-run and you may have to reset some variables.” 这样的死循环,原来是要将这条命令加到cmake头部。 顺带记录一些cmake的用…

c++ getline

背景:经常需要读取图像的文件,记录一下 1.getline用法 主要用于获取string中的一行,调用时可以设置单个的分隔符;其中单个的分隔符相当于行中的ifstream中的换行符"\n",依次读取分隔的字符. ge…