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

Posted 羲凡丞相

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了踩坑——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

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

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

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

以上是关于踩坑——Doris,Can‘t get Kerberos realm, cause by: Can‘t get Kerberos realm的主要内容,如果未能解决你的问题,请参考以下文章

apt-get can't work

android webview can‘t get vertx session

MySql连接错误:Can't get hostname for your address

Can't get WebApplicationContext object from ContextRegistry.GetContext(): Resource handler for t

MySQL: ERROR13(HY000):Can't get stat of

MySQL数据库罕见的BUG——Can't get hostname for your address