Hive 是什么之类的就不说了。下面说说简单的安装过程。
其实和hadoop很类似,毕竟是一家人嘛。
1. 下载,解压apache-hive-1.2.1-bin.tar.gz (这是本人用的版本)
tar -zxvf apache-hive-1.2.1-bin.tar.gz
2. 设置环境变量
vi ~/.bash_profile (添加两行)
export HIVE_HOME=/home/hadoop/tools/apache-hive-1.2.1-bin
export PATH=$PATH:$HIVE_HOME/bin
source ~/.bash_profile
3. 更改配置
cd ${HIVE_HOME}/conf
copy 所有的后缀为template的文件,去掉后面的.template作为文件名。
mv hive-default.xml hive-site.xml
修改hive-env.sh
HADOOP_HOME=/home/hadoop/tools/hadoop-2.6.0
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/home/hadoop/tools/apache-hive-1.2.1-bin/conf
修改hive-site.xml,将MetaData存储到其他机器上的Mysql. (关于怎么安装mysql可以自己想办法,一定搞得定的,相信自己,只要有心,强烈建议不要用hive自带的内嵌式Derby,至少也要用个server版的)
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.121.1:3306/hive</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<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.ConnectionPassword</name>
<value>hive</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>Username to use against metastore database</description>
</property>
这里是已经创建了hive这个database in Mysql,用户名和密码都是hive,你可以改成自己的
其他的配置项可以根据需要做少量修改。
使用Mysql就需要把mysql的JDBC驱动放到${HIVE_HOME}/lib下面,当然也可以用其他的RDBMS。
4. 启动hadoop,然后启动 hive
可能出现的错误:
a. [ERROR] Terminal initialization failed; falling back to unsupported
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
at jline.TerminalFactory.create(TerminalFactory.java:101)
at jline.TerminalFactory.get(TerminalFactory.java:158)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:229)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)
启动之后
[hadoop@vm11 apache-hive-1.2.1-bin]$ hive
Logging initialized using configuration in file:/home/hadoop/tools/apache-hive-1.2.1-bin/conf/hive-log4j.properties
hive> create table aaa(name string);
FAILED: Error in metadata: javax.jdo.JDODataStoreException: Error(s) were found while auto-creating/validating the datastore for classes. The errors are printed in the log, and are attached to this exception.
NestedThrowables:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Specified key was too long; max key length is 1000 bytes
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
可能是数据库的编码格式不对,更改Mysql的字符集
alter database hivedb character set latin1;
再运行下,就OK了。也可以通过
hive -hiveconf hive.root.logger=DEBUG,console
来排查出现的错误。
5.运行DML DDL
运行成功了,就可以通过各种CRUD之类的语句来折磨Hive的,不知道谁折磨谁,试试就知道了,呵呵。