hive-site.xml修改之后不生效与一些beeline,hiveserver2的报错

首先,这里的报错的hive版本是0.13,版本确实有点旧,大家见怪不怪。

这里说下几个在0.13版本下遇到的报错!

最开始要搭建hive必须先修改hive默认的参数,就是添加hive-site.xml

并且在里面声明数据库的选择,其实就jdbc的四要素:

<--!132-->

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://hadoop.beifeng.com:3306/metastore?createDatabaseIfNotExist=true</value>

<description>JDBC connect string for a JDBC metastore</description>

</property>

<--!138-->

<property>

<name>javax.jdo.option.ConnectionDriverName</name>

<value>com.mysql.jdbc.Driver</value>

<description>Driver class name for a JDBC metastore</description>

</property>

<--!162-->

<property>

<name>javax.jdo.option.ConnectionUserName</name>

<value>root</value>

<description>username to use against metastore database</description>

</property>

<--!168-->

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>123456</value>

<description>password to use against metastore database</description>

并且要拷贝jdbc驱动包到hive安装目录下的lib目录下

$ cp /opt/software/mysql-connector-java-5.1.34-bin.jar /opt/modules/apache-hive-0.13.1-bin/lib/

接下来就是该版本下是几个常见的报错:

报错一:当你开开心心的修改完配置,但是hive启动时却不加载自己修改的hive-site.xml等配置文件的问题。它总是加载默认的配置文件,很烦。。。。

这时候可能会有人问,怎么看出来的,有什么区别吗?

解释:如果你是用默认的配置文件,hive会连接自带的derby数据库,会在hive的根目录下生成derby.log这个日志文件,并且当启动两个bin/hive的时候,就会报错(如果是mysql就不会)

原因:

大概原因是因为hive依赖hadoop,但是hadoop的环境变量却没有读到hive-site.xml

所以解决方法如下:

hadoop的配置文件hadoop-env.sh中(其实就是hadoop的根目录下的etc/hadoop里面的那些配置文件里)

找到export HADOOP_CLASSPATH这行,修改值为

export HADOOP_CLASSPATH=$HIVE_HOME/conf:$HADOOP_CLASSPATH

注意:这里的$HIVE_HOME不是你直接复制上去就可以了,你要自己改成自己hive的路径,

或者:(以下方法选一种就可以,两种同时用也行,但是别写错了。。。)

1、在/etc/profile这个文件里面加上这个变量,跟配置JAVA_HOME,HADOOP_HOME是一样的

2、直接在hadoop-env.sh这个文件里面你声明JAVA_HOME的地方,也声明个HIVE_HOME,这样你就可以使用这个变量了

再注意下:这里其实有可能会埋下伏笔,在搭建hbase的数据迁移的一个环境的时候。。。出现了另一个问题,其实原因是因为环境变量$HADOOP_CLASSPATH应该是叠加(本文用的是叠加的方式),但是在另一篇文章当中,我一开始用的是覆盖。所以hbase是没问题了,反而hive报了错,文章链接(错误我有改正):http://blog.csdn.net/lsr40/article/details/77717432

修改完之后重启下hadoop的进程

执行bin/hive 检查mysql里是否有新建的数据库,或者检查是否可以创建多个bin/hive的连接(因为derby只能一个连接)

接下来的这几个报错,其实差不多可以归纳为这个版本的BUG,提供修改方式,就不再具体阐述,因为如果用新版本就有很大几率不会遇见这些问题。

报错:Error: Invalid URL: jdbc:hive2://bigdata-03:10000 (state=08S01,code=0)

解决:

<property>

<name>hive.server2.thrift.bind.host</name>

<value>bigdata-03</value> //把这里改成你启动的server2的主机名

<description>Bind host on which to run the HiveServer2 Thrift interface.

Can be overridden by setting $HIVE_SERVER2_THRIFT_BIND_HOST</description>

</property>

报错:Error: For input string: "5000L" (state=,code=0)

找到如下行,修改下value

解决:

<property>

<name>hive.server2.long.polling.timeout</name>

<value>5000</value>

<description>Time in milliseconds that HiveServer2 will wait, before responding to asynchronous calls that use long polling</description>

</property>

报错:Error: Error while compiling statement: FAILED: RuntimeException Cannot make directory: hdfs://bigdata-03:8020/tmp/hive-beifeng/hive_2017-07-26_16-55-43_257_4456975382084132472-3 (state=42000,code=40000)

请使用你hadoop上的用户来操作beeline,不要搞一些骚操作!!

警告:

在hiveserver2的窗口里面会有

WARN conf.HiveConf: DEPRECATED: hive.metastore.ds.retry.* no longer has any effect. Use hive.hmshandler.retry.* instead

这个是说关于hive.metastore.ds.retry.*这些配置已经不起作用,使用hive.hmshandler.retry.*来配置,这也是版本迭代更新的问题,不过警告在测试环境中,一般来说是没什么太大关系的,但是真实开发还是要好好关注下是什么情况。

<property>

<name>hive.metastore.ds.retry.attempts</name>

<value>1</value>

<description>The number of times to retry a metastore call if there were a connection error,当出现数据连接错误后,尝试连接后台数据存储的最大次数。 </description>

</property>

<property>

<name>hive.metastore.ds.retry.interval</name>

<value>1000</value>

<description>The number of milliseconds between metastore retry attempts,每次尝试连接后台数据存储的时间间隔,以毫秒为单位。 </description>

</property>

接下来是用开发工具,比如myeclipse等工具,去远程连接hiveserver2的时候报的错误:

在写hiveserver2的jdbc连接的时候报错:Exception in thread "main" java.sql.SQLException: Invalid URL: jdbc:hive2://bigdata-03:10000/hadoop

原因:使用的是hiveserver2这个服务,所以导包的时候驱动是org.apache.hive.jdbc.HiveDriver,不要写成org.apache.hadoop.hive.jdbc.HiveDriver,这个应该是hiveserver1版本的,如果你想写个代码测试下,提供官网:https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-JDBCClientSampleCode

报错:Exception in thread "main" java.sql.SQLException: Could not open connection to jdbc:hive2://bigdata-03:10000/hadoop: java.net.ConnectException: Connection refused: connect

这个错就是连接拒绝,原因就是hiveserver2没启动。。。。

解决:那你就启动下嘛,$HIVE_HOME/bin/hiveserver2

关于这个hiveserver2怎么配置,官网也有说(你可以百度中文的博客):https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStarted-RunningHiveServer2andBeeline

————————————————

版权声明:本文为CSDN博主「lsr40」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/lsr40/article/details/78026125

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值