zoukankan      html  css  js  c++  java
  • 基于MySQL元数据的Hive的安装和简单測试

    引言: Hive是一种强大的数据仓库查询语言,类似SQL,本文将介绍怎样搭建Hive的开发測试环境。

    1. 什么是Hive?

       hive是基于Hadoop的一个数据仓库工具,能够将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,能够将sql语句转换为MapReduce任务进行执行。 其长处是学习成本低,能够通过类SQL语句高速实现简单的MapReduce统计。不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

    2.  依照Hive的准备条件

        2.1  Hadoop集群环境已经安装完成

     2.2 本文使用Ubuntu做为开发环境(14.04)

    3. 安装步骤

        3.1 下载Hive包:apache-hive-0.13.1-bin.tar.gz

        3.2 将其解压到/opt文件夹下

       tar xzvf apache-hive-0.13.1-bin.tar.gz

        3.3 环境变量设置

       export HIVE_HOME=/opt/apache-hive-0.13

       export PATH=$PATH:$HIVE_HOME/bin

       export CLASSPATH=$CLASSPATH:$HIVE_HOME/bin

       3.4. 改动hive-env.xml,复制hive-env.xml.template.

        # Set HADOOP_HOME to point to a specific hadoop install directory

        HADOOP_HOME=/opt/hadoop-1.2.1

        # Hive Configuration Directory can be controlled by:

         export HIVE_CONF_DIR=/opt/apache-hive-0.13/conf

       3.5 改动hive-site.xml,主要改动数据库的连接信息.
     <property>
      <name>hive.metastore.uris</name>
      <value>thrift://127.0.0.1:9083</value>
      <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
    </property>
    
    <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://BladeStone-Laptop: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>123456</value>
      <description>password to use against metastore database</description>
    </property>
    3.6 安装mysql数据库(Ubuntu系统)

      sudo apt-get install mysql-server

      
    3.7 创建mysql用户hive

     

      3.8 在mysql中创建hive数据库

       

      3.9  下载mysql驱动,并将驱动拷贝到hive_homelib类库

      mysql-connector-java-5.1.31-bin.jar

      3.10 启动Hive

        

     3.11 在Hive中创建表

        

      3.12 登录mysql。訪问hive数据库

         

         

         3.13 删除Hive中的表

         

        3.14 登录mysql,查询TBLS中的数据

         

    4.  总结

     通过以上的步骤,我们完整的安装了一个Hive,并通过加入和删除一张数据库表的演示,来展示了Hive和Mysql元数据库之间的关系操作。

    5.  常见问题

     5.1 直接通过hive命令来启动,则会出现一下错误信息:   

    Logging initialized using configuration in jar:file:/opt/apache-hive-0.13/lib/hive-common-0.13.1.jar!/hive-log4j.properties
    Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
    	at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:346)
    	at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)
    	at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:625)
    	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:483)
    	at org.apache.hadoop.util.RunJar.main(RunJar.java:160)
    Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
    	at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1412)
    	at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.<init>(RetryingMetaStoreClient.java:62)
    	at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:72)
    	at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:2453)
    	at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:2465)
    	at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:340)
    	... 7 more
    Caused by: java.lang.reflect.InvocationTargetException
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    	at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
    	at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1410)
    	... 12 more
    Caused by: MetaException(message:Could not connect to meta store using any of the URIs provided. Most recent failure: org.apache.thrift.transport.TTransportException: java.net.ConnectException: Connection refused
    	at org.apache.thrift.transport.TSocket.open(TSocket.java:185)
    	at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:336)
    	at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:214)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    	at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
    	at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1410)
    	at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.<init>(RetryingMetaStoreClient.java:62)
    	at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:72)
    	at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:2453)
    	at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:2465)
    	at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:340)
    	at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)
    	at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:625)
    	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:483)
    	at org.apache.hadoop.util.RunJar.main(RunJar.java:160)
    Caused by: java.net.ConnectException: Connection refused
    	at java.net.PlainSocketImpl.socketConnect(Native Method)
    	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
    	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    	at java.net.Socket.connect(Socket.java:589)
    	at org.apache.thrift.transport.TSocket.open(TSocket.java:180)
    	... 19 more
    )
    	at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:382)
    	at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:214)
    	... 17 more
    
      解决的方法: hive --service metastore , 用这条命令来启动hive。

      5.2 配置 hive.metastore.uris
            a.不启动metastore和hiveserver服务
              直接命令行hive进入hive shell环境。然后运行show databases  报错例如以下:
                 ERROR ql.Driver: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Unable to instantiate    org.apache.hadoop.hive.metastore.HiveMetaStoreClient
          b.另外一种种情况
              1.配置 hive.metastore.uris
              2.启动metastore服务  hive  --service metastore
             然后直接命令行hive进入hive shell环境,然后运行show databases   

             c:第三种情况
               1.凝视配置项 hive.metastore.uris
               2.不启动metastore服务
               然后直接命令行hive进入hive shell环境。然后运行show databases
       

  • 相关阅读:
    独立安装SharePoint 2013碰到的"SDDL"问题及解决方法
    软件编程21法则
    HtmlAgilityPack 之 HtmlNode类
    SpringBoot集成Hadoop3.1.3
    win10 mysql慢查询
    Java多线程并行计算(Google的Guava使用)
    win10安装hadoop3.1.3
    mapDB的基本用法
    SpringBoot集成JMH
    mysql死锁
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/7039242.html
Copyright © 2011-2022 走看看