Ubuntu 安装 Hive

主机环境:

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>

将JDBC的驱动拷贝到$HIVE_HOME/lib下

cp /home/dat/mysql-connector-java-5.1.24-bin.jar /opt/hive-0.12.0/lib/

安装Mysql和启动mysql略过。。

检查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>
修改后继续实验,依然报错
13/11/07 14:45:16 ERROR hive.log: Got exception: java.net.ConnectException Call to localhost/127.0.0.1:9000 failed on connection exception: java.net.ConnectException: 拒绝连接

原因很简单: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> 



你可能感兴趣的:(hive,hive,ubuntu)