设为首页收藏本站language 语言切换
查看: 320|回复: 2
收起左侧

[分享] Loader基本原理

[复制链接]
 成长值: 63370
发表于 2024-3-4 15:00:16 | 显示全部楼层 |阅读模式
Loader基本原理
Loader是在开源Sqoop组件的基础上进行了一些扩展,实现MRS与关系型数据库、文件系统之间交换“数据”、“文件”,同时也可以将数据从关系型数据库或者文件服务器导入到HDFS/HBase中,或者反过来从HDFS/HBase导出到关系型数据库或者文件服务器中。
Loader模型主要由Loader Client和Loader Server组成,如图1-102所示。
图1-102 Loader模型

                               
登录/注册后可看大图

上图中各部分的功能说明如表1-24所示。
表1-24 Loader模型组成
名称
描述
Loader Client
Loader的客户端,包括WebUI和CLI版本两种交互界面。
Loader Server
Loader的服务端,主要功能包括:处理客户端操作请求、管理连接器和元数据、提交MapReduce作业和监控MapReduce作业状态等。
REST API
实现RESTful(HTTP + JSON)接口,处理来自客户端的操作请求。
Job Scheduler
简单的作业调度模块,支持周期性的执行Loader作业。
Transform Engine
数据转换处理引擎,支持字段合并、字符串剪切、字符串反序等。
Execution Engine
Loader作业执行引擎,支持以MapReduce方式执行Loader作业。
Submission Engine
Loader作业提交引擎,支持将作业提交给MapReduce执行。
Job Manager
管理Loader作业,包括创建作业、查询作业、更新作业、删除作业、激活作业、去激活作业、启动作业、停止作业。
Metadata Repository
元数据仓库,存储和管理Loader的连接器、转换步骤、作业等数据。
HA Manager
管理Loader Server进程的主备状态,Loader Server包含2个节点,以主备方式部署。

Loader通过MapReduce作业实现并行的导入或者导出作业任务,不同类型的导入导出作业可能只包含Map阶段或者同时Map和Reduce阶段。
Loader同时利用MapReduce实现容错,在作业任务执行失败时,可以重新调度。
  • 数据导入到HBase
    在MapReduce作业的Map阶段中从外部数据源抽取数据。
    在MapReduce作业的Reduce阶段中,按Region的个数启动同样个数的Reduce Task,Reduce Task从Map接收数据,然后按Region生成HFile,存放在HDFS临时目录中。
    在MapReduce作业的提交阶段,将HFile从临时目录迁移到HBase目录中。
  • 数据导入HDFS
    在MapReduce作业的Map阶段中从外部数据源抽取数据,并将数据输出到HDFS临时目录下(以“输出目录-ldtmp”命名)。
    在MapReduce作业的提交阶段,将文件从临时目录迁移到输出目录中。

  • 数据导出到关系型数据库
    在MapReduce作业的Map阶段,从HDFS或者HBase中抽取数据,然后将数据通过JDBC接口插入到临时表(Staging Table)中。
    在MapReduce作业的提交阶段,将数据从临时表迁移到正式表中。

  • 数据导出到文件系统
    在MapReduce作业的Map阶段,从HDFS或者HBase中抽取数据,然后将数据写入到文件服务器临时目录中。
    在MapReduce作业的提交阶段,将文件从临时目录迁移到正式目录。

Loader的架构和详细原理介绍,请参见:https://sqoop.apache.org/docs/1.99.3/index.html



Loader与其他组件的关系
与Loader有交互关系的组件有HDFS、HBase、Hive、Yarn、Mapreduce和ZooKeeper。Loader作为客户端使用这些组件的某些功能,如存储数据到HDFS和HBase,从HDFS和HBase表读数据,同时Loader本身也是一个Mapreduce客户端程序,完成一些数据导入导出任务。



Loader开源增强特性Loader开源增强特性:数据导入导出
Loader是在开源Sqoop组件的基础上进行了一些扩展,除了包含Sqoop开源组件本身已有的功能外,还开发了如下的增强特性:
  • 提供数据转化功能
  • 支持图形化配置转换步骤
  • 支持从SFTP/FTP服务器导入数据到HDFS/OBS
  • 支持从SFTP/FTP服务器导入数据到HBase表
  • 支持从SFTP/FTP服务器导入数据到Phoenix表
  • 支持从SFTP/FTP服务器导入数据到Hive表
  • 支持从HDFS/OBS导出数据到SFTP服务器
  • 支持从HBase表导出数据到SFTP服务器
  • 支持从Phoenix表导出数据到SFTP服务器
  • 支持从关系型数据库导入数据到HBase表
  • 支持从关系型数据库导入数据到Phoenix表
  • 支持从关系型数据库导入数据到Hive表
  • 支持从HBase表导出数据到关系型数据库
  • 支持从Phoenix表导出数据到关系型数据库
  • 支持从Oracle分区表导入数据到HDFS/OBS
  • 支持从Oracle分区表导入数据到HBase表
  • 支持从Oracle分区表导入数据到Phoenix表
  • 支持从Oracle分区表导入数据到Hive表
  • 支持从HDFS/OBS导出数据到Oracle分区表
  • 支持从HBase导出数据到Oracle分区表
  • 支持从Phoenix表导出数据到Oracle分区表
  • 在同一个集群内,支持从HDFS导数据到HBase、Phoenix表和Hive表
  • 在同一个集群内,支持从HBase和Phoenix表导数据到HDFS/OBS
  • 导入数据到HBase和Phoenix表时支持使用bulkload和put list两种方式
  • 支持从SFTP/FTP导入所有类型的文件到HDFS,开源只支持导入文本文件
  • 支持从HDFS/OBS导出所有类型的文件到SFTP,开源只支持导出文本文件和sequence格式文件
  • 导入(导出)文件时,支持对文件进行转换编码格式,支持的编码格式为jdk支持的所有格式
  • 导入(导出)文件时,支持保持原来文件的目录结构和文件名不变
  • 导入(导出)文件时,支持对文件进行合并,如输入文件为海量个文件,可以合并为n个文件(n值可配)
  • 导入(导出)文件时,可以对文件进行过滤,过滤规则同时支持通配符和正则表达式
  • 支持批量导入/导出ETL任务
  • 支持ETL任务分页查询、关键字查询和分组管理
  • 对外部组件提供浮动IP




发表于 2024-3-5 11:44:23 | 显示全部楼层
谢谢大佬支持
板凳 2024-3-5 11:44:23 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-1-31 15:51 , Processed in 0.073783 second(s), 11 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表