踩坑——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"
);
问题描述:将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

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值