-----成王败寇(陈小春)
(安装会有版本问题 hadoop1.0版本以上的请安装hive-0.90测试
hadoop2.0以上请安装hive-0.12.0或者最新版测试)
hive-0.9.0 下载地址:http://pan.baidu.com/s/1rj6f8
hive-0.12.0下载地址:http://mirrors.hust.edu.cn/apache/hive/hive-0.12.0/
#cd /usr/local
#tar -zxvf hive-0. 12.0.tar.gz
#mv hive-0. 12.0 hive
修改/etc/profile文件。
#vi /etc/profile
增加
export HIVE_HOME=/hadoop/hadoop/hive
修改
exportPATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HIVE_HOME/bin
保存退出
#source /etc/profile
l cd $HIVE_HOME/conf
l mv hive-env.sh.template hive-env.sh
l mv hive-default.xml.template hive-site.xml
export JAVA_HOME=/usr/local/jdk
export HIVE_HOME=/home/hadoop/hive
export HADOOP_HOME=/home/hadoop/hadoop2
启动hive时候,记得先启动hadoop(因为hive是操作hdfs中的数据)
jps命令查看当前启动的java程序
#hive
[FatalError] hive-site.xml:2002:16: The element type "value" must beterminated by the matching end-tag "</value>".
2002 <value>auth</auth>
(在2002行第16字符那里: <value>auth</value>)
hive>show tables;
此时还报错:
FAILED:Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.java.lang.RuntimeException: Unable to instantiateorg.apache.hadoop.hive.metastore.HiveMetaStoreClient
最后将hive-site.xml 里面hive.metastore.schema.verification 的值改为 false后,就没出现错误了。
hive>create table test(idint,name string);
hive>quit;
方法一:观察:#hadoop fs -ls /user/hive
参数:hive.metastore.warehouse.dir
方法二:
http://cloud4:50070 如果配置成功,查看/user/hive就存在
l metastore是hive元数据的集中存放地。metastore默认使用内嵌的derby数据库作为存储引擎
l Derby引擎的缺点:一次只能打开一个会话
l 使用Mysql作为外置存储引擎,多用户同时访问
所以我们通常建议使用mysql,但是需要去配置
l #mysql -uroot -padmin
l mysql>create database hive;
l mysql>GRANT all ON hive.* TO root@'%' IDENTIFIED BY 'admin';
l mysql>flush privileges;
l mysql>set global binlog_format='MIXED'; (如果报错就不要管)
方法1:手动命令:(此处hive为数据库名)
alter database hive character set latin1
<property>
<name>javax.jdo.option.ConnectionURL</name>
//hadoop0那么是hive所在的机子,要么是网关ip cloud4:本机;192.168.56.1网关ip
如果用hive的机子,也就是本机,需要在linux上安装mysql,看下面补充msql安装流程
不过好像如果是cloud4会show tables出错,改为localhost就好了!!!
<value>jdbc:mysql://hadoop0:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>admin</value>
</property>
1:直接输入#/hive/bin/hive的执行程序,
2:或者输入 #hive --service cli
l 分为本地与集群两种
我们可以通过mapred.job.tracker 来指明
设置方式:
hive > SET mapred.job.tracker=local
l 1、hive web界面的(端口号9999) 启动方式
#hive --service hwi &
用于通过浏览器来访问hive
http://hadoop0:9999/hwi/
l 2、hive 远程服务(端口号10000) 启动方式
#hive --service hiveserver &
l 基本数据类型
tinyint/smallint/int/bigint
float/double
boolean
string
• 复杂数据类型
Array/Map/Struct
• 没有date/datetime
l Hive的数据存储基于Hadoop HDFS
l Hive没有专门的数据存储格式
l 存储结构主要包括:数据库、文件、表、视图
l Hive默认可以直接加载文本文件(TextFile),还支持sequence file
l 创建表时,指定Hive数据的列分隔符与行分隔符,Hive即可解析数据
l 类似传统数据库的DataBase
l 默认数据库"default"
使用#hive命令后,不使用hive>use <数据库名>,系统默认的数据库。
可以显式使用hive> use default;
创建一个新库
hive > create database test_dw;
warehouse是在 hive-site.xml 中由 ${hive.metastore.warehouse.dir}指定的数据仓库的目录
我们可以把value修改为:/hive
l 每一个 Table 在 Hive 中都有一个相应的目录存储数据。例如,一个表 test,它在HDFS 中的路径为:/ warehouse/test。
l 所有的 Table 数据(不包括 ExternalTable)都保存在这个目录中。
l 删除表时,元数据与数据都会被删除
l 常用操作
l 创建数据文件t1.dat
l 创建表
l hive>create table t1 (key string);
l 加载数据
l hive>load data local inpath '/root/inner_table.dat' into table t1;
l 查看数据
l select * from t1
l select count(*) from t1
l 删除表 drop table t1
希望通过共享自己的笔记,来找到一群和我一样愿意分享笔记和心得的朋友,让大家一起进步
我的QQ:529815144,外号:小头