配置Hive使用MySql存储元数据

配置Hive使用MySql存储元数据

2018-7-24 作者: 张子阳 分类: 大数据处理

默认情况下,Hive会使用Derby来存储元数据(主要是表、列、分区Partition的信息)。Derby是一个嵌入式的本地数据库,只能单进程进行访问,不允许多个连接。因此,Derby只适合本地测试,不适合用在生产环境。Hive支持使用单独的数据库来存储元数据,比如MySql、PostgreSql等,本文将介绍如何配置Hive使用MySql存储元数据。

本文假设你已经单机安装、配置好了MySql和Hive。如果没有,可以参考下面两篇文章:

安装MySql连接器

前往:https://dev.mysql.com/downloads/connector/j/5.1.html,下载MySql连接器(connector)。

解压后,将mysql-connector-java-5.1.xx.jar,上传到Linux的 $HIVE_HOME/lib 文件夹下。

配置hive-site.xml

hive-site.xml用于配置Hive的各个参数,位于$HIVE_HOME/conf文件夹下。默认情况下,并没有这个文件,所有的参数配置在hive-default.xml.template中。因此,第一次使用时,需要手动创建这个文件。假设你的mysql位于192.168.1.56:3306,则像下面这样配置:

<configuration>
    <property>
       <name>javax.jdo.option.ConnectionURL</name>
       <value>jdbc:mysql://192.168.1.56:3306/hive_metastore?createDatabaseIfNotExist=true&amp;useSSL=false</value>
       <description>metadata is stored in a MySQL server</description>
    </property>
    <property>
       <name>javax.jdo.option.ConnectionDriverName</name>
       <value>com.mysql.jdbc.Driver</value>
       <description>MySQL JDBC driver class</description>
    </property>
    <property>
       <name>javax.jdo.option.ConnectionUserName</name>
       <value>username</value>
       <description>mysql server connection username</description>
    </property>
    <property>
       <name>javax.jdo.option.ConnectionPassword</name>
       <value>password</value>
       <description>mysql server connection user password</description>
    </property>
 </configuration>

根据上面的配置,会创建一个叫做hive_metasotre的数据库(也可以在hive-site.xml中将其修改为其他名字)。

注意上面useSSL前面的&,必须要转义成:&amp;,如果根据习惯直接写&则会报错。

异常解决

配置完成后,在shell命令行启动Hive,然后执行一下show databases;。此时,可能会遇到一个异常:MetaException(message:Version information not found in metastore.)

这个时候,可以登录到mysql,删除掉hive_metastore数据库,然后执行一下下面的命令,重新初始化一下元数据库:

# schematool --dbType mysql --initSchema

接下来,再次启动hive控制台,重新执行 show databases;,如果成果,则说明一切正常了。

hive> show databases; OK default tglog_aw_2018 Time taken: 0.052 seconds, Fetched: 2 row(s)

至此,便完成了使用MySql来存储Hive元数据的配置。

感谢阅读,希望这篇文章能给你带来帮助!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hadoop实操

Hue禁止用户下载数据问题分析

在使用Hue时通过SQL查询Hive和Impala数据或在浏览文件系统时可以通过Hue提供的下载功能下载数据文件,这样会导致任意用户都可以随意下载数据,有数据泄...

63870
来自专栏Hadoop实操

如何使用StreamSets实现MySQL中变化数据实时写入HBase

91620
来自专栏Hadoop实操

06-如何为Impala集成AD认证

Fayson在前面的文章《01-如何在Window Server 2012 R2搭建Acitve Directory域服务》、《02-Active Direct...

24020
来自专栏Hadoop实操

Sqoop抽数到Hive表异常分析

使用Sqoop抽取MySQL数据到Hive表时,抽取语句正常执行但数据没有写入Hive的表中,执行的Sqoop抽数脚本如下:

15610
来自专栏加米谷大数据

编译及调试 Hadoop 源代码

Hadoop 在伪分布式模式下的编译和调试方法,其中,调试方法主要介绍使用 Eclipse 远程调试和打印调试日志两种。 编译 Hadoop 源代码 在 Win...

46660
来自专栏Spark学习技巧

spark调优系列之高层通用调优

一,并行度 集群不会被充分利用,除非您将每个操作的并行级别设置得足够高。Spark自动会根据文件的大小,是否可分割等因素来设置map的数目(后面会详细讲解输入格...

23870
来自专栏搜云库

HBase-1.3.1 集群搭建 - 报错整理

HBase 启动报错 Waiting for dfs to exit safe mode… 启动 Hadoop 和HBase之后,执行jps命令,已经看到有 H...

19760
来自专栏挖掘大数据

Hadoop生态圈和各组件的启动、关闭脚本介绍

Hadoop生态圈各组件的启动及关闭脚本,虽然有些使用频率不高,不容易记住,这里特地整理出来,大家可以先保存,用的时候就方便了。

27270
来自专栏Hadoop实操

如何在Hue中使用Sentry

3.集群已安装Sentry服务,已和HDFS/Hive/Impala/Hue服务集成

1.3K70
来自专栏Spark学习技巧

hive安装部署

1、 准备环境 1, 软件准备 Java-- jdk-8u121-linux-x64.tar.gz Hadoop--hadoop-2.7.4.tar.gz (j...

28290

扫码关注云+社区

领取腾讯云代金券