Hive环境搭建

( 配置Hive之前需要搭建好mysq )

1
2
3
# 环境变量
export $HIVE_HOME=/opt/bigdata/hive
export $PATH=$PATH:$HIVE_HOME/bin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# hive-site.xml
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfnotExist=true&amp;useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hadoop</value>
</property>

# 开启hive mateStore配置
<peoperty>
<name>hive.matestore.local</name>
<value>false</value>
</peoperty>
<peoperty>
<name>hive.matestore.uris</name>
<value>thrift://hadoop01:9083</value>
</peoperty>
1
2
3
# hive-env.sh
export HADOOP_HOME=/opt/bigdata/hadoop
export HIVE_CONF_HOME=/opt/bigdata/hive/conf

记得将mysql-connector-java的驱动移动到 $HIVE_HOME/lib
最后初始化 hive :
schematool -dbType mysql -initSchema

启动Hive需要先启动hadoop集群

选配

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Hive WebUI  -- hive-site.xml中配置
<property>
<name>hive.server2.webui.host</name>
<value>localhost</value>
</property>
<property>
<name>hive.server2.webui.port</name>
<value>10002</value>
</property>

# 查询时显示 标题内容
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>

可能出现的问题

  • org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.

    出现的原因:

    1. hive-site.xml 中的账号和密码错误
    2. mysql 账号没有开启远程连接
    3. mysql时区和系统自带的时区不同
  • java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

    出现的原因:

    1. hadoop下的jline jar包和hive 下的 jline jar包版本冲突( 不同 )

    解决方法:

    • 将hive lib 下的 jline包复制覆盖掉hadoop - share - hadoop - yarn - lib 下的 jline 包