• 踩坑——Doris,Can‘t get Kerberos realm, cause by: Can‘t get Kerberos realm


    @羲凡——只为了更好的活着

    踩坑——Doris,java.lang.IllegalArgumentException: Can’t get Kerberos realm, cause by: Can’t get Kerberos realm

    先给出load的命令吧

    温馨提示:因为我导出的表是parquet格式,如果你的不是,要换掉哦,具体看官网

    LOAD LABEL 你的库名.你的任务名
    (
        DATA INFILE("hdfs://你的集群nameservices/你的hdfs目录/*")
        INTO TABLE 你doris的表名
        COLUMNS TERMINATED BY '\\x01'
    	FORMAT  AS  'parquet'
    	(你的列名1, 你的列名2, 你的列名3, 你的列名4, 你的列名5)
        set (
            你的列名3=default_value("d"),
            你的列名4=default_value("20221016")
        )
    )
    WITH BROKER hdfs_broker
    (
        "username"="你的用户名",
        "password"="你的密码",
        "dfs.nameservices"="你的集群nameservices",
        "dfs.ha.namenodes.yumcluster"="你的namenode1别名, 你的namenode2别名",
        "dfs.namenode.rpc-address.yumcluster.你的namenode1别名"="你的namenodeIP1:8020",
        "dfs.namenode.rpc-address.yumcluster.你的namenode2别名"="你的namenodeIP2:8020",
        "dfs.client.failover.proxy.provider" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider",
        "hadoop.security.authentication"="kerberos",
        "kerberos_principal"="你的kerberos_principal",
        "kerberos_keytab"="你的keytab目录"
    )
    PROPERTIES
    (
        "timeout"="3600",
        "max_filter_ratio"="0.1",
        "timezone"="Asia/Shanghai"
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    问题描述:将hive中的数据导出到Doris,由于数据量有几十万甚至上百万,用kettle导出非常慢,所以选择用broker load。我们hdfs集群有HA有kerberos,过程中主要遇到两个报错,报错基本一样但是解决方式却不一样
    第一个报错:type:ETL_RUN_FAIL;
    msg:errCode = 2, detailMessage = Broker list path failed. path=hdfs://X/X/X/X/X/X/*,broker=TNetworkAddress(hostname:X.X.X.59, port:8000),msg=java.lang.IllegalArgumentException: Can’t get Kerberos realm, cause by: Can’t get Kerberos realm
    解决方案:

    第一步:在doris集群的所有节点上部署Kerberos客户端kinit,并配置krb5.conf,填写KDC服务信息;
    第二步:doris集群所在节点安装mysql客户端;
    第三步:在/etc/profile中添加 export KRB5_CONFIG=/etc/krb5.conf,然后source一下;
    第四步:检查broker安装目录的conf下有没有core-site/hdfs-site/hive-site三个文件,没有的话,最好放进去;
    第五步:检查/etc/hosts里面有没有hadoop对应的一些ip和hostname的映射,最好加上;
    第六步:重启be和broker服务

    第二个报错:type:LOAD_RUN_FAIL;
    msg:errCode = 2, detailMessage = Openbroker reader failed, broker:TNetworkAddress(hostname=X.X.X.64, port=8000) failed:java.lang.IllegalArgumentException: Can’t get Kerberos realm, cause by: Can’t get Kerberos realm
    解决方案:

    出现上面报错时,broker load 已经可以成功了,只是我们的broker有多个,在个别的broker上面不成功。解决方案:主要检查 报错的那台机器的 /etc/hosts 看看映射是不是有问题,然后重启该机器的broker和be

    ===========================================================================

    @羲凡——只为了更好的活着

    若对博客中有任何问题,欢迎留言交流

  • 相关阅读:
    一文掌握 Go 文件的读取操作
    Lombok注解的简单使用
    房屋信贷违约风险竞争(kaggle)系列3-探索性数据分析
    创建无序列表
    在C语言中,堆和栈是两种不同的内存分配机制
    spring boot + vue 前后端下载文件文件
    内存层次优化相关的几种方法,,一些内存层次优化相关的知识
    95.qt qml-诺谦通用可扩展多功能QML界面
    2.1数据的表示和运算--进位制
    Ubuntu:apt软件包管理工具
  • 原文地址:https://blog.csdn.net/weixin_42003671/article/details/127665239