操作系统:Alibaba Cloud Linux release 3 (Soaring Falcon)

Java:1.8.0_372

Python:3.6.8 => 2.7.1

一、安装部署

(1)下载DataX:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

(2)解压到合适的目录:tar -zxvf datax.tar.gz -C /home/ecs-user/module/

(3)进入bin目录,执行 python datax.py etl_job.json 即可运行同步作业

二、配置案例

(1)查看作业的配置模板:python datax.py -r streamreader -w streamwriter

(2)作业模板内容如下

DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved. Please refer to the streamreader document:
https://github.com/alibaba/DataX/blob/master/streamreader/doc/streamreader.md Please refer to the streamwriter document:
https://github.com/alibaba/DataX/blob/master/streamwriter/doc/streamwriter.md Please save the following configuration as a json file and use
python {DATAX_HOME}/bin/datax.py {JSON_FILE_NAME}.json
to run the job. {
"job": {
"content": [
{
"reader": {
"name": "streamreader",
"parameter": {
"column": [],
"sliceRecordCount": ""
}
},
"writer": {
"name": "streamwriter",
"parameter": {
"encoding": "",
"print": true
}
}
}
],
"setting": {
"speed": {
"channel": ""
}
}
}
}

(3)根据模板配置案例作业

python /home/ecs-user/module/datax/bin/datax.py -r streamreader -w streamwriter >>./stream2stream.json

(4)启动DataX

三、Q & A

Q1:Python版本问题

Q2:._xxx/plugin.json配置文件不存在问题

6.1、在这里遇到一个报错,因为datax.py中的print函数都是不带小括号的 print "Hello World",而当前python版本为3.6.8(要求需要带括号)。

处理步骤:

(1)查看/usr/bin/etc/alternatives下关于python的内容

(2)修改/etc/alternatives的软连接指向/usr/bin/python2

(3)还有一个unversioned-python的软连接需要修改,指向/usr/bin/python2

(4)命令执行python,查看版本变化

6.2、plugin的._xxxxx/plugin.json配置文件不存在问题

处理步骤:

(1)遇到以上问题,首先我想到的就是创建软连接 ._txtfilereder,指向plugin.json所在的目录

(2)很显然,这种方式不能解决问题。最后使用了如下方式(删掉了plugin目录下reader/writer两个子目录下的所有以._开头的文件)

(3)然后再次启动DataX执行我的job

执行结果
[ecs-user@harley63 plugin]$ python /home/ecs-user/module/datax/bin/datax.py /home/ecs-user/datax_job/stream2stream.json 

DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved. 2024-08-01 09:47:20.233 [main] WARN ConfigParser - 插件[streamreader,streamwriter]加载失败,1s后重试... Exception:Code:[Common-00], Describe:[您提供的配置文件存在错误信息,请检查您的作业配置 .] - 配置信息错误,您提供的配置文件[/home/ecs-user/module/datax/plugin/writer/._mongodbwriter/plugin.json]不存在. 请检查您的配置文件.
2024-08-01 09:47:21.247 [main] ERROR Engine - 经DataX智能分析,该任务最可能的错误原因是:
com.alibaba.datax.common.exception.DataXException: Code:[Common-00], Describe:[您提供的配置文件存在错误信息,请检查您的作业配置 .] - 配置信息错误,您提供的配置文件[/home/ecs-user/module/datax/plugin/writer/._mongodbwriter/plugin.json]不存在. 请检查您的配置文件.
at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:26)
at com.alibaba.datax.common.util.Configuration.from(Configuration.java:95)
at com.alibaba.datax.core.util.ConfigParser.parseOnePluginConfig(ConfigParser.java:153)
at com.alibaba.datax.core.util.ConfigParser.parsePluginConfig(ConfigParser.java:134)
at com.alibaba.datax.core.util.ConfigParser.parse(ConfigParser.java:63)
at com.alibaba.datax.core.Engine.entry(Engine.java:137)
at com.alibaba.datax.core.Engine.main(Engine.java:204) [ecs-user@harley63 plugin]$
[ecs-user@harley63 plugin]$ rm -f /home/ecs-user/module/datax/plugin/writer/._*
[ecs-user@harley63 plugin]$ python /home/ecs-user/module/datax/bin/datax.py /home/ecs-user/datax_job/stream2stream.json DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved. 2024-08-01 09:47:46.596 [main] INFO VMInfo - VMInfo# operatingSystem class => sun.management.OperatingSystemImpl
2024-08-01 09:47:46.604 [main] INFO Engine - the machine info => osInfo: Alibaba 1.8 25.372-b03
jvmInfo: Linux amd64 5.10.134-16.3.al8.x86_64
cpu num: 2 totalPhysicalMemory: -0.00G
freePhysicalMemory: -0.00G
maxFileDescriptorCount: -1
currentOpenFileDescriptorCount: -1 GC Names [ParNew, ConcurrentMarkSweep] MEMORY_NAME | allocation_size | init_size
Par Survivor Space | 16.63MB | 16.63MB
Code Cache | 240.00MB | 2.44MB
Compressed Class Space | 1,024.00MB | 0.00MB
Metaspace | -0.00MB | 0.00MB
Par Eden Space | 133.13MB | 133.13MB
CMS Old Gen | 857.63MB | 857.63MB 2024-08-01 09:47:46.621 [main] INFO Engine -
{
"content":[
{
"reader":{
"name":"streamreader",
"parameter":{
"column":[
{
"type":"long",
"value":"10"
},
{
"type":"string",
"value":"hello, 你好,世界 - DataX"
}
],
"sliceRecordCount":10
}
},
"writer":{
"name":"streamwriter",
"parameter":{
"encoding":"UTF-8",
"print":true
}
}
}
],
"setting":{
"speed":{
"channel":"5"
}
}
} 2024-08-01 09:47:46.642 [main] WARN Engine - prioriy set to 0, because NumberFormatException, the value is: null
2024-08-01 09:47:46.645 [main] INFO PerfTrace - PerfTrace traceId=job_-1, isEnable=false, priority=0
2024-08-01 09:47:46.645 [main] INFO JobContainer - DataX jobContainer starts job.
2024-08-01 09:47:46.646 [main] INFO JobContainer - Set jobId = 0
2024-08-01 09:47:46.670 [job-0] INFO JobContainer - jobContainer starts to do prepare ...
2024-08-01 09:47:46.670 [job-0] INFO JobContainer - DataX Reader.Job [streamreader] do prepare work .
2024-08-01 09:47:46.670 [job-0] INFO JobContainer - DataX Writer.Job [streamwriter] do prepare work .
2024-08-01 09:47:46.670 [job-0] INFO JobContainer - jobContainer starts to do split ...
2024-08-01 09:47:46.671 [job-0] INFO JobContainer - Job set Channel-Number to 5 channels.
2024-08-01 09:47:46.671 [job-0] INFO JobContainer - DataX Reader.Job [streamreader] splits to [5] tasks.
2024-08-01 09:47:46.672 [job-0] INFO JobContainer - DataX Writer.Job [streamwriter] splits to [5] tasks.
2024-08-01 09:47:46.690 [job-0] INFO JobContainer - jobContainer starts to do schedule ...
2024-08-01 09:47:46.699 [job-0] INFO JobContainer - Scheduler starts [1] taskGroups.
2024-08-01 09:47:46.701 [job-0] INFO JobContainer - Running by standalone Mode.
2024-08-01 09:47:46.714 [taskGroup-0] INFO TaskGroupContainer - taskGroupId=[0] start [5] channels for [5] tasks.
2024-08-01 09:47:46.721 [taskGroup-0] INFO Channel - Channel set byte_speed_limit to -1, No bps activated.
2024-08-01 09:47:46.722 [taskGroup-0] INFO Channel - Channel set record_speed_limit to -1, No tps activated.
2024-08-01 09:47:46.737 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[1] attemptCount[1] is started
2024-08-01 09:47:46.742 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[0] attemptCount[1] is started
2024-08-01 09:47:46.750 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[4] attemptCount[1] is started
2024-08-01 09:47:46.753 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[3] attemptCount[1] is started
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
2024-08-01 09:47:46.764 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[2] attemptCount[1] is started
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
10 hello, 你好,世界 - DataX
2024-08-01 09:47:46.865 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[0] is successed, used[126]ms
2024-08-01 09:47:46.865 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[1] is successed, used[135]ms
2024-08-01 09:47:46.865 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[2] is successed, used[110]ms
2024-08-01 09:47:46.866 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[3] is successed, used[114]ms
2024-08-01 09:47:46.866 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[4] is successed, used[122]ms
2024-08-01 09:47:46.866 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] completed it's tasks.
2024-08-01 09:47:56.721 [job-0] INFO StandAloneJobContainerCommunicator - Total 50 records, 1100 bytes | Speed 110B/s, 5 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 0.000s | All Task WaitReaderTime 0.000s | Percentage 100.00%
2024-08-01 09:47:56.722 [job-0] INFO AbstractScheduler - Scheduler accomplished all tasks.
2024-08-01 09:47:56.722 [job-0] INFO JobContainer - DataX Writer.Job [streamwriter] do post work.
2024-08-01 09:47:56.722 [job-0] INFO JobContainer - DataX Reader.Job [streamreader] do post work.
2024-08-01 09:47:56.722 [job-0] INFO JobContainer - DataX jobId [0] completed successfully.
2024-08-01 09:47:56.723 [job-0] INFO HookInvoker - No hook invoked, because base dir not exists or is a file: /home/ecs-user/module/datax/hook
2024-08-01 09:47:56.724 [job-0] INFO JobContainer -
[total cpu info] =>
averageCpu | maxDeltaCpu | minDeltaCpu
-1.00% | -1.00% | -1.00% [total gc info] =>
NAME | totalGCCount | maxDeltaGCCount | minDeltaGCCount | totalGCTime | maxDeltaGCTime | minDeltaGCTime
ParNew | 0 | 0 | 0 | 0.000s | 0.000s | 0.000s
ConcurrentMarkSweep | 0 | 0 | 0 | 0.000s | 0.000s | 0.000s 2024-08-01 09:47:56.724 [job-0] INFO JobContainer - PerfTrace not enable!
2024-08-01 09:47:56.724 [job-0] INFO StandAloneJobContainerCommunicator - Total 50 records, 1100 bytes | Speed 110B/s, 5 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 0.000s | All Task WaitReaderTime 0.000s | Percentage 100.00%
2024-08-01 09:47:56.725 [job-0] INFO JobContainer -
任务启动时刻 : 2024-08-01 09:47:46
任务结束时刻 : 2024-08-01 09:47:56
任务总计耗时 : 10s
任务平均流量 : 110B/s
记录写入速度 : 5rec/s
读出记录总数 : 50
读写失败总数 : 0 [ecs-user@harley63 plugin]$

