Datax安装部署及读取MYSQL写入HDFS

一.DataX简介

1.DataX概述

DataX 是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。
源码地址:https://github.com/alibaba/DataX

2.DataX支持的数据源

https://github.com/alibaba/DataX
在这里插入图片描述
在这里插入图片描述

3.DataX架构原理

为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。

在这里插入图片描述

4.DataX框架设计

DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。
在这里插入图片描述

5.DataX运行流程

在这里插入图片描述

6.DataX调度决策思路

举例来说,用户提交了一个DataX作业,并且配置了总的并发度为20,目的是对一个有100张分表的mysql数据源进行同步。DataX的调度决策思路是:
(1)DataX Job根据分库分表切分策略,将同步工作分成100个Task。
(2)根据配置的总的并发度20,以及每个Task Group的并发度5,DataX计算共需要分配4个TaskGroup。
(3)4个TaskGroup平分100个Task,每一个TaskGroup负责运行25个Task。

7.DataX与Sqoop对比

在这里插入图片描述
在这里插入图片描述

二.DataX部署

1.下载DataX安装包并上传到linux系统

下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

2.解压datax.tar.gz到/opt/software

[root@VM-4-10-centos datax]# tar -zxvf datax.tar.gz -C ../software/

3.自检,执行如下命令

[root@VM-4-10-centos datax]# python /opt/software/datax/bin/datax.py /opt/software/datax/job/job.json

在这里插入图片描述
如果出现下图报错,说明路径有问题,检查路径。
在这里插入图片描述

三.DataX的使用

1.DataX任务提交命令

DataX的使用十分简单,用户只需根据自己同步数据的数据源和目的地选择相应的Reader和Writer,并将Reader和Writer的信息配置在一个json文件中,然后执行如下命令提交数据同步任务即可。
在这里插入图片描述

2. DataX配置文件格式

可以使用如下命名查看DataX配置文件模板

[root@VM-4-10-centos datax]# python bin/datax.py -r mysqlreader -w hdfswriter

在这里插入图片描述

3.同步MySQL数据到HDFS案例

先测试从mysql读取数据打印控制台是否正常
MySQL读插件官网:https://github.com/alibaba/DataX/blob/master/mysqlreader/doc/mysqlreader.md

{"job": {"setting": {"speed": {"channel":1}},"content": [{"reader": {"name": "mysqlreader","parameter": {"column": ["id","create_time","update_time","value"],"where": "id>=3","connection": [{"jdbcUrl": ["jdbc:mysql://10.0.4.10:3306/medical?useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=utf-8"],"table": ["dict"]}],"password": "123456","splitPk": "","username": "root"}},"writer": {"name": "streamwriter","parameter": {"print": false,"encoding": "UTF-8"}}}]}
}

在这里插入图片描述
数据打印正常读取插件配置正常。

配置hdfs写入插件

