HIVE部署安装(笔记)

1、下载hive:wget http://mirrors.cnnic.cn/apache/hive/hive-0.12.0/hive-0.12.0.tar.gz
2、解压hive安装文件 tar -zvxf hive-0.12.0.tar.gz
3、配置hive环境变量,初始化hive在hdfs上的工作目录(因此在部署hive之前,请确保已经完整的部署了hadoop,并设置好相关的环境,hadoop版本是2.2.0,才和此hive版本相符)
 vi /etc/profile 添加环境变量值
  export HIVE_HOME=/home/likehua/hive/hive-0.12.0
 export PATH = $HIVE_HOME/bin:$PATH
 source /etc/profile 使修改的环境变量立即生效

 初始化hadoop 环境变量
 ./hadoop fs -mkdir /tmp
 ./hadoop fs -mkdir /usr/hive/warehouse
 ./hadoop fs -chmod g+w /tmp
 ./hadoop fs -chmod g+w /usr/hive/warehouse

 配置hive相关的配置文件:/home/likehua/hive/hive-0.12.0/conf
 讲hive-default.xml.template改为hive-site.xml
 hive-log4j.properties.template改为hive-log4j.properties
 hive-exec-log4j.properties.template改为hive-exec-log4j.properties

 执行命令:cd $HIVE_HOME/bin   ./hive
 默认将会进入hive的控制台,执行:show tables;如果不出错,则表明默认版本的hive安装成功

(其实会报错,是一个xml的错误,没有想到hive的发布版,xml居然也会有错误,汗!xml的开始标签和结束标签要
 一致,根据错误信息,将auth标签改为value,ok。

如果报错“SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

MetaException(message:Version information not found in metastore. )” 则修改hive-site.xml中hive.metastore.schema.verification 为false

)。
 默认版本hive的metastore保存在一个叫derby的数据库的,该
 数据库是一个嵌入式数据库,如果同时有两个人或者多个人操作,就会报错。下面介绍,如果将hive的metasotre
 信息保存到关系型数据库中,本文以oracle为例,具体步骤如下:
 1)、下载oracle jdbc驱动 ojdbc6.jar,放到$HIVE_HOME/lib文件夹下,如果不存在lib则创建。
 2)、修改$HIVE_HOME/conf下配置文件hive-site.xml。主要修改:连接字符串、驱动、用户名、密码等几处。
 具体参数有:
 连接字符串
 <property>
   <name>javax.jdo.option.ConnectionURL</name>
   <value>jdbc:oracle:thin:@192.98.12.60:1521/ORCL</value>
   <description>[jdbc:thin:db11gx64.geoway.net/db11g]JDBC connect string for a JDBC metastore</description>
  </property>
  数据库jdbc驱动
  <property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>oracle.jdbc.driver.OracleDriver</value>
   <description>Driver class name for a JDBC metastore</description>
  </property>
  用户名
  <property>
   <name>javax.jdo.option.ConnectionUserName</name>
  <value>portal</value>
  <description>username to use against metastore database</description>
  </property>
  密码
  <property>
   <name>javax.jdo.option.ConnectionPassword</name>
   <value>portal</value>
  <description>password to use against metastore database</description>
   </property>
   3)、将上面几处修改以后,在目录$HIVE_HOME/bin下执行./hive 命令进入控制台,执行show talbes;如果不报错,则
   表名部署成功,如果失败,则需要在日志文件中定位错误信息(在linux中部署程序,如果没有日志信息,那是很悲剧的。记得上面有修改配置文件的步骤
   hive-log4j.properties中,会记录日志的存放路径,默认路径:hive.log.dir=/tmp/${user.name}下面的hive.log文件里,${usr.name}表示
   登录的用户名。加入,登录用户为root,那么它的log日志访问路径为:/tmp/root/hive.log.)
       日志文件中的错误主要有以下几类:a、数据库驱动不存在。b、数据库连接参数错误。c、表或则视图不存在。
    第三种情况较多,因为当你修改默认的metastore存储方式时,在新的数据库中,很多元信息是没有初始化的。需要我们手动在目标数据库中初始化。有关
    初始化脚本存放在$HIVE_HOME/scripts/metastore/upgrade目录下,在该目录中默认会有derby、mysql、oracle、postgres几类数据库的初始化或者更新脚本。
    由于笔者使用oracle数据库,所以就进入$HIVE_HOME/scripts/metastore/upgrade/oracle目录,进去之后,你会发现有很多sql脚本,真是一团糟,不知道怎么更新
    或者初始化怎么办,教你一个土方法,那就是都执行一遍,然后来回启动hive,查看日志解决问题,最终会把问题解决的,但是,实际上有些规律的,找到
    010-HIVE-3072.oracle.sql、011-HIVE-3649.oracle.sql、012-HIVE-1362.oracle.sql、013-HIVE-3255.oracle.sql、014-HIVE-3764.oracle.sql这四个脚本依次执行
    ,由于我的hive的版本是hive-0.12.0,那么我再执行hive-schema-0.12.0.oracle.sql脚本,然后再进入hive shell执行,show tables;如果没有报错,那说明一切ok,
    如果还有错误,那么根据日志的错误信息,在网上搜索找到解决方案。

    4)、另外一种方式来初始化hive在关系型数据库上的metastore的初始化,但是我一直没有初始化成功,那就是配置好hive以后执行命令 ./hive --service metastore,
    此问题以后研究。

 

posted @ 2014-07-05 10:33  李克华  阅读(15000)  评论(2编辑  收藏  举报