Kerberos常见报错汇总

一.kdb5_util: Password mismatch while reading master key from keyboard

1>.错误复现

2>.错误原因分析

  在初始化Kerberos数据库时需要输入密码,2次密码输入不一致就会导致该错误。

3>.解决方案

  重新执行"kdb5_util -r YINZHENGJIE.COM create -s"指令,输入2次相同的密码即可。

二.kdb5_util: Required parameters in kdc.conf missing while initializing kerberos admin interface

1>.错误复现

2>.错误原因分析

  一般情况下出现在配置文件(kdc.conf)中的"supported_enctypes"的某个加密类型不可用。

3>.解决方案

复制代码

  下面我针对"supported_enctypes"做了修改,大家可以做个对比。使用修改后的参数问题得到解决,之所以贴出来修改后的是为了提供一个参考。修改前:supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal修改后:supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal

复制代码

三.kadmin.local: Required parameters in kdc.conf missing while initializing kadmin.local interface

1>.错误复现

2>.错误原因分析

  一般情况下出现在配置文件(kdc.conf)中的"supported_enctypes"的某个加密类型不可用。

3>.解决方案

  参考案例二。

四.kadmin.local: Cannot open DB2 database '/yinzhengjie/softwares/kerberos/data/principal': No such file or directory while initializing kadmin.local interface

1>.错误复现

2>.错误原因分析

  报错很明显提示咱们找不到DB数据库相关信息。一般情况下是我们在安装Kerberos时没有做数据库初始化操作。

3>.解决方案

  注意观察KDC配置文件("kdc.conf")的"database_name"属性。当我们对Kerberos数据库做了初始化操作时,对生成对应的文件哟~初始化Kerberos数据库的命令如下:kdb5_util -r YINZHENGJIE.COM create -s

五.(Error): WARNING! Cannot find dictionary file /yinzhengjie/softwares/kerberos/data/dict/words, continuing without one.

1>.错误复现

2>.错误原因分析

  根据日志的报错信息可判断,是因为没有对应的文件(由kdc.conf配置文件的"dict_file"标签指定路径)导致的报错信息,但这并不影响您启动程序。

3>.解决方案

复制代码

解决方法很简单,创建响应的文件即可,操作案例如下所示:
[root@kdc.yinzhengjie.com ~]# mkdir -pv /yinzhengjie/softwares/kerberos/data/dict
mkdir: created directory ‘/yinzhengjie/softwares/kerberos/data/dict’
[root@kdc.yinzhengjie.com ~]# 
[root@kdc.yinzhengjie.com ~]# vim /yinzhengjie/softwares/kerberos/data/dict/words
[root@kdc.yinzhengjie.com ~]# 
[root@kdc.yinzhengjie.com ~]# cat /yinzhengjie/softwares/kerberos/data/dict/words
123456
[root@kdc.yinzhengjie.com ~]# 

复制代码

六.Couldn't open log file ${KERBEROS_HOME}/logs/kadmind.log: No such file or directory

1>.错误复现

2>.错误原因分析

  一般是krb5.conf配置文件中的[logging]的"admin_server"标签对应的路径并不存在,建议写绝对路径,若写自定义的Linux变量可能不会被识别哟!

3>.解决方案

复制代码

指定绝对路径即可,下面是我修改krb5.conf配置文件的过程。修改前:
[logging]default = FILE:${KERBEROS_HOME}/logs/krb5libs.logkdc = FILE:${KERBEROS_HOME}/logs/krb5kdc.logadmin_server = FILE:${KERBEROS_HOME}/logs/kadmind.log修改后:
[logging]default = FILE:/yinzhengjie/softwares/kerberos/logs/krb5libs.logkdc = FILE:/yinzhengjie/softwares/kerberos/logs/krb5kdc.logadmin_server = FILE:/yinzhengjie/softwares/kerberos/logs/kadmind.log

复制代码

七.kdb5_util: Cannot open DB2 database '/yinzhengjie/softwares/kerberos/data/yinzhengjie-principal': File exists while creating database '/yinzhengjie/softwares/kerberos/data/yinzhengjie-principal'

