05 通过hive访问metastore

本文详细介绍了如何将Hive的元数据存储在MySQL数据库中,包括配置hive-site.xml文件,设置JDBC连接字符串,以及启动metastore服务的过程。通过在不同服务器上部署MySQL和metastore服务,实现了元数据的远程访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面一节我们了解了通过beeline访问hiveserver服务,进而访问到元数据,这一节我们使用hive访问metastore服务。所谓metastore,就是hive的元数据,通过该元数据,我们就能访问到真正的数据本身。元数据默认使用内置deby数据库存储,我们也可以把元数据放到mysql。

1、前提约束

  • 使用mysql存储hive元数据,假设mysql服务所在的机子ip为192.168.100.141,账号密码为hive/hive,并允许远程登录
    https://www.jianshu.com/p/c0ea1249958e
  • 再创建一个新的服务器,假设机子ip为192.168.100.142
  • 两台机子之间以设置免密登录

2、操作步骤

  • 在192.168.100.142服务器中解压hive安装包,并配置环境变量等:
    https://www.jianshu.com/p/755944f01fab
    假设hive的根路径在“/root/apache-hive-0.14.0-bin”下。
  • 修改192.168.100.142服务器中hive的配置文件
    vim /root/apache-hive-0.14.0-bin/conf/hive-site.xml
<property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://192.168.100.141: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>hive</value>
            <description>username to use against metastore database</description>
    </property>
    <property>
            <name>javax.jdo.option.ConnectionPassword</name>
            <value>hive</value>
            <description>password to use against metastore database</description>
    </property>
  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://192.168.100.142:9083</value>
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
  </property>
  • 在192.168.100.142服务器中拷贝mysql驱动mysql-connector-java-5.1.47.jar到/root/apache-hive-0.14.0-bin/lib/
  • 在192.168.100.142服务器中启动metastore
/root/apache-hive-0.14.0-bin/bin/hive --service metastore

注意:不要关闭窗口

  • 在192.168.100.142服务器中打开新的窗口,使用hive访问上面启动的服务
/root/apache-hive-0.14.0-bin/bin/hive

这个时候的组件访问路径是hive--> metaStore server-->MySQL。我们此刻是把metastore服务和mysql服务部署在不同机子上的。

at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808) at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:701) at org.apache.hadoop.hive.metastore.ObjectStore.getPMF(ObjectStore.java:521) at org.apache.hadoop.hive.metastore.ObjectStore.getPersistenceManager(ObjectStore.java:550) at org.apache.hadoop.hive.metastore.ObjectStore.initializeHelper(ObjectStore.java:405) at org.apache.hadoop.hive.metastore.ObjectStore.initialize(ObjectStore.java:342) at org.apache.hadoop.hive.metastore.ObjectStore.setConf(ObjectStore.java:303) at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:79) at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:139) at org.apache.hadoop.hive.metastore.RawStoreProxy.<init>(RawStoreProxy.java:58) at org.apache.hadoop.hive.metastore.RawStoreProxy.getProxy(RawStoreProxy.java:67) at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.newRawStoreForConf(HiveMetaStore.java:628) at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMSForConf(HiveMetaStore.java:594) at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMS(HiveMetaStore.java:588) at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB(HiveMetaStore.java:655) at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.java:431) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:148) at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(RetryingHMSHandler.java:107)
最新发布
03-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值