— 业精于勤荒于嬉,行成于思毁于随 —

DataX - [02] 安装部署的更多相关文章

  1. kafka详解(02) - kafka_2.11-2.4.1安装部署

    kafka详解(02) - kafka_2.11-2.4.1安装部署 环境准备 下载安装包 官网下载地址:https://kafka.apache.org/downloads.html 2.4.1版本 ...

  2. Zookeeper详解(02) - zookeeper安装部署-单机模式-集群模式

    Zookeeper详解(02) - zookeeper安装部署-单机模式-集群模式 安装包下载 官网首页:https://zookeeper.apache.org/ 历史版本下载地址:http://a ...

  3. 最新版CentOS6.5上安装部署ASP.NET MVC4和WebApi

    最新版CentOS6.5上安装部署ASP.NET MVC4和WebApi 使用Jexus5.8.1独立版 http://www.linuxdot.net/ ps:该“独立版”支持64位的CentOS ...

  4. Greenplum 数据库安装部署(生产环境)

    Greenplum 数据库安装部署(生产环境) 硬件配置: 16 台 IBM X3650, 节点配置:CPU 2 * 8core,内存 128GB,硬盘 16 * 900GB,万兆网卡. 万兆交换机. ...

  5. Hadoop入门进阶课程13--Chukwa介绍与安装部署

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  6. Linux系统批量化安装部署之Cobbler

    说明: Cobbler服务器系统:CentOS 5.10 64位 IP地址:192.168.21.128 需要安装部署的Linux系统: eth0(第一块网卡,用于外网)IP地址段:192.168.2 ...

  7. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器 ...

  8. 日志采集框架Flume以及Flume的安装部署(一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统)

    Flume支持众多的source和sink类型,详细手册可参考官方文档,更多source和sink组件 http://flume.apache.org/FlumeUserGuide.html Flum ...

  9. Ansible安装部署以及常用模块详解

    一.  Ansible 介绍Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于py ...

  10. kubernetes1.13.5安装部署

    Kubernetes 一.    Kubernetes介绍 各节点所需组件 Master:docker,kubeadm,kubelet, 组件 版本 备注 Kubelet 1.13.5 组件 Kube ...