1>.错误复现

2>.错误原因分析

  数据库已经存在啦,因此会出现上图所示的错误。温馨提示:Kerberos的数据库初始化一次即可,无需初始化第二次,若你的管理员密码忘记了那就得重新初始化了,但这意味之前的数据必须全部删除。生产环境中要慎重啊!

3>.解决方案

复制代码

  方案一:删除已存在的数据库文件,重新执行初始化操作,这意味着之前的所有数据全部丢失!生产环境要慎重哟,尽量避免不要这样干!方案二:放弃重新初始化操作,因为已经存在数据库文件了,直接使用现有数据库即可,除非你不得不重新初始化操作(比如忘记了KDC管理员的密码)!温馨提示:初始化的数据库密码一定要记住哈,这样可以给你减少不必要的麻烦!

复制代码

八.kadmind: Cannot allocate memory while initializing network, aborting

1>.错误复现

2>.错误原因分析

3>.解决方案

九.官方故障排除案例

  博主推荐阅读:https://web.mit.edu/kerberos/krb5-latest/doc/admin/troubleshoot.html

∨∧Page 2

          Hadoop集群常见报错汇总

                              作者:尹正杰 

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.org.apache.hadoop.security.KerberosAuthException: Login failure for user: hdfs/hadoop101.yinzhengjie.com@YINZHENGJIE.COM from keytab /yinzhengjie/softwares/hadoop/etc/hadoop/conf/hdfs.keytab javax.security.auth.login.LoginException: Unable to obtain password from user

1>.错误复现

2>.错误原因分析

  如上图所示,/yinzhengjie/softwares/hadoop/etc/hadoop/conf/hdfs.keytab文件是存在的,报错是"Unable to obtain password from user"。这就需要我们去检查"hdfs.keytab"文件是否有对应主体(本案例是"hdfs/hadoop101.yinzhengjie.com@YINZHENGJIE.COM")的信息。

3>.解决方案

  检查hdfs.keytab文件是否有对应的服务主体。若没有就需要去KDC服务器重新抽取新的keytab文件并分发到Hadoop集群各节点,若有对应主体就得手动验证登录,验证该主体是否可以成功登录。

二.java.io.IOException: Security is enabled but block access tokens (via dfs.block.access.token.enable) aren't enabled. This may cause issues when clients attempt to connect to a DataNode. Aborting NameNode

1>.错误复现

2>.错误原因分析

  错误原因以及很明显了,是由于没有启用"dfs.block.access.token.enable",其值默认为"false"。在配置Kerberos集群时必须将其值设置为"true"。温馨提示:块访问令牌确保只有授权用户访问DataNodes上的HDFS数据。客户端从NameNode接收到块ID后,将从DataNodes中检索数据。Namenode还发放客户端发送到DataNode的块访问令牌以及数据块访问请求,以用于数据访问。

3>.解决方案

复制代码

  如下所示,将上图报错的参数设置为"true"问题得到解决。别忘记修改hdfs-site.xml文件后,要同步到集群的其它节点哟~<property><name>dfs.block.access.token.enable</name><value>true</value><description>如果为"true",则访问令牌用作访问数据节点的功能。如果为"false",则在访问数据节点时不检查访问令牌。默认值为"false"</description></property>

复制代码

三.java.lang.RuntimeException: Cannot start secure DataNode without configuring either privileged resources or SASL RPC data transfer protection and SSL for HTTP. Using privileged resources in combination with SASL RPC data transfer protection is not supported.

1>.错误复现

2>.错误原因分析

  如果不配置特权资源或SASL RPC数据传输保护和HTTP的SSL,则无法启动secure DataNode。不支持将特权资源与SASL RPC数据传输保护结合使用。此时我们需要配置"dfs.http.policy"属性。

3>.解决方案

