您的位置:首页 > 其它

hive初级、进阶、高级

2014-10-30 21:51 316 查看
刚刚研究了hive,从定义,安装到hive命令、优化高级,不断完善中。。。

第一部分:Hive简介

Hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张数据表,并提供类SQL的查询功能。

Hive的本质是将SQL转换成mapreduce程序。

第二部分:为什么使用hive

避免去写mapreduce,减少开发人员的成本

操作接口采用类sql语法,提供快速开发能力

扩展功能比较方便

第三部分:hive与hadoop的关系

由图可以看出,hive必须给予hadoop使用

第四部分:hive与传统数据库对比

Hive
RDBMS
查询语言
HQL
SQL
数据存储
HDFS
Raw Device or Local FS
执行
MapReduce
Excutor
执行延迟


处理数据规模


索引
0.8版本后加入位图索引
有复杂的索引

第五部分:hive安装手顺

在随便一台有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配置mysql

默认情况下,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”中增加如下配置:

<?xml version="1.0"?>

<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>

<configuration>

<property>

<name>hive.metastore.local</name>

<value>true</value>

</property>

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://192.168.11.157:3306/hive?characterEncoding=UTF-8</value>

</property>

<property>

<name>javax.jdo.option.ConnectionDriverName</name>

<value>com.mysql.jdbc.Driver</value>

</property>

<property>

<name>javax.jdo.option.ConnectionUserName</name>

<value>hive</value>

</property>

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>mysql</value>

</property>

</configuration>

从前面我们知道我们的“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作为元数据已完成。

第七部分:hive内表、外表、分区表、命令

第八部分:hive优化


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: