刚刚研究了hive,从定义,安装到hive命令、优化高级,不断完善中。。。
Hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张数据表,并提供类SQL的查询功能。
Hive的本质是将SQL转换成mapreduce程序。
避免去写mapreduce,减少开发人员的成本
操作接口采用类sql语法,提供快速开发能力
扩展功能比较方便
由图可以看出,hive必须给予hadoop使用
|
Hive |
RDBMS |
查询语言 |
HQL |
SQL |
数据存储 |
HDFS |
Raw Device or Local FS |
执行 |
MapReduce |
Excutor |
执行延迟 |
高 |
低 |
处理数据规模 |
大 |
小 |
索引 |
0.8版本后加入位图索引 |
有复杂的索引 |
在随便一台有hadoop环境的机器上解压缩:hive-0.9.0-bin.tar.gz;tar –zxvf hive-0.9.0-bin.tar.gz
修改hive/conf下的配置文件
cphive-default.xml.template hive-default.xml
cphive-default.xml hive-site.xml
cphive-env.sh.template hive-env.sh
hive-env.sh配置HADOOP_HOME=/home/user/hadoop,最好配置一下jvm堆大小,否则使用jdbc服务的时候很容易内存溢出export HADOOP_HEAPSIZE=1024,大小视自己情况而定。
配置环境变量HIVE_HOME和PATH,vi /etc/profile ,配置完成后source /etc/profile,使文件立即生效,配置如下:
到此为止,hive配置完成,输入hive,启动,输入show databases进行验证、运行web接口:hive --service hwihttp://client:9999/hwi
启动hive的jdbc服务端thrift服务接口 hive --service hiveserver 50000
默认情况下,hive元数据保存在内嵌的Derby数据库中,只允许一个会话连接,为了支持多用户会话,则需要建立一个独立的元数据库,hive内部提供了对mysql很好的支持,配置一个独立的元数据库需要以下步骤:
第一步:安装MySQL服务器端和MySQL客户端,并启动MySQL服务(我的安装在window下,hive在虚拟机下centos6.5),安装时需要允许远程登录(记得最后一步打钩,如果是在linux上,sudo gedit /etc/mysql/my.cnf ,#bind-address=127.0.0.1 <---注释掉这一行就可以远程登录了)
第二步:安装Hive
第三步:为Hive建立相应的MySQL账户,并赋予足够的权限,执行命令如下:
$ mysql -uroot -pmysql
mysql> CREATE USER 'hive' IDENTIFIED BY 'mysql';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANTOPTION;
mysql> flush privileges;
第四步:建立 Hive 专用的元数据库,记得创建时用刚才创建的“hive”账号登陆。
mysql> exit;
$ mysql -uhive –pmysql
mysql> create database hive;
第五步:在Hive的conf目录下的文件“hive-site.xml”中增加如下配置:
从前面我们知道我们的“hive-site.xml”是一个“hive-default.xml.template”的一个拷贝,里面的配置参数非常之多,但是并不是我们都需要的,我们知道,Hive系统会加载两个配置文件一个默认配置文件“hive-default.xml”,另一个就是用户自定义文件“hive-site.xml”。当“hive-site.xml”中的配置参数的值与“hive-default.xml”文件中不一致时,以用户自定义的为准。所以我们就把我们不需要的参数都删除掉,只留下上面所示的内容。
第六步:把MySQL的JDBC驱动包复制到Hive的lib目录下。
JDBC驱动包的版本:mysql-connector-java-5.1.18-bin.jar
第七步:启动 HiveShell,輸入hive,如果沒報錯,执行“show tables;”命令,如果不报错,表明基于独立元数据库的 Hive 已经安装成功了。
第八步:验证Hive配置是否有误,进入Hive的shell新建表,在MySQL的Hive数据库中可以看到相应的元数据库信息。
1)在Hive上建立数据表
hive> CREATE TABLE xp(id INT,name string) ROW FORMAT DELIMITED FIELDSTERMINATED BY '\t';
2)从 MySQL数据库上查看元数据信息
用到的 SQL语句:
use hive; //使用 hive数据库库
show tables;//显示 hive数据库中的数据表
select * from TBLS;//查看 hive的元数据信息
到此Hive集成Mysql作为元数据已完成。