复制代码

  如下所示,修改hdfs-site.xml配置文件中的"dfs.data.transfer.protection"和"dfs.http.policy"属性即可。<!-- DataNode SASL配置,若不指定可能导致DataNode启动失败 --><property><name>dfs.data.transfer.protection</name><value>integrity</value><description>逗号分隔的SASL保护值列表,用于在读取或写入块数据时与DataNode进行安全连接。可能的值为:"authentication"(仅表示身份验证,没有完整性或隐私), "integrity"(意味着启用了身份验证和完整性)和"privacy"(意味着所有身份验证,完整性和隐私都已启用)。如果dfs.encrypt.data.transfer设置为true,则它将取代dfs.data.transfer.protection的设置,并强制所有连接必须使用专门的加密SASL握手。对于与在特权端口上侦听的DataNode的连接,将忽略此属性。在这种情况下,假定特权端口的使用建立了足够的信任。</description> </property><property><name>dfs.http.policy</name><value>HTTPS_ONLY</value><description>确定HDFS是否支持HTTPS(SSL)。默认值为"HTTP_ONLY"(仅在http上提供服务),"HTTPS_ONLY"(仅在https上提供服务,DataNode节点设置该值),"HTTP_AND_HTTPS"(同时提供服务在http和https上,NameNode和Secondary NameNode节点设置该值)。</description></property>

复制代码

四.java.io.IOException: java.security.GeneralSecurityException: The property 'ssl.server.keystore.location' has not been set in the ssl configuration file.

1>.错误复现

2>.错误原因分析

  未给HTTPS SSL配置的密钥库位置。指定该熟悉的值在"${HADOOP_HOME}/etc/hadoop/ssl-server.xml"文件中指定即可。

3>.解决方案

  检查Hadoop集群是否配置了https,若未配置可参考我之前写的笔记即可。博主推荐阅读:https://www.cnblogs.com/yinzhengjie/p/13461151.html

.javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Clock skew too great (37) - PROCESS_TGS)]

1>.错误复现

2>.错误原因分析

  这个错误已经很明显了,是因为当前节点机器和KDC机器的时间差太大了,您可用登录一下KDC服务器查看一下时间,再登录DataNode节点查看一下时间。事实上你会发现这个差距的确不小,如下图所示(很抱歉哈,当时的命令行被我敲击的"history"命令给覆盖了,但下图配置chrony进行时间同步后,从结果上来看差距还是蛮大的,直接相差接近16个小时哟~),我的DataNode和KDC服务器之间的时间差的确很大。

3>.解决方案

  知道错误原因在哪里了,那么解决起来就不是事情了,毕竟您已经找到要解决的方向了,关于集群时间同步的组件比如nptd或者chrony均可以解决该问题。我推荐大家使用chrony组件来进行集群内时间同步。博主推荐阅读:https://www.cnblogs.com/yinzhengjie/p/12292549.html

六.ls: Failed on local exception: java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]; Host Details : local host is: "hadoop102.yinzhengjie.com/172.200.6.102"; destination host is: "hadoop101.yinzhengjie.com":9000;

1>.错误复现

2>.错误原因分析

  从上图想必大家已经看出端倪了,没错,就是未提供有效凭据。这是我们启用了Kerberos认值后,若再想要使用命令行进行访问的话,就必须先做Kerberos认证才行!

3>.解决方案

  如下图所示,进行Kerberos验证即可访问HDFS集群啦~关于如何基于Kerberos的KDC服务器创建主体以及keytab文件,可以参考我之前的笔记。博主推荐阅读:https://www.cnblogs.com/yinzhengjie2020/p/13616881.html

 [root@hadoop102.yinzhengjie.com ~]# kinit -kt /yinzhengjie/softwares/hadoop/etc/hadoop/conf/hdfs.keytab dn/hadoop101.yinzhengjie.com@YINZHENGJIE.COM

六.Exception in thread "main" java.lang.IllegalArgumentException: Can't get Kerberos realm

1>.错误复现

2>.错误原因分析

  从上图Java的堆栈的报错信息可以看出,获取不到默认的Kerberos领域(realm)信息。这种情况大多数都是由于配置文件未放置到正确的路径导致的。我们按照Kerberos习惯性将Kerberos的配置文件放置在"C:\ProgramData\MIT\Kerberos5"路径,但Hadoop查找Kerberos文件并不会去该路径找,它会去"C:\Windows\krb5.ini"找,若找不到就会报错!

