zoukankan      html  css  js  c++  java
  • hive+mysql安装、hive.metastore.local属性的真正用途

      本文对Hive+mysql的安装做一个总结,后期会把Hive的一些资料放上来:

    1.安装目标:

      Hive搭配远程Mysql

    2.要点总结:

      1).Mysql的配置:

        假如Hive以hive用户连接Mysql,以root用户登录Mysql:

          drop user hive@'%';

          grant all on db.* to hive@'%' identified by '密码';(使用户可以远程连接Mysql)

          grant all on db.* to hive@'localhost' identified by '密码';(使用户可以本地连接Mysql)
          flush privileges;

      2).Hive的安装:

        a).安装包和环境的匹配:

          本人安装的是apache hadoop-1.0.x+Hive0.8。

        b).Hive安装

          解压安装包,并在~/.bash_profile中添加HIVE_HOME环境变量,同时修改Path;

          从mysql官网下载自己喜欢version的mysql-connector-java-version-bin.jar,放到$HIVE_HOME/lib下;

          在$HIVE_HOME/conf下把hive-site.xml.example rename为hive-site.xml;

          将hive.metastore.local属性设置为true

          其它需要修改的属性为:

    <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://192.168.1.234:3306/hivedb?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.cluster.delegation.token.store.zookeeper.connectString</name>
      <value>192.168.7.14:2181</value>
      <description>The ZooKeeper token store connect string.</description>
      </property>

     

    3.metadata远程存储和hive.metastore.local属性的说明:

      官网上对hive.metastore.local属性的解释为:local or remote metastore (Removed as of Hive 0.10: If hive.metastore.uris is empty local mode is assumed, remoteotherwise);即本地或者远程的元数据(在hive0.10版本上删除列这个属性;如果hive.metastore.uris属性为空,则默认为本地模式,否则为远程模式)。

      而hive将元数据存储在 RDBMS 中,有三种模式可以连接到数据库:

      1)ingle User Mode: 此模式连接到一个 In-memory 的数据库 Derby,一般用于 Unit Test。 

      2)Multi User Mode:通过网络连接到一个数据库中,是最经常使用到的模式。 

      3)Remote Server Mode:用于非 Java 客户端访问元数据库,在服务器端启动一个 MetaStoreServer,客户端利用 Thrift 协议通过 MetaStoreServer 访问元数据库。

      如果配置远程存储metadata,则需要先在远程端启动hive的元数据存储Server服务:hive --service metastore;Server端配置上面介绍的相同即可。默认的端口号是9083,我在conf目录下所有文件里没有grep到此端口,但是用netstat -anp |grep 9083能看到此端口处于监听状态,停止服务后,端口释放,所以此版本端口号是在程序里写死的。

      client端的配置:

    hive.metastore.uris thrift://<host_name>:<port> host and port for the thrift metastore server
    hive.metastore.local false this is local store
    hive.metastore.warehouse.dir <base hdfs path> default location for Hive tables.

      client端配置好后,执行hive命令去Server端取meta数据,而Server端数据存储于mysql,将元数据存储和Hive服务分开,详细的官方文档:https://cwiki.apache.org/Hive/adminmanual-metastoreadmin.html#AdminManualMetastoreAdmin-RemoteMetastore

      至此,终于明白列hive.metastore.local属性的作用!

  • 相关阅读:
    搭建高可用mongodb集群—— 副本集
    搭建高可用mongodb集群(一)——mongodb配置主从模式
    单线程异步回调机制的缺陷与node的解决方案
    js实现接口的几种方式
    访问者模式和php实现
    策略模式和php实现
    状态模式和php实现
    观察者模式和php实现
    C语言之一般树
    电子相册之bitmap
  • 原文地址:https://www.cnblogs.com/uttu/p/2927615.html
Copyright © 2011-2022 走看看