IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> DATAX踩坑路 -> 正文阅读

[大数据]DATAX踩坑路

背景

需要离线异构数据库的同步工具,并且希望依赖尽量少的外部环境,最好能与阿里云产品相结合,经过调研发现datax比较满足需求所以决定使用datax

datax hdfs 支持parquet

datax hdfs读取和写出支持 textfile、csv、orc 而在我们的业务场景中经常使用parquet,故增加支持parquet功能

  • pom.xml
 <!-- 可不更改 注意看下边 -->
 <hive.version>2.1.1</hive.version> -
 <!-- https://mvnrepository.com/artifact/com.twitter/parquet-tools -->
 <dependency>
       <groupId>org.apache.parquet</groupId>
       <artifactId>parquet-tools</artifactId>
       <version>1.8.1</version>
</dependency>

修改hive version的原因是项目上使用的cdh版本较高,使用1.1.1解析parquet时报错如下故进行升级

Could not read footer: java.io.IOException: Could not read footer for file

  • 升级hive version后,datax支持的kerberos校验会有问题导致报错,故在json配置中增加如下固定配置
"hadoopConfig":{
     "mapreduce.framework.name":"classic",
     "mapreduce.jobtracker.kerberos.principal":"xxxxx",
     "mapreduce.jobtracker.keytab.file":"keytab path"
}

datax hbase11x 修改支持kerberos

项目上需要kerberos验证,而datax不支持,故进行修改

  • 修改后需增加配置如下
"parameter": {
    "kerberos":"true",
    "keyTabKey":"xxx.com",
    "keyTabValue":"${keytab_path}",
    "hbaseSiteXml":"hbase-site.xml path",
    "system": {
        "javax.security.auth.useSubjectCredsOnly": "false",
        "java.security.krb5.conf": "${krb5.conf_path}", 
        "HADOOP_USER_NAME": "kerberos.principal"
    },
    "hbaseConfig": {
        "hadoop.security.authentication": "Kerberos",
        "hbase.client.ipc.pool.size": "20",
        "hadoop.user.name": "xxx.com" ---xxx.com
    },
	
	.....
}

datax 与 hologres 结合

postgresql reader可以满足读取hologres的要求,但在使用postgresqlwriter写hologres时遇到了很大的瓶颈总是报错

具体实现方式请参考
holoclient for datax

datax配置hadoop HA(高可用)

defaultFS 只能配置一个namenode节点 当namenode为高可用时,挂掉配置的那个节点datax任务就会报错,文档上写不支持MA,但通过参数配置是可以支持的,故配置为HA模式。

  • json配置如下
"hadoopConfig":{
   "dfs.nameservices":"yournamespace",
   "dfs.ha.namenodes.yournamespace":"namenode1,namenode2",
   "dfs.namenode.rpc-address.yournamespace.namenode1":"xxxxx:8020",
   "dfs.namenode.rpc-address.yournamespace.namenode2":"xxxxx:8020",
   "dfs.client.failover.proxy.provider.yournamespace": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider",
  "dfs.ha.automatic-failover.enabled.yournamespace":"true"
},

datax的限速

根据datax所提供的模板进行配置的话发现带宽占用量太大会特别轻易把带宽写满,如下
data日志
需要限制datax的速度,阅读文档发现如下描述片段
在这里插入图片描述
直接添加在配置文件job中报错

com.alibaba.datax.common.exception.DataXException: Code:[Framework-03], Description:[DataX引擎配置错误,该问题通常是由于DataX安装错误引起,请联系您的运维解决 .]. - 在有总bps限速条件下,单个channel的bps值不能为空,也不能为非正数
at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:26) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.job.JobContainer.adjustChannelNumber(JobContainer.java:430) ~[datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.job.JobContainer.split(JobContainer.java:387) ~[datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.job.JobContainer.start(JobContainer.java:117) ~[datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.Engine.start(Engine.java:92) [datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.Engine.entry(Engine.java:171) [datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.Engine.main(Engine.java:204) [datax-core-0.0.1-SNAPSHOT.jar:na]

更改为如下配置正确

    "core": {
         "transport" : {
              "channel": {
                   "speed": {
                       "byte": 2000000  //单个channel 2M
                    }
               }
         }
    },
    "job": {
        "setting": {
            "speed": {
                "channel": 5,   // 5个channel
                "byte": 15000000  //总共15M
            }
        },
 
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章           查看所有文章
加:2021-07-25 16:15:03  更:2021-07-25 16:15:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/22 23:48:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码