1、内嵌模式
内嵌模式配置最简单,不用手动安装数据库,一般用作测试
file_1574260544000_20191120223548908881.png
1.1 配置文件 hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=metastore_db;create=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.apache.derby.jdbc.EmbeddedDriver</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
</configuration>
2、本地模式
本地模式与内嵌模式是一样的配置方式,只是用的库不同
image.png
必要条件
- mysql服务器
- $HIVE_HOME/lib目录下有mysql相关的jar
2.1 配置文件hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/hive_remote?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
</property>
</configuration>
3、远程配置
必要条件
- mysql服务器
- $HIVE_HOME/lib目录下有mysql相关的jar
远程指的是 metastore 和 hive 服务是否在同一进程内,一个或多个 metastore 服务器和 Hive 服务运行在不同的进程中。
hive.metastore.uris 设置为 metastore 服务器 URI(如果有多个服务器,可以用逗号分割),把 hive 服务设为使用远程 metastore 服务器的URI的格式为:thrift://host:port
image.png3.1、配置文件 hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.1.214:3306/hive_remote?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://192.168.1.188:9083</valu>
</property>
</configuration>
3.2 启动进程
-
metastore
nohup $HIVE_HOME/bin/hive --service metastore 2>&1 >> /var/log.log & -
hiveserver2
nohup $HIVE_HOME/bin/hive --service hiveserver2 2>&1 >> /var/log.log &
TroubleShooting
1、如何确定hive使用的那种模式
在hiveserver2的日志中有metastore的存储日志说明使用的内嵌或者本地
image.png
2、问题记录
因hiveserver的启动脚本中将hive.metastore.uris置空导致hiveserver2使用的是本地模式导致mysql长链接被打满
HIVE_CONF_DIR=$4 {{hive_bin}}/hiveserver2 -hiveconf hive.metastore.uris=" " ${HIVE_SERVER2_OPTS} > $1 2> $2 &
网友评论