问题1 Hive Server连接不上
beeline 显示日志如下:
19/03/28 15:18:31 INFO HiveConnection: Will try to open client transport with JDBC Uri: jdbc:hive2://localhost:8090/;
19/03/28 15:18:31 INFO HiveConnection: Could not open client transport with JDBC Uri: jdbc:hive2:///localhost:8090/;
19/03/28 15:18:31 INFO HiveConnection: Transport Used for JDBC connection: null
###原因分析
升级之后,hive启动时间变长。先确保hive server监听指定端口时,再连接。
- 找到Hive Server的进程号。
[root@localhost ~]# ps aux | grep HiveServer2
root 1868 0.0 0.0 105300 896 pts/8 S+ 10:57 0:00 grep HiveServer2
urls 27644 22.3 0.7 12608724 1036096 pts/7 Sl+ 10:56 0:17 /usr/local/jdk/bin/java -Xmx4096m -server -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=65 -XX:+CMSParallelRemarkEnabled -XX:CMSMaxAbortablePrecleanTime=1000 -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:NumberOfGCLogFiles=9 -XX:GCLogFileSize=20m -XX:+DisableExplicitGC -XX:+PrintGCApplicationConcurrentTime -Xloggc:/home/data/hive/logs/hiveserver2_gc.log -Dcom.sun.management.jmxremote.port=9001 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPv4Stack=true -Djava.library.path=/usr/local/hadoop/lib/native -Dhadoop.log.dir=/home/data/hadoop/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/home/hadoop/hadoop-2.7.5 -Dhadoop.id.str=urls -Dhadoop.root.logger=INFO,console -Djava.library.path=/usr/local/hadoop/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Xmx512m -Dproc_hiveserver2 -Xmx10240m -Xms10240m -Xmn2048m -Dlog4j.configurationFile=hive-log4j2.properties -Djava.util.logging.config.file=/usr/local/hive/bin/../conf/parquet-logging.properties -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /usr/local/hive/lib/hive-service-2.3.4.jar org.apache.hive.service.server.HiveServer2 --hiveconf com.baidu.xbu.user=houzhizhen
- 直到hive server监听指定端口再连接。
[root@localhost ~]# netstat -tulnp | grep 27644
tcp 0 0 0.0.0.0:54769 0.0.0.0:* LISTEN 27644/java
tcp 0 0 0.0.0.0:28760 0.0.0.0:* LISTEN 27644/java
tcp 0 0 0.0.0.0:9001 0.0.0.0:* LISTEN 27644/java
问题2 User: xxx is not allowed to impersonate xxx
现象
Caused by: org.apache.hadoop.security.authorize.AuthorizationException: User: houzhizhen is not allowed to impersonate houzhizhen
at sun.reflect.GeneratedConstructorAccessor29.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.hadoop.yarn.ipc.RPCUtil.instantiateException(RPCUtil.java:53)
at org.apache.hadoop.yarn.ipc.RPCUtil.unwrapAndThrowException(RPCUtil.java:104)
at org.apache.hadoop.yarn.api.impl.pb.client.ApplicationClientProtocolPBClientImpl.getNewApplication(ApplicationClientProtocolPBClientImpl.java:224)
查看hive-site.xml中hive.server2.enable.doAs
是否设置为true。如果没有设置,默认为true。 需要手动设置为false
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
</property>
如果设置此值,则所有任务的提交用户都是启动hiveserver的用户。
如果hive.server2.enable.doAs
设置为true,则需要hiveserver需要启动在 超级账号下。