Datax安装及使用[Mysql <-> HDFS]

一、介绍

1、DataX

DataX 是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能
在这里插入图片描述

2、支持的数据源

在这里插入图片描述

3、框架

框架

4、Sqoop对比

在这里插入图片描述

二、安装

下载地址:

下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
源码地址:https://github.com/alibaba/DataX

解压:

tar -zxvf datax.tar.gz -C 目标文件夹
自检
cd 目标文件夹/datax/bin/
python datax.py /opt/module/datax/job/job.json

三、使用示例

1、mysql -> hdfs

示例json

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader", 
                    "parameter": {
                        "column": [
                            "id",                     --列名
                            "name"
                        ], 
                        "connection": [
                            {
                                "jdbcUrl": [
                                    "jdbc:mysql://hadoop102:3306/datax"
                                ], 
                                "table": [
                                    "student"              --表名
                                ]
							--"querySql":[]                --自动以sql,配置后直接忽略table,column,where
                            }
                        ], 
                        "username": "root", 
                        "password": "******",
						"where": "day>'2022-10-07'"         --条件
                    }
                }, 
                "writer": {
                    "name": "hdfswriter", 
                    "parameter": {
                        "column": [
                            {
                                "name": "id",
                                "type": "int"
                            },
                            {
                                "name": "name",
                                "type": "string"
                            }
                        ],  
                        "defaultFS": "hdfs://hadoop102:9000",             --namenode节点地址
                        "fieldDelimiter": "\t",                           --字段分隔符
                        "fileName": "student.txt",                        --写入文件名
                        "fileType": "text",                               --文件类型
                        "path": "/mysql/",                                --在hdfs上的地址
                        "writeMode": "append"                             --写入前数据清理模式:append->追加  nonConflict -> 如果有该文件名,报错
                    }
                }
            }
        ], 
        "setting": {
            "speed": {
                "channel": "1"
            }
        }
    }
}

执行

bin/datax.py json所在文件夹/mysql2hdfs.json

结果

在这里插入图片描述
注意:HdfsWriter实际执行时会在该文件名后添加随机的后缀作为每个线程写入实际文件名

修改hdfs上的文件名:

hadoop fs -mv /student.txt* /student.txt

配置高可用

"hadoopConfig":{
  "dfs.nameservices": "ns",
  "dfs.ha.namenodes.ns": "nn1,nn2",
  "dfs.namenode.rpc-address.ns.nn1": "主机名:端口",
  "dfs.namenode.rpc-address.ns.nn2": "主机名:端口",
  "dfs.client.failover.proxy.provider.ns": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
}

2、hdfs -> mysql

1、示例json

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "hdfsreader", 
                    "parameter": {
                        "column": ["*"], 
                        "defaultFS": "hdfs://hadoop102:9000", 
                        "encoding": "UTF-8", 
                        "fieldDelimiter": "\t", 
                        "fileType": "text", 
                        "path": "/student.txt"
                    }
                }, 
                "writer": {
                    "name": "mysqlwriter", 
                    "parameter": {
                        "column": [
                            "id",
                            "name"
                        ], 
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://hadoop102:3306/datax", 
                                "table": ["student2"]
                            }
                        ], 
                        "password": "******", 
                        "username": "root", 
                        "writeMode": "insert"
                    }
                }
            }
        ], 
        "setting": {
            "speed": {
                "channel": "1"
            }
        }
    }
}

四、优化

 job.setting.speed.channel : channel并发数

并发数 = taskGroup的数量 * 每个TaskGroup并发执行的Task数 (默认为5)。

 job.setting.speed.record : 2全局配置channel的record限速
 job.setting.speed.byte:全局配置channel的byte限速
 core.transport.channel.speed.record:单个channel的record限速
 core.transport.channel.speed.byte:单个channel的byte限速

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值