Hive安装使用中的一些问题
1.非root用户
连接mysql服务
时,报如下错误,
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
原来是mysql服务
没有启动,启动mysql服务
时候,一直失败,sudo
切换执行命令mysql -uroot -proot
即可。
2.安装hive
和mysql
完成后,将mysql的连接jar包拷贝mysql-connector-java-x.x.xx-bin.jar
到$HIVE_HOME/lib
目录下。
3.如果出现没有权限的问题,mysql授权(在安装mysql的机器上执行)
执行下面的语句:
mysql -uroot -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;
. : 所有库下的所有表
%:任何IP地址或主机都可以连接
- Jline包版本不一致的问题:Hive使用的Jline(命令行解析包)版本高于Hadoop的版本。
需要拷贝$HIVE_HOME/lib
目录中jline.2.12.jar
的jar包替换掉hadoop中的
/home/hadoop/app/hadoop-2.6.4/share/hadoop/yarn/lib/jline-0.9.94.jar
4.bin/hive
报如下错误:
Exception in thread "main" java.lang.RuntimeException: java.net.ConnectException: Call From hadoop/192.168.21.191 to hadoop:8020 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
解决办法:先启动HDFS
。
5.在hive窗口
执行查询语句,报错:
hive> select * from hive_count;
FAILED: SemanticException Unable to determine if hdfs://hadoop:9000/user/hive/warehouse/hive_count is encrypted: java.lang.IllegalArgumentException: Wrong FS: hdfs://hadoop:9000/user/hive/warehouse/hive_count, expected: hdfs://hadoop:8020
解决办法:
需要修改hive 数据库里面
DBS : Hive数据仓库的总路径
SDS : Hive每张表对应的路径
6.在hive窗口
提交MR任务
时,报错:
The auxService:mapreduce_shuffle does not exist
解决办法:
在yarn-site.xml
配置文件中增加:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
7.进入spark-shell
时,./spark-shell --master spark://hdp-sk-01:7077
,hive
出现以下错误:
Another instance of Derby may have already booted the database /home/spark/app/spark-1.5.1-bin-hadoop2.4/bin/metastore_db.
错误原因:
突然离线,易造成hive没能来得及删除自动创建的metastore_db文件夹,这时再次用hive命令进入,则会产生如上报错。
解决办法:将metastore_db
文件夹改名或者干脆删除,然后重新运行hive
命令启动即可
rm -r metastore_db/
8.hive shell
中执行很简单的排序MR任务,报错:
查看yarn-application
页面
借助SecureCRT客户端
的群发命令,向集群各个节点群发同步命令:
sudo date -s "2018-04-18 15:52:00"
再次运行任务,OK。
生产环境上一般使用外网时间服务器进行内网集群的时间同步,定时启用crontab
任务