本文原文出处: http://blog.csdn.net/bluishglc/article/details/41652111 严禁任何形式的转载,否则将委托CSDN官方维护权益!
将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
cd $HIVE_HOME/conf
cp hive-default.xml.template hive-site.xml
cp hive-log4j.properties.template hive-log4j.properties
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
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
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
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
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/