HIVE 0.14.0安装,hive0.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,如下图:


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
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<property>
  <name>hive.metastore.execute.setugi</name>
  <value>true</value>
</property>

<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
  <description>location of default database for the warehouse</description>
</property>

<!-- metadata database connection configuration -->

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

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>org.mariadb.jdbc.Driver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>root</value>
  <description>username to use against metastore database</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>your-password</value>
  <description>password to use against metastore database</description>
</property>

<property>
  <name>hive.hwi.listen.host</name>
  <value>0.0.0.0</value>
  <description>This is the host address the Hive Web Interface will listen on</description>
</property>

<property>
  <name>hive.hwi.listen.port</name>
  <value>9999</value>
  <description>This is the port the Hive Web Interface will listen on</description>
</property>

<!-- configure hwi war package location -->
<property>
  <name>hive.hwi.war.file</name>
  <value>lib/hive-hwi-0.14.0.war</value>
  <description>This is the WAR file with the jsp content for Hive Web Interface</description>
</property>

</configuration>

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/


相关内容