3>.解决方案

  如下图所示,将"C:\ProgramData\MIT\Kerberos5\krb5.ini"拷贝一份到"C:\Windows\krb5.ini"即可解决问题。

七.mkdir: Permission denied: user=root, access=WRITE, inode="/":nn:yinzhengjie:drwxr-xr-x

1>.错误复现

2>.错误原因分析

  很明显,这是权限问题导致的,它说当前用户是root,而根节点的超级用户是nn,超级用户组是yinzhengjie。很明显,root用户既不属于HDFS的超级用户,也不属于HDFS的超级用户组。因此权限创建目录时权限被拒绝。

3>.解决方案

  找到错误原因就可以对症下药啦,解决方法很简单,如下图所示,我们只需要将Kerberos认证用户更换为HDFS的超级用户即可。

八.The ServiceName: mapreduce.shuffle set in yarn.nodemanager.aux-services is invalid.The valid service name should only contain a-zA-Z0-9_ and can not start with numbers

1>.错误复现

2>.错误原因分析

  从报错信息估计很多小伙伴已经定位问题了,说是yarn.nodemanager.aux-services配置参数无效。yarn.nodemanager.aux-services的值应该设置为"a-zA-Z0-9_"。于是,我检查了自己的配置文件(${HADOOP_HOME}/etc/hadoop/yarn-site.xml),发现的确是出现问题了,如下图所示。

3>.解决方案

  如下图所示,将对应的value修改后分发到Hadoop节点即可。

九.Aggregation is not enabled. Try the nodemanager at hadoop104.yinzhengjie.com:31424

1>.错误复现

2>.错误原因分析

  这个错误原因是由于我们没有启用日志聚合功能导致的,想要解决该问题,可以开启日志聚合功能,即将"yarn.log-aggregation-enable"的值设置为true。温馨提示:如果你将"yarn.log-aggregation-enable"的值设置为其他值,例如"ture",你依旧会发现日志功能没有启动哟~

3>.解决方案

复制代码

  如下所示,将"yarn.log-aggregation-enable"的值设置为"true"即可。<property><name>yarn.log-aggregation-enable</name><value>true</value><description>每个DataNode上的NodeManager使用此属性来聚合应用程序日志。默认值为"false",启用日志聚合时,Hadoop收集作为应用程序一部分的每个容器的日志,并在应用完成后将这些文件移动到HDFS。可以使用"yarn.nodemanager.remote-app-log-dir"和"yarn.nodemanager.remote-app-log-dir-suffix"属性来指定在HDFS中聚合日志的位置。</description></property>

复制代码

十.Failed while trying to construct the redirect url to the log server. Log Server url may not be configured

1>.错误复现

2>.错误原因分析

  我们知道开启日志聚合不仅仅要将"yarn.log-aggregation-enable"的值设置为true,还需指定正确的"yarn.log.server.url"参数。根据错误提示信息,想必大家也大概定位问题了,说是连接聚合日志服务器失败了,此时请检查"yarn-site.xml"配置文件中的"yarn.log.server.url"属性值是否配置正确,即是否指向了正确的日志聚合服务器呢?

3>.解决方案

复制代码

  如下所示,我们只需为"yarn.log.server.url"配置JobHistoryServer的URL即可。<property><name>yarn.log.server.url</name><value>http://hadoop105.yinzhengjie.com:19888/yinzhengjie/history_logs/aggregation</value><description>指定日志聚合服务器的URL,若不指定,默认值为空。</description></property>温馨提示:当我们配置好yarn.log-aggregation-enable和yarn.log.server.url属性后,建议重启一下YARN和HistoryServer服务,使得配置立即生效。如果您也能在ResourceManager Web UI看到类型下面的日志信息,说明您的日志聚合功能配置是正确的哟~

复制代码

十一.Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster

1>.错误复现

2>.错误原因分析

  从上图的报错信息("Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster")可得知,这是由于找不到主类导致的,解决方案上图已经给出来了,需要我们手动指定Hadoop的环境变量。

3>.解决方案 

