您的位置:首页 > 其它

Hive运行

2015-08-28 10:23 218 查看
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目录下存在老版本jline:

解决方法是:

将hive下的新版本jline的JAR包拷贝到hadoop下:
cp /hive/apache-hive-1.2.1-bin/lib/jline-2.12.jar ./

启动之后

[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的,不知道谁折磨谁,试试就知道了,呵呵。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: