HIVE 0.14.0安装

本文原文出处: http://blog.csdn.net/bluishglc/article/details/41652111 严禁任何形式的转载,否则将委托CSDN官方维护权益!


0. 前置条件

    1. 集群已经安装好Hadoop
    2. 本次安装使用/usr/local作为安装目录
    3. 专门为HIVE建立用户和用户组:hive:hive

1.安装


从官网下载apache-hive-0.14.0-bin.tar.gz以及apache-hive-0.14.0-src.tar.gz,后者主要用于build IWH的war包。

将apache-hive-0.14.0-bin.tar.gz解压至/usr/local,同时将文件夹的owner和group改为hive:hive. 为了方便可以建立一个名为hive的软连接指向apache-hive-0.14.0,如下图:

HIVE 0.14.0安装_第1张图片


2. 配置环境变量

#vim /etc/profile

在文件尾部添加:

#HADOOP ENV VARIABLES
JAVA_HOME=/usr/java/jdk1.7.0_71
HADOOP_HOME=/usr/local/hadoop
HIVE_HOME=/usr/local/hive
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$HIVE_HOME/hcatalog/bin:$HIVE_HOME/hcatalog/sbin
export JAVA_HOME HADOOP_HOME HIVE_HOME PATH

3. 配置HIVE


首先我们需要hive-site.xml和hive-log4j.properties两个文件,可以从默认的模板文件复制而来:

cd $HIVE_HOME/conf
cp hive-default.xml.template hive-site.xml
cp hive-log4j.properties.template hive-log4j.properties

以下是一些配置文件的参考:

3.1 hive-site.xml






  hive.metastore.execute.setugi
  true



  hive.metastore.warehouse.dir
  /user/hive/warehouse
  location of default database for the warehouse





  javax.jdo.option.ConnectionURL
  jdbc:mariadb://your-database-server/hivemetastoredb?createDatabaseIfNotExist=true
  JDBC connect string for a JDBC metastore



  javax.jdo.option.ConnectionDriverName
  org.mariadb.jdbc.Driver
  Driver class name for a JDBC metastore



  javax.jdo.option.ConnectionUserName
  root
  username to use against metastore database



  javax.jdo.option.ConnectionPassword
  your-password
  password to use against metastore database



  hive.hwi.listen.host
  0.0.0.0
  This is the host address the Hive Web Interface will listen on



  hive.hwi.listen.port
  9999
  This is the port the Hive Web Interface will listen on




  hive.hwi.war.file
  lib/hive-hwi-0.14.0.war
  This is the WAR file with the jsp content for Hive Web Interface



3.2  hive-log4j.properties

修改:

hive.log.dir=/var/hive/logs

3.3 webhcat-log4j.properties


修改:

webhcat.log.dir = /var/hive/logs

3.4 hcat_server.sh

在开头加上:

export HCAT_LOG_DIR=/var/hive/logs

3.5 webhcat_config.sh

在开头加上:

export WEBHCAT_LOG_DIR=/var/hive/logs
export WEBHCAT_PID_DIR=/tmp

4. 创建相关文件夹和设置权限


HIVE默认在HDFS上会使用/tmp和/user/hive/warehouse两个目录,如果我们以hive用户启动hive,它没有在根目录上的写权限,这样启动hive时就会报错, 所以需要我们通过hadoop的超级用户为hive建立这两个目录,并给赋予相应的权限给hive用户。

hadoop fs -mkdir -p /user/hive
hadoop fs -chgrp hive /user/hive
hadoop fs -chown hive /user/hive

hadoop fs -mkdir /tmp
hadoop fs -chmod a+w /tmp


另外,前面的很多配置项都使用了本地的一个/var/hive文件夹,这需要我们创建这个文件夹并assign给hive用户。

5. 构建hwi的war包

hive目前的发行包里没有hwi的war包文件,这个问题在0.13和0.14上都存在,没有这个war包就不能启动hwi服务。目前的解决方法是从源码手动build出这个war包,具体做法是:

5.1 下载hive 0.14.0的源码包并解压


5.2 解压后进入hwi子目录,该目录下的web文件夹正是war包的全部文件,我们需要做的就是通过jar命令把这个文件夹打包为war文件。在hwi目录下执行:

jar cvfM0 hive-hwi-0.14.0.war -C web/ .

执行之后 ,将生成的war文件拷贝至$HIVE_HOME/lib文件夹下,同时修改hive-site.xml文件夹中的:  hive.hwi.war.file,将其value改为lib/hive-hwi-0.14.0.war

6. 安装MariaDB/MySql

HIVE需要使用一个关系型数据库存储元数据,对于MariaDB/MySql的安装本文不做赘述,只给出两个小贴士:

设置root用户远程连接数据库

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your-password' WITH GRANT OPTION;

为root用户设置密码

$ mysql -u root
mysql> use mysql;
mysql> update user set password=PASSWORD("new-password") where User='root';
mysql> flush privileges;
mysql> exit

另外,有两个地方是需要特别注意的:

  • 必需要将数据库对应的JDBC驱动jar包拷贝至$HIVE_HOME/lib/目录下
  • hive-site.xml中javax.jdo.option.*的配置项都是在配置与这个数据库连接的JDBC属性,所以要对应好。比如server名,driver名等等。


7. 启动

#启动metastore服务
nohup $HIVE_HOME/bin/hive --service metastore > /dev/null 2> /dev/null &

#启动hiveserver服务
nohup $HIVE_HOME/bin/hive --service hiveserver > /dev/null 2> /dev/null &

#启动hwi服务
nohup $HIVE_HOME/bin/hive --service hwi > /dev/null 2> /dev/null &

#启动hcat_server服务
$HIVE_HOME/hcatalog/sbin/hcat_server.sh start

#启动webhcat_server服务
$HIVE_HOME/hcatalog/sbin/webhcat_server.sh start

8. 常见错误及解决方法

8.1 hcat_server.sh start报如下错误:

Missing hive-site.xml, expected at [/usr/local/hive/conf/hive-site.xml]
这时需要把${HIVE_HOME}}/conf/hive-default.xml.template文件复制一份更名为hive-site.xml

8.2 hcat_server.sh start报如下错误:

Started metastore server init, testing if initialized correctly...
/usr/local/hive/hcatalog/sbin/hcat_server.sh: line 91: /usr/local/hive/hcatalog/sbin/../var/log/hcat.out: No such file or directory.Metastore startup failed, see /usr/local/hive/hcatalog/sbin/../var/log/hcat.err

这是因为启动hive进程的用户(就是hive:hive)对指定的log文件或目录没有写权限。解决方法是指定一个hive用户具有写权限的位置,然后在启动脚本里export变量HCAT_LOG_DIR!具体命令如下:

#mkdir -p /var/hive/logs
#chgrp hive /var/hive
#chown hive /var/hive

#vim ${HIVE_HOME}/hcatalog/sbin/hcat_server.sh
#export HCAT_LOG_DIR=/var/hive/logs

8.3 在root下使用sudo启动,报错:

webhcat: starting ...
webhcat: /usr/local/hadoop/bin/hadoop jar /usr/local/apache-hive-0.14.0-bin/hcatalog/sbin/../share/webhcat/svr/lib/hive-webhcat-0.14.0.jar org.apache.hive.hcatalog.templeton.Main  
/usr/local/hive/hcatalog/sbin/webhcat_server.sh: line 143: ./webhcat-console.log: Permission denied
/usr/local/apache-hive-0.14.0-bin/hcatalog/sbin/webhcat_server.sh: failed to start. Check logs in  .

原因:hive默认在启动用户的home目录下生成日志文件,这时候需要修改hive的log4j的配置文件!

vim $HIVE_HOME/hcatalog/etc/webhcat/webhcat-log4j.properties
webhcat.log.dir = /var/hive/logs


8.4 执行hive --service hwi,报错

ls: cannot access /usr/local/hive/lib/hive-hwi-*.war: No such file or directory

这是没有hwi的war包或配置的war路径不对引起的,解决方法参考第5章节。

8.5 启动时报错:

Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "/usr/java/jdk1.7.0_71/jre"

解决方法:
cp $JAVA_HOME/lib/tools.jar $HIVE_HOME/lib/


你可能感兴趣的:(大数据专题)