代码改变世界程序猿阵线联盟-汇总各类技术干货程序员

Hive安装使用中的一些问题

2018-04-13  本文已影响0人  sparkle123

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.安装hivemysql完成后,将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地址或主机都可以连接

  1. 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:7077hive出现以下错误:

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任务,报错:

image.png

查看yarn-application页面

时间不一致.png

借助SecureCRT客户端的群发命令,向集群各个节点群发同步命令:
sudo date -s "2018-04-18 15:52:00"

再次运行任务,OK。
生产环境上一般使用外网时间服务器进行内网集群的时间同步,定时启用crontab任务

上一篇下一篇

猜你喜欢

热点阅读