复制代码

  我参考其提示信息,分别将"yarn.app.mapreduce.am.env","mapreduce.map.env"和"mapreduce.reduce.env"的值设置成"HADOOP_MAPRED_HOME=${HADOOP_HOME}",发现并没有解决问题。于是我又将这3个值改值改为绝对路径"HADOOP_MAPRED_HOME=/yinzhengjie/softwares/hadoop"(改成绝对路径我是怀疑过mapred-site.xml识别不了"$HADOOP_HOME变量的"),发现依旧解决不了问题。目前给出两个解决方案:方案一(修改"${HADOOP_HOME}/etc/hadoop/yarn-site.xml"配置文件):要么就不设置"yarn.application.classpath"的值,即将其设置为空。如下图所示,建议将"yarn.application.classpath"的值设置为:"yarn classpath"命令的执行结果。方案二(修改"${HADOOP_HOME}/etc/hadoop/mapred-site.xml"配置文件):要么就不设置"yarn.app.mapreduce.am.env","mapreduce.map.env"和"mapreduce.reduce.env"的值,即将其设置为空。若要设置,若要设置,建议将"mapreduce.application.classpath"的值设置为"mapred classpath"命令的执行结果。

复制代码

十二.Container exited with a non-zero exit code 1. Error file: prelaunch.err.

1>.错误复现

2>.错误原因分析

复制代码

  不得不说,这个问题的确困扰了我一个上午,我还去网上尝试了几乎所有的解决方案,没有一种能解决的,我当时很郁闷啊。但仔细看看错误输出,其中"prelaunch.err "是启动前错误,也就是在container启动之前就出问题了,这个时候我终于得到了启发,问题应该定位跟启动JVM相关的参数上。如下图所示,我检查了"${HADOOP_HOME}/etc/hadoop/mapred-site.xml"的参数,下面有关于"mapreduce.map.java.opts"的值我设置为"-Xmx1536"。可能有的小伙伴已经发现错误了,我少写了一个计量单位(比如KB,MB,GB等),问题就出在这里,应该写的值为"-Xmx1536m",问题得到解决。

复制代码

3>.解决方案

  如下图所示,我们在指定JVM启动参数时,一定要加上单位,否则就容易抛出"Container exited with a non-zero exit code 1. Error file: prelaunch.err."异常哟~排除问题的方案:我这里有个方法虽然笨,但无论遇到任何问题都可以用该方法来定位问题,那就是用排除法,即将配置正确的项保留,把配置不确定的项注释掉,如上图所示,我就是采用该方法来定位问题的。

十三.java.lang.IllegalArgumentException: Illegal capacity of -1.0 for queue root.yinzhengjie

1>.错误复现

2>.错误原因

  我们都知道Apache Hadoop的调度器默认是容量调度,因此我们需要为咱们定义的队列按照百分比配置其容量大小,若没有配置就会抛出异常。

3>.解决方案

复制代码

  既然知道错误原因在哪里了,那解决起来相对来说就比较简单了。如下所示,我为容量调度器指定了2个自顶级队列,分别为:"default"和"yinzhengjie"。<property><name>yarn.scheduler.capacity.root.queues</name><value>default,yinzhengjie</value><description>这是为root顶级队列定义子队列,默认值为:"default"</description></property>但光配置上面是不够的,我们还需要为队列分配容量,假设让"yinzhengjie"队列的容量是"default"队列容量的4倍,我们可以这样配置:<property><name>yarn.scheduler.capacity.root.yinzhengjie.capacity</name><value>80</value><description>指定"yinzhengjie"队列的大小,这里指定的是一个"yinzhengjie"队列占"root"队列的百分比,即80%的资源</description></property><property><name>yarn.scheduler.capacity.root.default.capacity</name><value>20</value><description>指定"default"队列大小,占root队列的20%的资源</description></property>

复制代码

十四.refreshQueues: java.io.IOException: Failed to re-init queues : Can not convert the leaf queue: root.yinzhengjie to parent queue since it is not yet in stopped state. Current State : RUNNING

1>.错误复现

