前置操作: 拷贝到 sparkconf/目录 ; 启动了hadoop集群, 启动spark ; sbin/ ; bin/beeline -u jdbc:hive2://hadoop102:10000 -n root
就报错了:
Connecting to jdbc:hive2://hadoop102:10000
Error: Could not open client transport with JDBC Uri: jdbc:hive2://hadoop102:10000: Failed to open new session: : : : Permission denied: user=root, access=EXECUTE, inode="/tmp":tm:supergroup:drwxrwx---
at (:399)
at (:315)
at (:242)
at (:193)
at (:606)
at (:1804)
at (:1822)
at (:677)
at (:114)
at (:3131)
at (:1173)
at (ClientNamenodeProtocolServerSideTranslatorP
原因:(不理解)
hdfs上没有root用户,也没有对应的文件夹/user/root
会默认以root身份去将作业写入hdfs文件系统中,对应的也就是 HDFS 上的/user/xxx , 我的为/user/root, 由于 root用户对hdfs目录并没有写入权限,所以导致异常的发生。而hdfs才有权限创建/user/root
解决方案一(解决简单,但是不推荐)
(1)查看sudoers文件,看是否有添加tm ALL=(ALL) ALL;
这里tm是一个用户
(2)查看配置文件permission下是否为false。
<property>
<name></name>
<value>false</value>
</property>
重启集群即可
还有其他方案看不懂:参考博客