{"job": {"setting": {"speed": {"channel":1}},"content": [{"reader": {"name": "mysqlreader", #读取数据的插件名称"parameter": {"column": [ #读取的表的字段"id","create_time","update_time","value"],"where": "id>=3", #过滤条件"connection": [ #连接信息{"jdbcUrl": [  #连接链接"jdbc:mysql://10.0.4.10:3306/medical?useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=utf-8"],"table": [  #表名"dict"]}],"password": "123456",  #密码"splitPk": "","username": "root"  #用户名}},"writer": {"name": "hdfswriter",  #写入数据的插件名称"parameter": {"defaultFS": "hdfs://101.91.153.39:8020",   #hdfs连接信息"fileType": "text",    #文件格式"path": "/datax/mysql",  # 写入地址"fileName": "dict",   #文件名称"column": [{"name": "id","type": "BIGINT"},{"name": "create_time","type": "STRING"},{"name": "update_time","type": "STRING"},{"name": "value","type": "STRING"}],"writeMode": "append",  #写入文件的方式"fieldDelimiter": "\t", #字段分割符"compress":"gzip"  #hdfs文件压缩类型,默认不填写意味着没有压缩。}}}]}
}

如果写入HDFS出现如下错误

在这里插入图片描述

原因:NameNode节点存放的是文件目录,也就是文件夹、文件名称。 本地可以通过公网访问
NameNode,所以可以进行文件夹的创建,当上传文件需要写入数据到DataNode时, NameNode 和DataNode是通过局域网进行通信,NameNode返回地址为 DataNode 的私有 IP,本地无法访问。

解决方法:返回的IP地址无法返回公网IP,只能返回主机名,通过主机名与公网地址的映射便可以访问到DataNode节点,问题将解决。
datax的hdfswriter设置相关连接属性的hadoopConfig。

"hadoopConfig": {"dfs.client.use.datanode.hostname": true}, 

在这里插入图片描述
运行成功:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/217682.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

webpack 打包优化

在vue.config.js中配置 下载 uglifyjs-webpack-plugin 包 const { defineConfig } require("vue/cli-service"); var path require("path");module.exports defineConfig({transpileDependencies: true,filenameHashing: false, // 去除Vue打包后.cs…

递归剪枝题

期中考终于考完了,整道题奖励下自己 我一北大同学问我的,说他递归超时了,叫我想一个办法 后面他说他加了个剪枝就过了,然后我自己尝试了一个方法: 就是先把城市按1到n排列,然后考虑互换,如果互…

图神经网络入门基础

什么是图 要想解释图的概念,就要从著名的七桥问题开始:一个人如何不重复,不遗漏地走完七座桥,并最终回到起点。大数学家欧拉在回答七桥问题时,开创了图论。 由上图可见,图(Graph)是…

3.读取字符串【2023.11.25】

1.问题描述 请使用 input 函数读取一串字符串,然后将其输出。 2.解决思路 输入一行字符串。 将读入的变量输出。 3.代码实现 strinput("请输入一个字符串") print(str)4.运行结果

计数问题+约瑟夫问题(map)

目录 一、计数问题 二、约瑟夫问题 一、计数问题 #include<iostream> #include<map> using namespace std; int main() {int n,x;cin>>n>>x;map<int,int>m;for(int i1;i<n;i){if(i>1 && i<10){m[i];}else{int temp i;while (…

Spring Security 6.1.x 系列(5)—— Servlet 认证体系结构介绍

一、前言 本章主要学习Spring Security中基于Servlet 的认证体系结构&#xff0c;为后续认证执行流程源码分析打好基础。 二、身份认证机制 Spring Security提供个多种认证方式登录系统&#xff0c;包括&#xff1a; Username and Password&#xff1a;使用用户名/密码 方式…

openpnp - 丝杠安装调整的总结

文章目录 openpnp - 丝杠安装调整的总结概述笔记发现的问题 - X轴有回差发现的问题 - 丝杠两边的轴承座中心有高差(不同轴)备注END openpnp - 丝杠安装调整的总结 概述 设备定制回来后, 丝杠没敢动(开始是小白, 也没发现丝杠的相关问题. 因为看到同学自己安装丝杠那么痛苦, 最…

【Docker】Docker 仓库管理和Docker Dockerfile

作者简介&#xff1a; 辭七七&#xff0c;目前大二&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

实验题【网关设置+VRRP+静态路由+OSPF】(H3C模拟器)

嘿&#xff0c;这里是目录&#xff01; ⭐ H3C模拟器资源链接1. 实验示意图2. 要求和考核目标3. 当前配置3.1 PC1、PC2、PC3、PC4和PC5配置3.2 SW配置3.2.1 SW2配置3.2.2 SW3配置3.2.3 SW4配置3.2.4 SW1配置 3.2. R配置3.2.1 R1配置3.2.2 R2配置 ⭐ H3C模拟器资源链接 H3C网络…

YOLOv8改进 | 2023 | MPDIoU、InnerMPDIoU助力细节涨点

论文地址&#xff1a;官方论文地址点击即可跳转 代码地址&#xff1a;官方并没有开源的该损失的函数的代码&#xff0c;我根据文章内容进行了复现代码块在第三章 一、本文介绍 本文为读者详细介绍了YOLOv8模型的最新改进&#xff0c;带来的改进机制是最新的损失函数MPDIoU和融…

二十一、数组(6)

本章概要 数组排序Arrays.sort的使用并行排序binarySearch二分查找parallelPrefix并行前缀 数组排序 根据对象的实际类型执行比较排序。一种方法是为不同的类型编写对应的排序方法&#xff0c;但是这样的代码不能复用。 编程设计的一个主要目标是“将易变的元素与稳定的元素…