2>.错误原因

  众所周知,我们仅能向容量调度器的叶子队列提交Job,而不能向父队列提交Job。那么问题已经很明显了,是由于我们将现有的叶子队列更改为父队列导致的错误,因为叶子队列正在运行(其队列状态为:RUNNING),要想将一个队列设置为父队列,则其状态必须为STOPPED。

3>.解决方案 

  如果单纯解决该错误的话比较简单,要么还原配置,要么使得现有配置生效。我们应该仔细检查配置文件,是否真的要按照配置文件执行,要使得现有配置文件生效,则必须让父队列由RUNNING状态变为STOPPED状态,最简单的办法就是重启YARN集群。当然,通过检查配置文件发现,是由于你"手误"把配置文件配错了(也就是说配置语法没问题,但并不符合你之前设计的逻辑),这时候应该及时还原之前的配置,避免重启YARN集群导致此配置真的生效啦~

十五.Failed to re-init queues : The parent queue:yinzhengjie state is STOPPED, child queue:operation state cannot be RUNNING.

1>.错误复现

2>.错误原因分析

复制代码

  错误原因已经提示的很明显了,说是父队列状态为STOPPED状态,而子队列的状态为RUNNING状态。仔细检查了文档"${HADOOP_HOME}/etc/hadoop/capacity-scheduler.xml"的配置内容如下(果真是将父队列设置为了STOPPED状态,而子队列设置为了"RUNNING"状态):[root@hadoop101.yinzhengjie.com ~]# vim ${HADOOP_HOME}/etc/hadoop/capacity-scheduler.xml...<property><name>yarn.scheduler.capacity.root.yinzhengjie.state</name><value>STOPPED</value><description>将"root.yinzhengjie"队列的状态设置为"RUNNING"状态</description></property><property><name>yarn.scheduler.capacity.root.yinzhengjie.operation.state</name><value>RUNNING</value><description></description></property>...[root@hadoop101.yinzhengjie.com ~]# 

复制代码

3>.解决方案

复制代码

  解决方案就是仔细检查"${HADOOP_HOME}/etc/hadoop/capacity-scheduler.xml"的配置内容,观察你配置的队列其父队列是否为STOPPED状态。若真想启用当前队列为RUNNING状态,则需要将其父队列改为RUNNING状态,当然,如果父队列为RUNNING状态,则子队列依旧是可以设置为STOPPED状态的哟~[root@hadoop101.yinzhengjie.com ~]# vim ${HADOOP_HOME}/etc/hadoop/capacity-scheduler.xml...<property><name>yarn.scheduler.capacity.root.yinzhengjie.state</name><value>RUNNING</value><description>将"root.yinzhengjie"队列的状态设置为"RUNNING"状态</description></property><property><name>yarn.scheduler.capacity.root.yinzhengjie.operation.state</name><value>RUNNING</value><description></description></property>...[root@hadoop101.yinzhengjie.com ~]# 

复制代码

十六.Logs not available for job_1604871808583_0020. Aggregation may not be complete.

1>.错误复现

2>.错误原因分析

复制代码

  出现此错误可能有以下两种情况:(1)配置日志聚合的参数可能出现错误;(2)日志聚合的参数配置正确,但未重启YARN和HistoryServer服务。温馨提示:当配置启用日志聚合功能后,需要重启服务才能生效哟~

复制代码

3>.解决方案

  检查日志聚合相关参数是否配置正确,若配置正确请重启YARN集群和HistoryServer服务即可。

十七.

十八.

十九.ls: Failed on local exception: java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)];

1>.错误复现

2>.错误原因分析

复制代码

  错误原因已经很明显了,说是找不到Kerberos凭证,但我的字符终端已经进行了Kerberos验证。首先排除时间同步问题,因为我的Windows主机和KDC服务器时间是同步的!其次排除票据过期问题,因为我的票据距离过期还有24小时!于是我上网上找了很多文章,基本上解决思路如下面2个连接所示:https://community.cloudera.com/t5/Community-Articles/Alternate-days-why-do-i-see-GSSException-No-valid/ta-p/248378https://aws.amazon.com/cn/premiumsupport/knowledge-center/kerberos-expired-ticket-emr/基本套路都是一样的,都是让先进性Kerberos认证,可问题在于我已经认证过了,依旧出现该问题!因此,本错误案例我没有找到错误原因,我初步怀疑和操作系统有关!因为同样的配置文件在Linux上做相同的操作的确是可以访问到数据的哟~

