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的,不知道谁折磨谁,试试就知道了,呵呵。
其实和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的,不知道谁折磨谁,试试就知道了,呵呵。
相关文章推荐
- LeetCode题解:Maximum Depth of Binary Tree
- C#学习笔记---如何提高代码逼格
- Scala学习笔记(六):Scala程序
- HDU 3836
- ios获取当前屏幕所显示Controller
- Oracle AWR报告指标全解析(三)
- 电脑数据怎么恢复
- 字体颜色的输出
- linux命令中分页等管道符的使用
- 0006 手动定制原版 Win7 操作系统(五)
- java在acm中的使用
- 双色球初探
- 软件测试学习笔记---阿冬专栏
- 基础数据校验和性能数据BSC条数缺失
- 在linux的驱动Makefile中添加调试选项
- 启发式方法
- Java高手需要注意的25个学习目标
- LoadRunner11学习记录四
- PHP单引号和双引号的区别
- Windows Server 2016第三技术预览版新特性详解:容器是亮点