谦先生的bug日志之hive启动权限问题

363 阅读1分钟
原文链接: www.shsxt.com

上海尚学堂谦先生的bug日志之hive启动权限问题

这几天开始做新老集群的迁移,今天开始对hive的所有数据进行迁移,主要是表的元信息和表数据。表的元信息我们存在mysql中,跟hive的服务器并不在同一个服务器上,因此这块我们不用怎么操心。但是表数据的话,我们就把hdfs的目录给迁移过去就可以了,我们用到了hadoop的快速分布式拷贝,中间会遇到一些关于数据如何避免走外网的问题,这里就不深入叙述。然后今天在迁移hive的时候,我是从老集群把hive给scp过去的,因为用户没切换过来,出现了如下问题:

Logging initialized using configuration in file:/usr/local/hive-0.13.1/conf/hive-log4j.properties
Exception in thread "main" java.lang.RuntimeException: java.io.IOException: Permission denied
 at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:330)
 at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)
 at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:625)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:606)
 at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
Caused by: java.io.IOException: Permission denied
 at java.io.UnixFileSystem.createFileExclusively(Native Method)
 at java.io.File.createNewFile(File.java:1006)
 at java.io.File.createTempFile(File.java:1989)
 at org.apache.hadoop.hive.ql.session.SessionState.createTempFile(SessionState.java:432)
 at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:328)
 ... 7 more

后来把对应的文件权限给到执行的用户后问题就解决了,这里给我们的一个教训就是,做迁移的时候必须注意权限的问题,不然麻烦时有发生。

问题原由:
1、hive-log4j.properties无读取权限
2、创建临时文件需要/usr/local/hive-0.13.1/tmp的写入权限

解决办法:
1、修改hive-log4j.properties的读取权限
2、修改/usr/local/hive-0.13.1/tmp文件的读取与写入权限