复制代码

3>.解决方案

  建议使用Linux操作系统进行尝试,因为Linux操作系统经过Kerberos验证成功后就可以正常访问HDFS集群,但是window操作系统目前还没有找到靠谱的解决方案。有该问题的解决方案科请不吝赐教。可在博客出留言,谢谢~

                         

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/91580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mendix中的依赖管理:npm和Maven的应用

序言 在传统java开发项目中&#xff0c;我们可以利用maven来管理jar包依赖&#xff0c;但在mendix项目开发Custom Java Action时&#xff0c;由于目录结构有一些差异&#xff0c;我们需要自行配置。同样的&#xff0c;在mendix项目开发Custom JavaScript Action时&#xff0c;…

数据集笔记:旧金山共享单车OD数据

数据地址&#xff1a;System Data | Bay Wheels | Lyft

使用不同尺寸的传感器拍照时,怎么保证拍出同样视场范围的照片?

1、问题背景 使用竞品机做图像效果对比时&#xff0c;我们通常都会要求拍摄的照片要视场范围一致&#xff0c;这样才具有可比性。之前我会考虑用同样焦距、同样分辨率的设备去拍照对比就可以了&#xff0c;觉得相机的视场范围只由镜头焦距来决定。 但如果对于不同尺寸的传感器…

【Java 进阶篇】MySQL 数据控制语言(DCL):管理用户权限

MySQL 是一个强大的关系型数据库管理系统&#xff0c;提供了丰富的功能和选项来管理数据库和用户。数据库管理员&#xff08;DBA&#xff09;通常使用数据控制语言&#xff08;Data Control Language&#xff0c;简称 DCL&#xff09;来管理用户的权限和访问。 本文将详细介绍…

定义现代化实时数据仓库,SelectDB 全新产品形态全面发布

导读&#xff1a;9 月 25 日&#xff0c;2023 飞轮科技产品发布会在线上正式召开&#xff0c;本次产品发布会以 “新内核、新图景” 为主题&#xff0c;飞轮科技 CEO 马如悦全面解析了现代化数据仓库的演进趋势&#xff0c;宣布立足于多云之上的 SelectDB Cloud 云服务全面开放…

数据结构——堆(C语言)

本篇会解决一下几个问题&#xff1a; 1.堆是什么&#xff1f; 2.如何形成一个堆&#xff1f; 3.堆的应用场景 堆是什么&#xff1f; 堆总是一颗完全二叉树堆的某个节点总是不大于或不小于父亲节点 如图&#xff0c;在小堆中&#xff0c;父亲节点总是小于孩子节点的。 如图&a…

华为ensp单臂路由及OSPF实验

单臂路由及OSPF实验 1.1实验背景 在这个实验中&#xff0c;我们模拟了一个复杂的网络环境&#xff0c;该网络环境包括多个子网和交换机。这个实验旨在帮助网络工程师和管理员了解如何配置单臂路由和使用开放最短路径优先&#xff08;OSPF&#xff09;协议来实现不同子网之间的…

从 低信噪比陆上地震记录 解决办法收集 到 走时层析反演中的折射层析调研

目录 (前言1) 关于背景的回答:(前言2) 现有的降低噪声, 提高信噪比的一些特有方法的论文资料 (传统策略):1. 关于波形反演与走时层析反演2. 折射层析3. 用一个合成数据来解释折射层析反演的思路4. 其他层析反演方法:5. 关于层析反演的一些TIPS (可补充)参考文献: 降噪有关资料参…

SpringBoot使用Docker并上传至DockerHub

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 文章目录 1.系列文章2.构建docker镜像的方式3.docker操作3.1 安装docker3.2 查看docker镜像3.3 本地运行docker3.4 修改tag3.5 推送docker镜像3.6 远端server拉取d…

FOC控制算法

