出错信息如图:
一 异常来源:
1.在hive-site.xml配置文件中
<value>jdbc:MySQL://192.168.*.*/hive_13?characterEncoding=UTF-8</value>
2.在hive-site.xml配置文件中
<value>jdbc:MySQL://192.168.*.*:3306/hive_13?characterEncoding=UTF-8</value>修改为 <value>jdbc:mysql://master:3306/hive_13?characterEncoding=UTF-8</value>后重新登录hive客户端出现异常,导致不能连接mql数据库
二 异常分析:
1.对于错误情形一:由于未指定端口号,需要指定端口号3306.
2.对于错误情形二:有192.168.24.26改为master后 MySQL用户名也随之发生成APP,此时需要在其中对其重新授权;
三 解决方案:
可能由于root的权限不够,可以进行如下操作
1)
2)
mysql>
//本地操作的权限
mysql>
//远程操作的权限
3) 刷新:
方案二:mysql驱动问题
mysql-connector-java-5.1.21-bin.jar换成较高版本的驱动如mysql-connector-java-6.0.3-bin.jar
下载路径http://ftp.ntu.edu.tw/MySQL/Downloads/Connector-J/
在执行hive命令时,出错总结
执行#hive命令进入Hive
错误情形一:
Exception in thread"main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
……
Caused by: java.lang.RuntimeException: Unable toinstantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
异常来源:没有启动Hive的Metastore Server服务进程。
解决方法:启动Hive 的Metastore Server服务进程,执行如下命令:
# hive --service metastore &
错误情形二:
FAILED: Execution Error, return code 1from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:javax.jdo.JDODataStoreException:You have an error in your SQL syntax; check the manual that corresponds to yourMySQL server version for the right syntax to use near 'OPTIONSQL_SELECT_LIMIT=DEFAULT' at line 1……
异常来源: Hive连接MySQL的JDBC驱动版本有问题。
解决方法:安装高版本驱动,下载链接方法见前文。
错误情形三:
Exception in thread "main" java.lang.RuntimeException:java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path inabsolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
……
Caused by: java.net.URISyntaxException: Relative path inabsolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
at java.net.URI.checkPath(URI.java:1804)
at java.net.URI.<init>(URI.java:752)
at org.apache.hadoop.fs.Path.initialize(Path.java:203)
... 11 more
异常来源: system:java.io.tmpdir和system:user.name提示需要使用绝对路径.
解决方法:将conf/hive-site.xml中所有的system:java.io.tmpdir和system:user.name都换成绝对路径。
错误情形四:
[ERROR] Terminal initialization failed; falling back tounsupported
java.lang.IncompatibleClassChangeError: Found class jline.Terminal,but interface was expected ……
异常来源:因为在hadoop目录下存在老版本jline:
$HADOOP_HOME/share/hadoop/yarn/lib/jline-0.9.94.jar
解决方法:将hive下的新版本jline的JAR包拷贝到hadoop下:并将老版本jline删除。
错误情形五:
Diagnostic Messages for this Task:
Container launch failed forcontainer_1431310046688_0001_02_000013 :org.apache.hadoop.yarn.exceptions.YarnException: Unauthorized request to startcontainer.
This token is expired. current time is 1431311178863found 1431311136701
atsun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
异常来源:namenode和datanode的时间不一致,需要保证namenode和datanode的时间一致。
错误情形六:
Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Cannot create directory /tmp/hive/hadoop/e03ae08e-5b05-4f1b-81db-f9f11794bfa1. Name node is in safe mode.
The reported blocks 0 needs additional 19 blocks to reach the threshold 0.9990 of total blocks 19.
异常来源由于HDFS备份文件损坏,HDFS进行了安全模式,
解决办法:使用命令强制离开安全模式,然后重新备份。
这是因为在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。
可以通过以下命令来手动离开安全模式:
bin/hadoop dfsadmin -safemode leave
用户可以通过dfsadmin -safemode value 来操作安全模式,参数value的说明如下:
enter - 进入安全模式
leave - 强制NameNode离开安全模式
get - 返回安全模式是否开启的信息
wait - 等待,一直到安全模式结束。
邹中凡:http://blog.csdn.net/freedomboy319/article/details/44828337
似水流年:http://blog.csdn.net/xiaoshunzi111/article/details/48827775