主机环境:
Ubuntu 13.10
Hadoop 1.2.1
Hive 0.12.0
下载解压和转移:
wget http://mirrors.hust.edu.cn/apache/hive/hive-0.12.0/hive-0.12.0.tar.gz tar -xzvf hive-0.12.0.tar.gz mv hive-0.12.0 /opt/配置系统环境变量:
sudo vim /etc/profile source /etc/profile
修改hive配置文档
用户自定义的配置文件:hive-site.xml
默认配置文件:hive-default.xml
用户自定义配置文件会覆盖默认配置文件,Hive也会读入Hadoop的配置,因为Hive是作为Hadoop客户端启动的。
cd conf cp hive-default.xml.template hive-site.xml
Hive的主要配置项:
hive.metastore.warehouse.dir 指定Hive的存储目录
hive.exec.scratchdir 指定hive的数据临时文件目录
连接数据库的配置:
Hive需要将元数据存储在RDBMS中,配置mysql存储Hive元数据
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.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>111111</value> <description>password to use against metastore database</description> </property>
cp /home/dat/mysql-connector-java-5.1.24-bin.jar /opt/hive-0.12.0/lib/
检查mysql的启动状态:
sudo service mysql.server status启动Hive
/opt/hive-0.12.0/bin$ hive报错:
Cannot find hadoop installation: $HADOOP_HOME or $HADOOP_PREFIX must be set or hadoop must be in the path
原因hadoop没有启用,简单处理:source /opt/hadoop-1.2.1/conf/hadoop-env.sh
继续启动,继续报错:
Caused by: org.xml.sax.SAXParseException; systemId: file:/opt/hive-0.12.0/conf/hive-site.xml; lineNumber: 2000; columnNumber: 16; 元素类型 "value" 必须由匹配的结束标记 "</value>" 终止。
原因:xml文件有问题,2000行<value><auth>配对了,修改为vaule
继续重启,OK!
dat@dat-HP:/opt/hive-0.12.0/bin$ hive Logging initialized using configuration in jar:file:/opt/hive-0.12.0/lib/hive-common-0.12.0.jar!/hive-log4j.properties hive>
Hive其他配置:
Hive可以像Mysql一样进行运行时配置,如:
set mapred.job.tracker=myhost.mycompany.com:50030
set mapred.reduce.tasks=100;
set -v
通过set -v可以查看当前所有设定信息。set的作用是session级的,只对本次操作有效。
hive设置本地模式:。。。。P221
Hive的错误日志
hive采用log4j记录日志,默认情况下的记录等级使WARN级别的。存储在/tmp/{user.na-ame}/hive.log文件夹。用户也可以改变日志级别。
hive -hiveconf hive.root.logger=DEBUG,console
测试:
$HIVE_HOME/bin/hive
show databases;
报错:
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
解决办法:
如上,修改日志权限,打印出日志查找
MetaException(message:Version information not found in metastore.
修改属性:
<name>hive.metastore.schema.verification</name> <value>false</value>修改后继续实验,依然报错
原因很简单:hadoop没有启动,启动之后重新实验,OK!!
dat@dat-HP:/opt/hive-0.12.0/bin$ hive Logging initialized using configuration in jar:file:/opt/hive-0.12.0/lib/hive-common-0.12.0.jar!/hive-log4j.properties hive> show databases; OK default Time taken: 2.448 seconds, Fetched: 1 row(s) hive> show tables; OK Time taken: 2.466 seconds hive>