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.mzph.cn/news/169658.shtml

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

相关文章

leaflet对线设置渐变色

效果展示: 引用leaflet-polycolor组件 npm install leaflet-polycolor .vue文件中使用 import leafletPolycolor from leaflet-polycolor; leafletPolycolor(L); const latLngs [[37.03, 111.92], [37.53444, 111.98555], [36.88, 112.12], [37.53444, 112.24], […

MT6893_天玑 1200芯片规格参数介绍_datasheet规格书

天玑 1200(MT6893)是一款专为旗舰级全新5G芯片,它融合了先进的AI、相机和多媒体技术,为用户带来令人惊叹的体验。采用先进的6纳米制程设计,内置各种先进技术。该芯片采用旗舰级的八核CPU架构设计,支持16GB强大的四通道内存以及双通…

CDN 加速 - 隐藏真实 IP - 复活 IP

CDN 一词相信很多朋友都不会陌生,网上也经常会看到相关报道。或许大部分人都知道 CDN 加速可以提升网站的打开速度及用户下载资源的速度,而同时也有不少朋友还不清楚 CDN 是什么?有什么用途?它是如何实现加速的呢?下面为大家整理了一些通俗易懂的知识点。 顺哥轻创 CDN …

每日一练:“打家劫舍“(House Robber)问题 II

有想要了解打家劫舍初级问题的,可以点击下面链接查看! 每日一练:“打家劫舍“(House Robber)问题 I 1. 问题 假设有房屋形成一个环形,即第一个房屋和最后一个房屋也相邻,每个房屋里都存放着一定…

Leetcode—83.删除排序链表中的重复元素【简单】

2023每日刷题(四十) Leetcode—83.删除排序链表中的重复元素 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* deleteDuplicates(struct ListNode* head) {i…

c#处理SQLSERVER 中image数量类型为空

项目场景: DataRow dataRow dataTable.Rows[i]; var pxpicture dataRow ["pxImage"];if (pxpicture!null){byte[] pic (byte[])pxpicture;acs.Add("pxpicture", Convert.ToBase64String(pic));}问题描述 代码执行出现错误: 无…

MySQL 执行计划分析

MySQL执行计划最核心字段是 type 字段,用于描述优化器在执行查询时查找记录的方式。 其字段值较多,可分为 3 类加以理解:全表查询、范围查询、等值查询 全表查询 All:全表扫描,MySQL会扫描整个聚簇索引来找到匹配的行…

【Docker】Docker 仓库管理和Docker Dockerfile

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

MybatisPlus集成baomidou-dynamic,多数据源配置使用、MybatisPlus分页分组等操作示例

文章目录 pom配置示例代码 pom <dependencies><!--mybatisPlus集成SpringBoot起步依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version>&l…

Spring Cloud Gateway 网关跨域问题解决

0、版本说明 Spring Cloud Version&#xff1a;Spring Cloud 2021.0.4 Spring Cloud Gateway Version&#xff1a;3.1.4 Spring Boot Version&#xff1a;2.6.11 1、网关跨域问题说明 关于跨域的相关原理和理论&#xff0c;网上有大量文章对此进行说明&#xff0c;因此博主在这…

【DP】mobiusp正在创作乐曲

输入样例1&#xff1a; 5 2 1 7 7 1 3 输出样例1&#xff1a; 2 输入样例2&#xff1a; 10 3 2 5 6 4 4 5 7 3 5 6 输出样例2&#xff1a; 1 #include<iostream> #include<cstring> #include<algorithm> #include<vector> using namespace std; typede…

面向对象高级---接口

接口 概念:接口就是一种公共的规范标准,只要符合规范,大家都可以通用 java中接口存在的两个意义 用来定义规范用来做功能的扩展 接口的特点 接口用关键字interface修饰 public interface 接口名{}类实现接口用implements表示 public class 类名 implements 接口名{}接口…

学生成绩管理系统(python实现)

学生成绩表信息包括学号、姓名、各科课程成绩&#xff08;语文、数学、英语、政治&#xff09;和总分。用带头结点的单链表管理学生成绩表&#xff0c;每个学生的信息依次从键盘输入&#xff0c;并根据需要进行插入、删除、排序、输出等操作。 import json# 初始化系统 studen…

SpringCloud实用-OpenFeign整合okHttp

文章目录 前言正文一、OkHttpFeignConfiguration 的启用1.1 分析配置类1.2 得出结论&#xff0c;需要增加配置1.3 调试 二、OkHttpFeignLoadBalancerConfiguration 的启用2.1 分析配置类2.2 得出结论2.3 测试 附录附1&#xff1a;本系列文章链接附2&#xff1a;OkHttpClient 增…

10.打印楼梯图案和笑脸【2023.11.25】

1.问题描述 打印楼梯图案和笑脸 2.解决思路 3.代码实现 #include<stdio.h> int main(){printf("11\n");for(int i0;i<10;i){for(int j0;j<i;j){printf("FF"); }printf("\n");} return 0; }4.运行结果

《微信小程序开发从入门到实战》学习二十九

3.4 开发参与投票页面 3.4.4 使用label组件扩大单击区域 radio组件的单击区域很小&#xff0c;只有文字左侧的圆圈可以点击&#xff0c;实际使用者一般会期望点击文字也可以选中选项&#xff0c;用label组件包含radio组件&#xff0c;就可以实现点击文字也可以选项。 label组…

MySQL 基于成本的优化

其实在MySQL中⼀条查询语句的执⾏成本是由下边这两个⽅⾯组成的&#xff1a; I/O成本 我们的表经常使⽤的MyISAM、InnoDB存储引擎都是将数据和索引都存储到磁盘上的&#xff0c;当我们想查询表中的记录时&#xff0c;需要先把数据或者索引加载到内存中 然后再操作。这个从磁盘…

Linux的基本指令(二)

目录 前言 学前补充 touch指令 mkdir指令 rmdir指令 rm指令 通配符* man指令 cp指令 mv指令(重要) 补充内容&#xff1a; 1、如何快速在Linux中写出代码 2、如何看待如此多的Linux指令 cat指令 前言 关于Linux的基本指令我们会分三到四篇文章进行分析&#xff0c…

websocket,WebSocket与Socket的区别,HTTP与WebSocket区别,WebSocket特点

文章目录 websocket全双工通讯传输协议WebSocket与Socket的区别HTTP与WebSocket区别WebSocket特点 websocket 1.websocket简单介绍 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 WebSocket 使得客户端和服务器之间的数据交换变得更加简单&…

软件设计先进性之虚拟化技术的应用

随着科技的进步&#xff0c;虚拟化技术深入到我们的生活的方方面面&#xff0c;虚拟化如何使用呢&#xff0c;下面我一下维度进行阐述&#xff0c;即服务器虚拟化、存储虚拟化、平台虚拟化&#xff0c;应用虚拟化和桌面虚拟化 导读&#xff1a;虚拟化(Virtualization)技术是云计…