运行 Hive Cli 需要什么权限
What permissions are required to run Hive Cli
我发现 运行Hive CLI 存在问题。当我 运行 边缘节点上的 CLI 时,我收到以下有关 HDFS 权限的错误:
c784gnj:~ # sudo hive
/usr/lib/hive/conf/hive-env.sh: line 5: /usr/lib/hive/lib/hive-hbase-handler-1.1.0-cdh5.5.2.jar,/usr/lib/hbase/hbase-common.jar,/usr/lib/hbase/lib/htrace-core4-4.0.1-incubating.jar,/usr/lib/hbase/lib/htrace-core-3.2.0-incubating.jar,/usr/lib/hbase/lib/htrace-core.jar,/usr/lib/hbase/hbase-hadoop2-compat.jar,/usr/lib/hbase/hbase-client.jar,/usr/lib/hbase/hbase-server.jar,/usr/lib/hbase/hbase-hadoop-compat.jar,/usr/lib/hbase/hbase-protocol.jar: No such file or directory
Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
16/10/11 10:35:49 WARN conf.HiveConf: HiveConf of name hive.metastore.local does not exist
Logging initialized using configuration in jar:file:/usr/lib/hive/lib/hive-common-1.1.0-cdh5.5.2.jar!/hive-log4j.properties
Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.security.AccessControlException: Permission denied: user=app1_K, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.checkFsPermission(DefaultAuthorizationProvider.java:257)
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.check(DefaultAuthorizationProvider.java:238)
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.check(DefaultAuthorizationProvider.java:216)
hive 试图在 HDFS 的 /user 目录中写入什么?
我已经可以看到 /user/hive 已创建:
drwxrwxr-t - hive hive 0 2015-03-16 22:17 /user/hive
如您所见,我支持 Hadoop 上的 kerberos 身份验证。
提前致谢!
日志显示您需要将 HDFS /user
目录的权限设置为用户 app1_K
命令
hadoop fs -setfacl -m -R user:app1_K:rwx /user
从 Hadoop bin 以特权用户身份执行此命令
如果您在任何其他 hdfs 目录上遇到类似的权限错误,那么您必须授予对该目录的权限。
请参阅下面的 link 了解更多信息。
不像@Kumar 建议的那样完全禁用 HDFS 访问权限,您可以简单地为系统上的每个新用户创建一个 HDFS 主目录,这样 Hive/Spark/Pig/Sqoop 作业具有创建临时文件的有效位置...
在基于 Kerberos 的集群上:
kinit hdfs@MY.REALM
hdfs dfs -mkdir /user/app1_k
hdfs dfs -chown app1_k:app1_k /user/app1_k
否则:
export HADOOP_USER_NAME=hdfs
hdfs dfs -mkdir /user/app1_k
hdfs dfs -chown app1_k:app1_k /user/app1_k
我发现 运行Hive CLI 存在问题。当我 运行 边缘节点上的 CLI 时,我收到以下有关 HDFS 权限的错误:
c784gnj:~ # sudo hive
/usr/lib/hive/conf/hive-env.sh: line 5: /usr/lib/hive/lib/hive-hbase-handler-1.1.0-cdh5.5.2.jar,/usr/lib/hbase/hbase-common.jar,/usr/lib/hbase/lib/htrace-core4-4.0.1-incubating.jar,/usr/lib/hbase/lib/htrace-core-3.2.0-incubating.jar,/usr/lib/hbase/lib/htrace-core.jar,/usr/lib/hbase/hbase-hadoop2-compat.jar,/usr/lib/hbase/hbase-client.jar,/usr/lib/hbase/hbase-server.jar,/usr/lib/hbase/hbase-hadoop-compat.jar,/usr/lib/hbase/hbase-protocol.jar: No such file or directory
Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
16/10/11 10:35:49 WARN conf.HiveConf: HiveConf of name hive.metastore.local does not exist
Logging initialized using configuration in jar:file:/usr/lib/hive/lib/hive-common-1.1.0-cdh5.5.2.jar!/hive-log4j.properties
Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.security.AccessControlException: Permission denied: user=app1_K, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.checkFsPermission(DefaultAuthorizationProvider.java:257)
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.check(DefaultAuthorizationProvider.java:238)
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.check(DefaultAuthorizationProvider.java:216)
hive 试图在 HDFS 的 /user 目录中写入什么?
我已经可以看到 /user/hive 已创建:
drwxrwxr-t - hive hive 0 2015-03-16 22:17 /user/hive
如您所见,我支持 Hadoop 上的 kerberos 身份验证。
提前致谢!
日志显示您需要将 HDFS /user
目录的权限设置为用户 app1_K
命令
hadoop fs -setfacl -m -R user:app1_K:rwx /user
从 Hadoop bin 以特权用户身份执行此命令
如果您在任何其他 hdfs 目录上遇到类似的权限错误,那么您必须授予对该目录的权限。
请参阅下面的 link 了解更多信息。
不像@Kumar 建议的那样完全禁用 HDFS 访问权限,您可以简单地为系统上的每个新用户创建一个 HDFS 主目录,这样 Hive/Spark/Pig/Sqoop 作业具有创建临时文件的有效位置...
在基于 Kerberos 的集群上:
kinit hdfs@MY.REALM
hdfs dfs -mkdir /user/app1_k
hdfs dfs -chown app1_k:app1_k /user/app1_k
否则:
export HADOOP_USER_NAME=hdfs
hdfs dfs -mkdir /user/app1_k
hdfs dfs -chown app1_k:app1_k /user/app1_k