sqoop2 调研

本文介绍了SQoop的基本概念及其在Hadoop与传统数据库间的数据迁移应用。详细解析了SQoop2的安装配置流程,并通过实例演示如何创建连接及作业。同时分享了在使用过程中遇到的问题及解决经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sqoop简介

sqoop 即 SQL to Hadoop ,是一款方便的在传统关系数据库与 Hadoop 之间进行数据迁移的工具,充分利用 MapReduce 并行特点以批处理的方式加快数据传输,发展至今主要演化了二大版本,sqoop1和sqoop2。

sqoop : clouder 公司开发

sqoop特点

sqoop架构非常简单,其整合了Hive、Hbase和Oozie,通过map-reduce任务来传输数据,从而提供并发特性和容错。

Sqoop 由两部分组成:客户端(client)和服务端(server)。需要在集群的其中某个节点上安装server,该节点的服务端可以作为其他 Sqoop 客户端的入口点。

在 server 端的节点上必须安装有 Hadoop。client 可以安装在任意数量的机子上。在装有客户端的机子上不需要安装 Hadoop。

sqoop 官网 : https://sqoop.apache.org

sqoop2 常用命令

  • 环境

    Command Line shell
    1.99.4-cdh5.3.6
    
  • 模式

    两种模式 communicating with Sqoop 2 server using REST interface

    1. interactive (Interactive mode supports all available commands.)
    2. batch mode

      Sqoop uses unique names or persistent ids to identify connectors, links, jobs and configs
      
      https://sqoop.apache.org/docs/1.99.4/CommandLineClient.html
      
  • show command…

    show version -a
    show server --all
    show driver
    show connector
    show link
    show job
    
  • set command…

    show server --all
    set server --host localhost --port 12000 --webapp sqoop
    set server -h 192.168.**.**
    set option  (set various client side options)
    
  • create link and job

  • 实践经验

    > show version -all 
    Exception has occurred during processing command
    Exception: org.apache.sqoop.common.SqoopException Message:         CLIENT_0001:Server has returned exception
    根本不知道这个提示说什么,通过修改设置:
    > set option --name verbose --value true
    再次执行 show version -all,显示出有用的出错信息:
    

    sqoop:000> show connector

    IdNameVersionClassSupported Directions
    1hdfs-connector1.99.4-cdh5.3.6org.apache.sqoop.connector.hdfs.HdfsConnectorFROM/TO
    2generic-jdbc-connector1.99.4-cdh5.3.6org.apache.sqoop.connector.jdbc.GenericJdbcConnectorFROM/TO

    sqoop:000> create link –cid 2

    属性Value
    NameFirst Link
    JDBC Driver Classcom.mysql.jdbc.Driver
    JDBC Connection Stringjdbc:mysql://192.168.xxx.xx:3306/libin_test_db?useUnicode=true&characterEncoding=UTF-8
    Usernameyour username
    Passwordyour password
    entry#protocol=tcp

    sqoop:000> create link –cid 1

    属性Value
    NameSecond Link
    HDFS URIhdfs://nameservice1:8020/

    sqoop:000> show links -all

    sqoop:000> create job -f 1 -t 2

    sqoop:000> update job –jid 1

    sqoop:000> start job –jid 1

    sqoop:000> status job –jid 1

    sqoop:000> stop job –jid 1

  • 调研感悟与结果

    暂时放弃使用 sqoop2,拥有太多的问题难以解决 和 有待解决

    参见 : http://blog.selfup.cn/1510.html

    参见 : http://blog.youkuaiyun.com/zhangzhaokun/article/details/44256569

### Sqoop2 使用指南及介绍 #### 1. Sqoop2 简介 Sqoop2Sqoop 的下一代版本,旨在改进和扩展 Sqoop 的功能。它提供了一个更灵活的架构,支持通过插件机制与多种数据源进行交互。此外,Sqoop2 引入了集中式的管理服务(Sqoop Server),用于管理和调度数据传输任务[^3]。 #### 2. Sqoop2 的主要特性 - **集中式管理**:Sqoop2 提供了一个集中化的服务器(Sqoop Server),用于管理连接、作业和资源。 - **插件化架构**:通过插件机制,Sqoop2 支持多种数据源(如 MySQL、PostgreSQL、Oracle 等)和存储格式(如 HDFS、Hive、HBase 等)。 - **RESTful API**:Sqoop2 提供了 RESTful API,允许用户通过编程方式与 Sqoop Server 进行交互[^5]。 - **安全性增强**:支持 Kerberos 认证和数据加密,确保数据传输的安全性。 #### 3. Sqoop2 的安装与配置 ##### 3.1 安装 Sqoop2 - 下载 Sqoop2 的二进制包或源码包,并解压到指定目录: ```bash tar -xzvf sqoop-1.99.7-bin-hadoop200.tar.gz ``` - 配置环境变量 `SQOOP_HOME` 和 `PATH`: ```bash export SQOOP_HOME=/path/to/sqoop export PATH=$PATH:$SQOOP_HOME/bin ``` ##### 3.2 启动 Sqoop Server - 启动 Sqoop Server: ```bash $SQOOP_HOME/bin/sqoop.sh server start ``` - 检查 Sqoop Server 是否正常运行: ```bash curl http://localhost:12000/sqoop/versions ``` ##### 3.3 配置 Sqoop Client - 配置 Sqoop Client 连接到 Sqoop Server: ```bash $SQOOP_HOME/bin/sqoop.sh client ``` #### 4. Sqoop2 的使用方法 ##### 4.1 创建连接 - 使用 Sqoop Client 创建一个连接: ```bash create connection --connector generic-jdbc-connector --name my_connection --frame-size 100 --batch-size 10 ``` ##### 4.2 创建作业 - 创建一个从数据库到 HDFS 的数据导入作业: ```bash create job --connection my_connection --from connector generic-jdbc-connector --to connector hdfs-connector --name my_job ``` ##### 4.3 执行作业 - 执行创建的作业: ```bash start job --meta my_job ``` #### 5. 示例代码 以下是一个基于 Sqoop2 Java Client API 的示例代码,展示如何通过编程方式创建连接和作业: ```java import org.apache.sqoop.client.SqoopClient; import org.apache.sqoop.model.MConnection; import org.apache.sqoop.model.MJob; public class Sqoop2Example { public static void main(String[] args) { // 初始化 Sqoop Client SqoopClient client = new SqoopClient("http://localhost:12000/sqoop/"); // 创建连接 MConnection connection = new MConnection(); connection.setName("my_connection"); connection.setConnectorId(1L); // 替换为实际的连接器 ID client.createConnection(connection); // 创建作业 MJob job = new MJob(); job.setName("my_job"); job.setFromConnectionId(1L); // 替换为实际的连接 ID job.setToConnectionId(2L); // 替换为实际的连接 ID client.createJob(job); } } ``` #### 6. 常见问题及解决方法 - **问题**:无法连接到 Sqoop Server。 - **解决方法**:确保 Sqoop Server 已启动,并检查网络连接是否正常[^5]。 - **问题**:作业执行失败。 - **解决方法**:检查日志文件,确认数据源和目标存储的配置是否正确[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值