分享

HIVE 0.14.0安装配置


问题导读


1.HIVE安装是否需要编译?
2.hive安装需要哪些步骤?
3.hive安装需要修改哪些配置?







1. 前置条件

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

2.安装

从官网下载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,如下图:
20141201202049906.png


3. 配置环境变量

#vim /etc/profile

在文件尾部添加:
  1. #HADOOP ENV VARIABLES
  2. JAVA_HOME=/usr/java/jdk1.7.0_71
  3. HADOOP_HOME=/usr/local/hadoop
  4. HIVE_HOME=/usr/local/hive
  5. PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$HIVE_HOME/hcatalog/bin:$HIVE_HOME/hcatalog/sbin
  6. export JAVA_HOME HADOOP_HOME HIVE_HOME PATH
复制代码





4. 配置HIVE

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

  1. cd $HIVE_HOME/conf
  2. cp hive-default.xml.template hive-site.xml
  3. cp hive-log4j.properties.template hive-log4j.properties
复制代码



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

4.1 hive-site.xml
  1. <?xml version="1.0"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <configuration>
  4. <property>
  5.   <name>hive.metastore.execute.setugi</name>
  6.   <value>true</value>
  7. </property>
  8. <property>
  9.   <name>hive.metastore.warehouse.dir</name>
  10.   <value>/user/hive/warehouse</value>
  11.   <description>location of default database for the warehouse</description>
  12. </property>
  13. <!-- metadata database connection configuration -->
  14. <property>
  15.   <name>javax.jdo.option.ConnectionURL</name>
  16.   <value>jdbc:mariadb://your-database-server/hivemetastoredb?createDatabaseIfNotExist=true</value>
  17.   <description>JDBC connect string for a JDBC metastore</description>
  18. </property>
  19. <property>
  20.   <name>javax.jdo.option.ConnectionDriverName</name>
  21.   <value>org.mariadb.jdbc.Driver</value>
  22.   <description>Driver class name for a JDBC metastore</description>
  23. </property>
  24. <property>
  25.   <name>javax.jdo.option.ConnectionUserName</name>
  26.   <value>root</value>
  27.   <description>username to use against metastore database</description>
  28. </property>
  29. <property>
  30.   <name>javax.jdo.option.ConnectionPassword</name>
  31.   <value>your-password</value>
  32.   <description>password to use against metastore database</description>
  33. </property>
  34. <property>
  35.   <name>hive.hwi.listen.host</name>
  36.   <value>0.0.0.0</value>
  37.   <description>This is the host address the Hive Web Interface will listen on</description>
  38. </property>
  39. <property>
  40.   <name>hive.hwi.listen.port</name>
  41.   <value>9999</value>
  42.   <description>This is the port the Hive Web Interface will listen on</description>
  43. </property>
  44. <!-- configure hwi war package location -->
  45. <property>
  46.   <name>hive.hwi.war.file</name>
  47.   <value>lib/hive-hwi-0.14.0.war</value>
  48.   <description>This is the WAR file with the jsp content for Hive Web Interface</description>
  49. </property>
  50. </configuration>
复制代码






4.2  hive-log4j.properties

修改:

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

4.3 webhcat-log4j.properties

修改:
webhcat.log.dir = /var/hive/logs

4.4 hcat_server.sh

在开头加上:

export HCAT_LOG_DIR=/var/hive/logs

4.5 webhcat_config.sh

在开头加上:

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

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

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


  1. hadoop fs -mkdir -p /user/hive
  2. hadoop fs -chgrp hive /user/hive
  3. hadoop fs -chown hive /user/hive
  4. hadoop fs -mkdir /tmp
  5. hadoop fs -chmod a+w /tmp
复制代码




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

6. 构建hwi的war包

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

6.1 下载hive 0.14.0的源码包并解压
6.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

7. 安装MariaDB/MySql

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

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

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

为root用户设置密码
  1. $ mysql -u root
  2. mysql> use mysql;
  3. mysql> update user set password=PASSWORD("new-password") where User='root';
  4. mysql> flush privileges;
  5. mysql> exit
复制代码





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

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

8. 启动


  1. #启动metastore服务
  2. nohup $HIVE_HOME/bin/hive --service metastore > /dev/null 2> /dev/null &
  3. #启动hiveserver服务
  4. nohup $HIVE_HOME/bin/hive --service hiveserver > /dev/null 2> /dev/null &
  5. #启动hwi服务
  6. nohup $HIVE_HOME/bin/hive --service hwi > /dev/null 2> /dev/null &
  7. #启动hcat_server服务
  8. $HIVE_HOME/hcatalog/sbin/hcat_server.sh start
  9. #启动webhcat_server服务
  10. $HIVE_HOME/hcatalog/sbin/webhcat_server.sh start
复制代码




9. 常见错误及解决方法

9.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

9.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!具体命令如下:


  1. #mkdir -p /var/hive/logs
  2. #chgrp hive /var/hive
  3. #chown hive /var/hive
  4. #vim ${HIVE_HOME}/hcatalog/sbin/hcat_server.sh
  5. #export HCAT_LOG_DIR=/var/hive/logs
复制代码





9.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

9.4 执行hive --service hwi,报错
ls: cannot access /usr/local/hive/lib/hive-hwi-*.war: No such file or directory

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

9.5 启动时报错:
  1. Unable to find a javac compiler;
  2. com.sun.tools.javac.Main is not on the classpath.
  3. Perhaps JAVA_HOME does not point to the JDK.
  4. It is currently set to "/usr/java/jdk1.7.0_71/jre"
复制代码



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




原文:http://www.tuicool.com/articles/6bqEne3

已有(2)人评论

跳转到指定楼层
hahaxixi 发表于 2014-12-24 19:25:30
嗯嗯,学习了~~~
回复

使用道具 举报

355815741 发表于 2014-12-24 21:25:49
使用了0.13,学习下0.14,谢谢分享~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条