随机推荐

  1. ChatGPT自动生成功能测试用例的步骤

    在上一节,我们一起探讨了ChatGPT在功能测试用例生成方面的优势.接下来,我们将探讨ChatGPT自动生成功能测试用例的步骤. 1)    问题定义:让ChatGPT自动生成功能测试用例的第一步是清 ...

  2. 【网站搭建】开源社区Flarum搭建记录

    环境 服务器系统:腾讯云 OpenCloudOS 宝塔版本:免费版8.0.1 Nginx:1.24.0 MySQL:5.7.42 PHP:8.1.21 萌狼蓝天 2023年8月7日 PHP设置 1.安 ...

  3. Java中hashCode() 和 equals()

    该文章为转载(原文链接在结尾),虽然篇幅偏长,但是却能使你真正理解hashCode和queals各自的作用以及之间的联系,尤其是第四部分,读完肯定会让你有所收获. 第1部分 equals() 的作用 ...

  4. .NET 异步 /Task

    老版本的写法经常是以BeginXXX, EndXXX, 或者xx.xxxAsycn(........) 新的支持 async异步关键字配合Task可读性和易用性比老板好多了. 新旧例子: using ...

  5. 【python】如何优雅的终止while循环

    1. 背景需求 python需要与外界或终端交互时,常常需要使用while循环一直跑. 如果需要终止程序,一般使用Ctrl+c,此时终端会打印一大堆backtrace,并且无法保留当前运行的状态,非常 ...

  6. ffmpeg简易播放器(3)--使用ffmpeg解码视频并用opencv显示视频

    ffmpeg的安装 这里我采用的linux下编译源码的方式安装ffmpeg,当然也可以使用apt-get等方式安装,但是我当时使用apt-get安装的ffmpeg使用cmake总是找不到ffmpeg的 ...

  7. 求mod运算

    求A mod B 要求 B必须是2的次方 方法 A mod B = A & (B - 1) 程序 #include <stdio.h> //10 mod 8 = 2 int add ...

  8. 云主机AI服务的性能测试和优化

    本文分享自天翼云开发者社区<云主机AI服务的性能测试和优化>,作者:无敌暴龙兽在云计算的时代,越来越多的人选择将AI模型部署在云主机上,以便利用云服务提供商的弹性和可扩展性.然而,仅仅将A ...

  9. Django Rest Framework的使用

    Django Rest Framework 一.Rest Framework的基本介绍 程序的客户端有很多:硬件设备,游戏,APP,软件,其他的外部服务端. 1. Web应用模式 在开发Web应用中, ...

  10. iceberg调研-查询Iceberg表流程

    1.查询表结构 show create table data_lake_ods.dws_service_subclazz_lesson_user_learn_stat_rt_v2 CREATE TAB ...