Hive有3中运行模式,今天主要来介绍一下把元数据保存在mysql中的配置方法.mysql的详细安装步骤
(1)内嵌模式
将元数据保存在本地内嵌的 Derby 数据库中,这是使用 Hive 最简单的方式。但是这种方式缺点也比较明显,因为一个内嵌的 Derby 数据库每次只能访问一个数据文件,这也就意味着它不支持多会话连接。
(2)本地模式
这种模式是将元数据保存在本地独立的数据库中(一般是 MySQL),这用就可以支持多会话和多用户连接了。
(3)远程模式
此模式应用于 Hive 客户端较多的情况。把 MySQL 数据库独立出来,将元数据保存在远端独立的 MySQL 服务中,避免了在每个客户端都安装 MySQL 服务从而造成冗余浪费的情况。
1.解压tar包(使用的是hive-2.2.0),并重命名;
[root@master hive]# tar -zxvf apache-hive-2.2.0-bin.tar.gz [root@master hive]# mv apache-hive-2.2.0-bin hive-2.2.0
2.修改环境变量,vi /etc/profile
export HIVE_HOME=/home/jason/bigdata/hive/hive-2.2.0 export PATH=$PATH:$HIVE_HOME/bin
保存,退出后,别忘了,source /etc/profile使之生效.
3.修改hive的配置文件,hive-site.xml
<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.17.142:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>12345678</value> <description>password to use against metastore database</description> </property> <property> <name>hive.metastore.schema.verification</name> <value>false</value> </property> <property> <name>datanucleus.autoCreateSchema</name> <value>true</value> </property> <property> <name>datanucleus.autoCreateTables</name> <value>true</value> </property> <property> <name>datanucleus.autoCreateColumns</name> <value>true</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>/hive</value> <description>location of default database for the warehouse</description> </property> </configuration>
4.初始化hive在mysql的元数据信息.
schematool -dbType mysql -initSchema
在使用的过程中会有两个报错,如5,6所示,报错信息和解决方法都贴了出来.
5.MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1
解决办法:
是mysql的版本和驱动的版本不匹配导致的,我的mysql版本是5.6的,刚开始使用的驱动是5.1.18,
,但是mysql5.6已经抛弃了这个参数,所以会报上面错误,换成驱动mysql-connector-java-5.1.31-bin.jar放到hive/lib/下面.
6.message:For direct MetaStore DB connections, we don't support retries at the client level.
这个报错是因为需要在mysql中设置hive的字符集.
alter database hive character set latin1;
7.启动hive. bin/hive