- 博客(26)
- 资源 (12)
- 论坛 (1)
- 收藏
- 关注
转载 Redis(1): SQL or NoSql
开始Redis之旅~~~一、前言你是否在为系统的数据库来一波大流量就几乎打满CPU,日常CPU居高不下烦恼?你是否在各种NoSql间纠结不定,到底该选用那种最好?作为互联网从业人员,我们要知道关系型数据库(MySql、Oracle)无法满足我们对存储的所有要求,因此对底层存储的选型,对每种存储引擎的理解非常重要。1、结构化数据、非结构化数据与半结构化数据结构化数据指的是由二维表结构来逻辑表达和实现的数据,严格遵循数据格式与长度规范,也称作为行数据,特点为:数据以行为单位,一行数据表示一个.
2021-01-31 23:12:22
10300
9
原创 datax(25):插件加载原理
一、插件分类按照功能分reader, 读插件,例如mysqlReader,从mysql读取数据writer, 写插件。例如mysqlWriter,给mysql写入数据;transformer, 中间结果转换,例如SubstrTransformer用于字符截取;handler, 主要用于任务执行前的准备工作和完成的收尾工作。插件类型由PluginType枚举表示public enum PluginType { READER("reader"), TRANSFORMER("transfor.
2021-01-29 23:11:53
10400
4
原创 datax(24):远程调试datax
一、datax开启远程debug1、环境本地:win10,idea专业版2020.3,datax3.0远程:CentOS6.5,datax3.02、效果3、步骤3.1 远程开启debug/apps/datax/bin/datax.py /apps/datax/job/job.json -d即在后面添加-d 即可,默认端口为9999,也可以自行修改datax.py文件第35行 REMOTE_DEBUG_CONFIG = "-Xdebug -Xrunjdwp:transport=dt
2021-01-29 00:02:48
16739
6
原创 datax(23):dataX调优
调优前需要先知道datax任务的执行过程;一、调优方向网络本身的带宽等硬件因素造成的影响;DataX本身的参数;即当觉得DataX传输速度慢时,需要从上述两个个方面着手开始排查。二、网络本身的带宽等硬件因素造成的影响此部分主要需要了解网络本身的情况,即从源端到目的端的带宽是多少(实际带宽计算公式),平时使用量和繁忙程度的情况,从而分析是否是本部分造成的速度缓慢。以下提供几个思路。1,可使用从源端到目的端scp,python http,nethogs等观察实际网络及网卡速度;2,结合.
2021-01-28 00:34:55
16565
3
原创 datax(22):任务分配规则
前面学习了一些源码和datax的执行,其中有一个重要的流程任务切分。今天梳理下;一、概述Datax根首先据配置文件,确定好channel的并发数目。然后将整个job分成一个个小的task,然后划分成组。从JobContainer的start()方法开始,进入split()方法,split方法里执行后续所有的切分;二、总体流程切分任务channel数目的确定reader的切分Writer的切分合并配置 分配任务三、切分任务JobContainer 的split负责将整个jo.
2021-01-26 23:18:25
16588
4
原创 datax(21):编写自己的Transformer
前面2篇文章,已经看完+学习完transform的内容,今天继续编写一个自己的transformer;一、环境win10DataX 3.0(从我的datax分支打包而来)job.json使用datax的样例json,源文件在xxx\DataX\core\src\main\job\中,打包编译后在xxx\DataX\target\datax\datax\job下。本文略做修改,主要修改2出,是否打印和记录行数{ "job": { "setting": { .
2021-01-26 11:45:47
48822
12
原创 datax(20):内置transformer使用
前面看了transformer的原理及源代码,今天实战下,看看他的效果;一、环境win10DataX 3.0(从我的datax分支打包而来)job.json使用datax的样例json,源文件在xxx\DataX\core\src\main\job\中,打包编译后在xxx\DataX\target\datax\datax\job下。本文略做修改,主要修改2出,是否打印和记录行数{ "job": { "setting": { "speed":.
2021-01-25 11:33:27
21648
1
原创 datax(19):源码解读内置Transformer
通过datax(18)已经对transformer有了初步了解,继续撸代码,看datax已经内置的5种简单类型transformer;一、概述目前datax内置了5种常用的transformer,分别如下截取SubstrTransformer填充PadTransformer替换ReplaceTransformer过滤FilterTransformerGroovy类型GroovyTransformer二、SubstrTransformer主要是对record中的column的值进.
2021-01-25 00:05:42
16538
原创 datax(18):源码解读Transformer
现在很多场景都把datax当做ETL工具,datax中的各种reader相当于E(Extract),各种writer相当于L(load),那么datax中是否有T(transform)。答案是肯定的~一、概述transformer作用:在生产上数据传输,一般情况下只需要rw就行,但是有时候需要在中间过程做些操作,比如加解密、切割、拼接等等,这个时候就需要transform了。族谱datax中的transform有2个顶级祖宗,简单类型的Transformer和复杂类型的ComplexTran.
2021-01-24 15:04:55
16712
原创 datax(17):源码解读AbstractRunner
datax中将job根据channel切分成task,task又构成taskGroup,真正到执行阶段,是由各类runner执行,现在就看看看各种runner;一、概述AbstractRunnerAbstractRunner 是各类runner的基类,由他衍生出ReaderRUnner和WriterRunner,父类AbstractRunner中定义并实现了几个基本方法;族谱主要方法及属性,可以从下图看到,主要属性 /** * 基类任务插件 */ private A.
2021-01-23 13:25:11
24044
原创 datax(16):源码解读AbstractReporter
之前介绍了通信类communication,容器类container,communication的收集类collector,今天再看一个报告类Reporter;一、概述AbstractReporter主要作用:Reporter的主要功能是将收集到的信息上报给上级主要方法:reportTGCommunication(汇报TG的communication信息给上级),reportJobCommunication(汇报job的communication信息给上级)二、族谱族谱里面目前只有父子.
2021-01-22 23:37:48
18974
原创 datax(15):源码解读AbstractCollector
前面看了通讯类communication,容器类container,今天继续看他们两个是如何关联起来的。一、概述AbstractCollector1、主要作用: 1. 将communication和container进行关联起来; 2. 收集task信息;2、族谱目前整个家族只有父子二人,AbstractCollector和ProcessInnerCollector,且大部分事情都是父亲AbstractCollector干了。二、主要属性 /** * taskCommu.
2021-01-22 16:03:24
23248
原创 datax(14):源码解读Channel
一、概述Channel是Reader和Writer的通信组件。因为Reader和Writer是一一对应的关系,所以channel的值可以视为是DataX任务中数据管道的数量;Reader向channle写入数据,Writer从channel读取数据。channel还提供了限速的功能,支持数据大小(字节数), 数据条数。但是在实际ETL过程中,配置了channel可能不产生效果,实际的DataX并发度由数据源的文件切片数量决定,比如数据源是hdfs上某个文件,这个文件的并发度是3,有3个文件,则Dat
2021-01-22 00:51:20
23522
原创 datax(13):源码解读Column-datax中的数据类型
一、基类Column概述Column是datax中所有数据类型的基类,里面有3个属性,以及一个构造方法,外加一个枚举类;public abstract class Column { private Type type; private Object rawData; private int byteSize; public Column(final Object object, final Type type, int byteSize) { this.rawData = objec
2021-01-22 00:38:00
16530
2
原创 datax(12):调度源码解读AbstractScheduler
datax的jobContainer最终会通过调度周期性的执行,今天把它看完;一、基类AbstractScheduler概述类继承关系全部方法二、AbstractScheduler的主要属性和方法1、主要属性 /** * 脏数据行数检查器,用于运行中随时检查脏数据是否超过限制(脏数据行数,或脏数据百分比) */ private ErrorRecordChecker errorLimit; /** * 积累容器通讯器,来处理JobContainer、Tas.
2021-01-21 00:26:03
16410
原创 datax(11):源码解读 ContainerCommunicator
前面看了datax的 通讯类communication,现在看看在他之上包装的一个容器通信类ContainerCommunicator一、抽象基类AbstractContainerCommunicatordataX中提供了一个基类 AbstractContainerCommunicator来处理JobContainer、TaskGroupContainer和Task的通讯。AbstractContainerCommunicator提供了注册、收集信息等接口,信息的单位是Communication.
2021-01-20 00:34:37
16490
原创 datax(10): 源码解读Communication(Datax通讯类)
前面看了datax的通讯机制,继续看源码—具体的通讯类 Communication。根据datax的运行模式的区别, 数据的收集会有些区别,这篇文章都是讲的在standalone模式下。一、communication概述DataX所有的统计信息都会保存到Communication类里面。Communication支持下列数据的统计计数器,比如读取的字节速度,写入成功的数据条数 /** * 所有的数值key-value对 * */ private Map<String.
2021-01-19 19:38:42
14239
2
原创 datax(9):Job和TaskGroup的通讯机制
先后看完了TaskGroupContainer 和 JobContainer,梳理下他们的关系与职责;一,各自职责JobContainer: Job执行器,负责Job全局拆分、调度、前置语句和后置语句等工作的工作单元。类似Yarn中的JobTrackerTaskGroupContainer: TaskGroup执行器,负责执行一组Task的工作单元,类似Yarn中的TaskTracker(Yarn中的JobTracker和Yarn中的TaskTracker通过RPC进行通讯);二.
2021-01-18 21:49:31
7726
原创 datax(8):TaskGroupContainer源码解读
继续深挖 datax里的container,任务一个任务进入datax都会判断是jobContainer还是TaskGroupContainer。那后者要做哪些事情。一,TaskGroupContainer概述JobContainer将所有的task分配到TaskGroup中执行,TaskGroup启动5个线程去消费所有的taskTaskGroupContainer里的主入口为start方法,实现自AbstractContainer.startTaskGroupContainer.start.
2021-01-18 20:40:11
7642
原创 datax(7):JobContainer源码解读
前面已经看了Engine,其中有一步就是判断container 是job还是taskGroup类型。本文就好好看看JobContainer。一,概述JobContainer: job实例运行在jobContainer容器中,它是所有任务的master,负责初始化、拆分、调度、运行、回收、监控和汇报,但它并不做实际的数据同步操作1、如果是job类型,则依次执行job的preHandler()、init()、prepare()、split()、schedule()、- post()、post.
2021-01-16 17:57:44
8106
1
原创 datax(6):启动步骤解析
通过前面 datax(2): 通过idea搭建源码阅读+调试环境 已经知道了idea下阅读源码的步骤,现在看下 DataX启动步骤解析一,启动java类(主入口)/** * Engine是DataX入口类,该类负责初始化Job或者Task的运行容器,并运行插件的Job或者Task逻辑 */com.alibaba.datax.core.Engine二,启动的步骤 1、解析配置,包括job.json、core.json、plugin.json三个配置2、设置jobId到config.
2021-01-14 16:34:26
17226
原创 Atlas(2):开源数据治理方案
数据治理意义重大,传统的数据治理采用文档的形式进行管理,已经无法满足大数据下的数据治理需要。而适合于Hadoop大数据生态体系的数据治理就非常的重要了。一,元数据管理系统市面上常见的元数据管理系统有如下几个:linkedin datahub: https://github.com/linkedin/datahubapache atlas: https://github.com/apache/atlaslyft amundsen: https://github.com/lyft/amunds.
2021-01-11 11:24:15
7761
原创 Atlas(1):前言-从元数据到元数据管理
数据治理是大佬们最近谈的一个火热的话题。不管国家层面,还是企业层面现在对这个问题是越来越重视。数据治理要解决数据质量,数据管理,数据资产,数据安全等等。而数据治理的关键就在于元数据管理,我们要知道数据的来龙去脉,才能对数据进行全方位的管理,监控,洞察。“元数据管理是企业数据治理的基础”,在数据治理战略实施的时候,这是我们经常会听到看到的一句话。但是,数据治理的概念在国内还并未普及,如何打好数据治理的基础更是一头雾水。作为一名企业管理人员、一名IT人员、或者是一名数据行业从业者,理解数据治理的首要任务,.
2021-01-08 20:07:37
13664
转载 Kerberos原理--经典对话
“ 读完这篇文章,大概会对Kerberos原理更了解一些吧”原文地址 https://mp.weixin.qq.com/s?__biz=MzU3MTc1NzU0Mg==&mid=2247483805&idx=1&sn=63a8910486a5dcbba011323269e7e190&scene=19#wechat_redirect这是MIT(Massachusetts Institute of Technology)为了帮助人们理解Kerberos的原理而写的一篇对话.
2021-01-06 19:22:57
9905
2
原创 datax(5):改造升级-自动识别py环境,执行datax任务
1 思考上篇文章已经研究过datax.py文件,产生2个问题:如果用户不是py2环境(datax默认要求环境)怎么处理;能不能有一个脚本自动识别用户的py环境,从而执行datax任务2 效果在py2或py3下执行下面命令>python datax.py ../job/job.json熟悉的配方,熟悉的味道。什么都没有变,但是背后却做了很多事情;3 改造过程3.1 编写py3的datax脚本共计3个文件===datax.py文件===#!/usr/bin/env pyt.
2021-01-05 16:45:05
15030
1
原创 datax(4): datax.py解读
datax 直接使用py文件进行任务提交,今天读一读它1 文件位置原始文件位置在 xx/DataX/core/src/main/bin/下,datax项目打包后会将文件拷贝到 xx/DataX\target\datax\datax\bin 下。 core模块的pom.xml 指定‘拷贝’datax.py文件的方式maven-assembly-plugin <plugin> <artifactId>maven-asse.
2021-01-05 15:43:36
17317
water___Wang的留言板
发表于 2020-01-02 最后回复 2020-01-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