Hive:环境搭建及例子

来源:互联网 发布:c语言智能五子棋游戏 编辑:程序博客网 时间:2024/06/01 22:27

Hive是由Facebook最初开发的基于Hadoop的数据仓库工具,提供了类SQL的查询语言Hive SQL(HQL)。

在内部,Hive将用户的SQL语句转化为一系列的MapReduce作业,并提交到集群中运行。

在Hive中,数据通过表来组织,提供了一种将表结构附加(attaching)到HDFS中的数据的一种方式。诸如表的Schema等元数据存放在一个称为metastore的数据库中。默认情况下,metastor存放在本地,但是可以配置在远程共享,这通常在生成环境中使用。

Hive整体架构如下;

image_1aorqv69b184sbetjp6sni19e11g.png-494.8kB

下载安装

下载稳定版本,留意与Hadoop版本的兼容:

wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.0.0/apache-hive-2.0.0-bin.tar.gztar -zxvf apache-hive-2.0.0-bin.tar.gz mv apache-hive-2.0.0-bin /home/hive-2.0.0vim /etc/profileexport HIVE_HOME=/home/hive-2.0.0export PATH=$PATH:$HIVE_HOME/binsource /etc/profile

确保集群中配置了HADOOP_CONF_DIR环境变量,以便Hive可以找到集群配置。

配置metastore

metastore的3种模式:

  • Embedded metastore:

image_1aorp4qq86fn1pnl126o72q1s2h9.png-143.1kB

  • Local metastore:

image_1aorp5rkd1g9ffkuk8a17s5hevm.png-259.1kB

  • Remote metastore

image_1aorp6k6t4slgsa1hlfiu61qds13.png-361.4kB

Local模式配置

创建数据库用作metastore:

create database hive;

hive-site.xml

<configuration>    <property>        <name>hive.metastore.local</name>        <value>true</value>    </property>    <property>        <name>javax.jdo.option.ConnectionURL</name>        <value>jdbc:mysql://192.168.1.132: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>root</value>    </property>    <property>        <name>javax.jdo.option.ConnectionPassword</name>        <value>yourpasssword</value>    </property></configuration>

把MySQL JDBC驱动上传到hive的lib目录下。

初始化:

schematool -initSchema -dbType mysql

image_1aors6tf3u0r1eo1curatltq020.png-54.5kB

启动Hive:

% hive

image_1aors80h79pooqo1ikphc055t2d.png-49kB

image_1aors9oj4vdb1q1q3fc1gqb1djr2q.png-14.5kB

简单实例

创建表

create table records(year string , temperature int ,quality int) row format delimited fields terminated by '\t'

成功之后,我们可以在mysql的元数据中看到这个表的信息,在hive.TBLS表中:

image_1aorsikihfj11oe1n4dtttnf337.png-52.7kB

导入数据

将HDFS的文件导入Hive:

load data inpath "/input/ncdc/micro-tab/sample.txt"overwrite into table records;

image_1aorsuf2q183ddh4hsrdbv1ii441.png-11.7kB

在/user/hive/warehouse目录下可以看到下面的文件:

image_1aorssii21s7r13k12h8t35191h3k.png-17.7kB

查询数据

Hive跟语法跟MySQL非常像,如下查询表中所有数据:

select * from records;

image_1aort2sd41cipag61ot41ujk1mn64e.png-17.7kB

来一个分组查询:

select year , max(temperature) from records  where temperature != 9999 and quality in ( 0,1,4,5,9) group by year;

image_1aorta6771r3o1mgk1d0j54nl3c4r.png-70.4kB

可以看到Hive启动了一个MapReduce作业,计算得到最终结果。YARN管理界面可以看到该作业:

image_1aortcu3gc6tskf19qhaii1ia358.png-64.3kB

Hive Server

启动HiveServer2

hiveserver2

image_1aorts7vhqpr14u0o3e1av91t8i5l.png-37kB

此时在默认的10020端口可以访问的hive界面:

image_1aorttlkgb9v1c7lmh6k821egn62.png-114.8kB

(完)

0 0
原创粉丝点击