Kerberos在集群开启时做了什么
kerberos在浪潮集群中启动时会自动安装clien端,此时它会针对每个服务以及机器创建对应得Principal,这些principal也将创建成Linux内的用户。
注意,这些用户将只存在于创建这些用户的机器上
关于Hive执行HQL时count(*)会出错
Hive跟HDFS一样,在集群开启Kerberos后不需要特别的设置即可使用,然而在试图执行
1
select count( * ) from test
时,会出现以下报错:
原因便是上面提到的,创建的用户只在创建的机器上有,而Hive这个count
其实是启动了一个MapReduce在集群上跑,集群上其他的机器没有nassoft_m这个账号,所以报错说找不到用户名。
解决办法:
在每台机都加上nassoft_m这个账号即可
关于Hive遇到的权限问题
hive很多操作都是对HDFS的,而hdfs默认文件权限为drwxr-xr-x
,即文件创建者拥有全权限,同组及其他用户只拥有读取权限,然而我们登陆的principal很多情况下都不是文件创建者,所以在kerberos启动的情况下使用hive,又时会出现权限不足的报错,就是因为hive可能对hdfs进行了写入操作。
解决办法:
把nassoft_m账号添加到hdfs用户组里,然后使用chmod 777(或者774)命令修改权限
查看zookeeper节点认证失败
解决办法:
在zkCli.sh 中加入
1 JVMFLAGS="-Djava.security.auth.login.config=/usr/hdp/2.6.4.0-91/zookeeper/conf/zookeeper_jaas.conf"
关于Hbase出现的权限不足报错
认证后在hbase中使用命令行出现如下错误:
解决办法:
给相应的用户分配权限
1 | grant 'nassoft_r','RWXCA' |
关于kafka在Kerberos中的使用
命令行稍有变化
生产者端命令为:
bin/kafka-console-producer.sh –broker-list hd2.bigdata:6667 –topic test_wifi2 –producer.config conf/producer.properties –security-protocol SASL_PLAINTEXT
消费者端命令为:
bin/kafka-console-consumer.sh –bootstrap-server hd2.bigdata:6667 –from-beginning –topic test_wifi2 conf/consumer.properties –security-protocol SASL_PLAINTEXT
另外就是java代码中需要添加以下配置:
1 | System.setProperty("java.security.krb5.conf", "E:\\krb5.conf"); |
需要从服务器下载以下3个文件:
- krb5.conf
- kafka_client_jaas.conf
- kafka.service.keytab
其中kafka_client_jaas.conf稍作修改:
1 | Client{ |
solr的相关问题
1 | Kinit nassoft_m |
解决方法:
1 | server/scripts/cloud-scripts/zkcli.sh -zkhost hd2.bigdata:2181,master2.bigdata:2181,master1.bigdata:2181 -cmd put /security.json '{"authentication":{"class": "org.apache.solr.security.KerberosPlugin"}}' |
curl --negotiate -u : "http://hd1.bigdata:8983/solr/"
成功