踩坑——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的主要内容,如果未能解决你的问题,请参考以下文章
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