目录 一、FOC介绍 二、FOC基本概念 1、为什么是三相&#xff1f; 2、FOC矢量控制总体算法简述 3、为什么FOC不一定需要电流采样&#xff1f;参考链接 4、FOC的分类 &#xff08;1&#xff09;有感FOC与无感FOC 三、FOC中电流采样 参考链接 1、高端采样 2、低端采样 …

AI项目十三:PaddleOCR训练自定义数据集

若该文为原创文章&#xff0c;转载请注明原文出处。 续上一篇&#xff0c;PaddleOCR环境搭建好了&#xff0c;并测试通过&#xff0c;接下来训练自己的检测模型和识别模型。 paddleocr检测模型训练 1、准备数据集 在PaddleOCR目录下新建文件夹&#xff1a;train_data, 这个…

深度学习:模型训练过程中Trying to backward through the graph a second time解决方案

1 问题描述 在训练lstm网络过程中出现如下错误&#xff1a; Traceback (most recent call last):File "D:\code\lstm_emotion_analyse\text_analyse.py", line 82, in <module>loss.backward()File "C:\Users\lishu\anaconda3\envs\pt2\lib\site-packag…

【0223】源码剖析smgr底层设计机制(3)

1. smgr设计机制 PG内核中smgr完整磁盘存储介质的管理是通过下面三部分实现的。 1.1 函数指针结构体 f_smgr 函数指针结构体 f_smgr。 通过该函数指针类型,可完成类似于UNIX系统中的VFD功能,上层只需要调用open()、read()、write()等系统函数,用户不必去关系底层的文件系统…

「网页开发|前端开发|Vue」09 Vue状态管理Vuex:让页面根据用户登录状态渲染不同内容

本文主要介绍如何通过Vue的状态管理框架Vuex来管理一些被不同组件或不同页面共同使用的数据&#xff0c;然后展示如何通过状态管理用户信息&#xff0c;并且在具体页面获取用户信息&#xff0c;并且根据用户信息的不同展示不同的页面内容。 文章目录 本系列前文传送门一、场景…

C++核心编程--对象篇

4.2、对象 4.2.1、对象的初始化和清理 用于对对象进行初始化设置&#xff0c;以及对象销毁前的清理数据的设置。 构造函数和析构函数 防止对象初始化和清理也是非常重要的安全问题 一个对象或变量没有初始化状态&#xff0c;对其使用后果是未知的同样使用完一个对象或变量&…

【C++学习】多态

目录 一、多态的概念 1. 概念 二、多态的定义及实现 2.1 多态的构成条件 2.2 虚函数 2.3 虚函数的重写 2.4 C11 override 和 final 2.5 重载、覆盖(重写)、隐藏(重定义)的对比 三、抽象类 3.1 概念 3.2 接口继承和实现继承 四、多态的原理 4.1 虚函数表 4.2 多态的…

【大规模 MIMO 检测】基于ADMM的大型MU-MIMO无穷大范数检测研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

CCF CSP认证 历年题目自练Day17

CCF CSP认证 历年题目自练Day17 题目一 试题编号&#xff1a; 201803-1 试题名称&#xff1a; 跳一跳 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 256.0MB 问题描述&#xff1a; 问题描述   近来&#xff0c;跳一跳这款小游戏风靡全国&#xff0c;受到不少玩家的喜爱…

[Machine learning][Part3] numpy 矢量矩阵操作的基础知识

很久不接触数学了&#xff0c;machine learning需要用到一些数学知识&#xff0c;这里在重温一下相关的数学基础知识 矢量 矢量是有序的数字数组。在表示法中&#xff0c;矢量用小写粗体字母表示。矢量的元素都是相同的类型。例如&#xff0c;矢量不包含字符和数字。数组中元…

在比特币上支持椭圆曲线 BLS12–381

通过使用智能合约实现来支持任何曲线 BLS12–381 是一种较新的配对友好型椭圆曲线。 与常用的 BN-256 曲线相比&#xff0c;BLS12-381 的安全性明显更高&#xff0c;并且安全目标是 128 位。 所有其他区块链&#xff0c;例如 Zcash 和以太坊&#xff0c;都必须通过硬分叉才能升…