Datax系列(一)Datax安装

一、容器化部署

1.1 拉取python环境镜像到本地

shell>docker pull centos/python-27-centos7

1.2 准备JDK和datax

https://github.com/alibaba/DataX

大数据Datax系列(一)Datax安装插图

1.3 编写Dockerfile

[root@rancher datax]# cat Dockerfile 
FROM centos/python-27-centos7
#安装jdk
COPY jdk /data/app/jdk
ENV JAVA_HOME /data/app/jdk
ENV PATH $JAVA_HOME/bin:$PATH
 
# 添加并解压datax文件到/opt/local 目录
COPY datax /data/app/datax
 
# 设置运行的工作目录,可不添加,运行中使用 docker -w 指定
WORKDIR /data/app/datax
 
ENTRYPOINT ["bash"]

1.4 构建镜像

shell>docker build -t="datax" .
shell>docker run -t -i --name datax datex

1.5 检查环境

shell>(app-root)bash-4.2$ java -version
shell> python

1.6运行Datax测试

shell>python bin/datax.py job/job.json

二、直接下载 DataX工具包部署

2.1 下载工具包

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

2.2 解压

shell>wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
shell>tar -zxvf datax.tar.gz -C /data/app/
shell>cd /data/app/datax

2.3 创建软链接及设置环境变量(选做)

[root@rancher datax]# ln -s ./bin/datax.py /usr/local/datax.py
[root@rancher datax]# vim /etc/profile
####Datax_HOME
export DATAX_HOME=/usr/local/datax
[root@rancher datax]# source /etc/profile

2.5 测试

2.5.1 创建测试Json

tee job/stream2stream.json <<'EOF'
{
  "job": {
      "content": [
          {
            // 读插件
            "reader": {
                "name": "streamreader", // 指定插件名称
                "parameter": {
                    "column": [  // 字段类与值 (必须进行指定)
                      {
                        "value": "WeiyiGeek",
                        "type": "string"
                      },
                      {
                        "value": 2021,
                        "type": "long"
                      },
                      {
                        "value": "2021-01-01 00:00:00",
                        "type": "date"
                      },
                      {
                        "value": true,
                        "type": "bool"
                      },
                      {
                        "value": "test",
                        "type": "bytes"
                      }
                    ],
                    "sliceRecordCount": "10" // 切片记录计数
                }
            },
            // 写插件
            "writer": {
                "name": "streamwriter",  // 指定使用的插件名称
                "parameter": {
                    "encoding": "UTF-8",  // 编码格式
                    "print": true         // 是否终端打印
                }
            }
          }
      ],
      "setting": {
          "speed": {             // 同步速度采用的类型
              "channel": "2"     // 并发数
              //"byte": 10485760 // 字节数
          }
      }
  }
}
EOF

2.5.2 测试测试Json

[root@rancher datax]# python bin/datax.py job/stream2stream.json

2.6 日志截取

在执行后,会在/data/app/datax/logs/{日期}中生成日志文件

我们可以通过shell脚本来截取日志

[root@rancher 2022-07-31]# ll
total 32
-rw-r--r-- 1 root root 6619 Jul 31 10:25 b_stream2stream_json-10_25_11.826.log
-rw-r--r-- 1 root root 6619 Jul 31 10:44 b_stream2stream_json-10_44_12.783.log
-rw-r--r-- 1 root root  100 Jul 31 11:05 datax_log.sh
-rw-r--r-- 1 root root 8779 Jul 31 10:23 p_datax_job_job_json-10_23_20.715.log
[root@rancher 2022-07-31]# 
[root@rancher 2022-07-31]# 
[root@rancher 2022-07-31]# cat b_stream2stream_json-10_44_12.783.log |grep "读出记录总数"  |awk '{print $3}'
20

截取日志脚本:

[root@rancher 2022-07-31]# cat datax_log.sh 
#!/bin/bash

 echo "当前日志文件:"$1 
 
 cat $1 |grep "读出记录总数"  |awk '{print $3}'
###########执行脚本
[root@rancher 2022-07-31]# bash  datax_log.sh b_stream2stream_json-10_44_12.783.log
当前日志文件:b_stream2stream_json-10_44_12.783.log
20