———沉寂了一个寒假,没有更新一篇文章,仿佛一切都是陌生的。所见的的人,所看的景。
hive的服务组成:
Hive是建立在Hadoop平台上的,本身没有特定的数据存储模式,也不会为数据建立索引。数据以任意的形式存储在Hdfs上,或者以特定分类的形式存储在分布式数据库HBase(Nosql的一种)。在创建Hive表时候指明数据的列分隔符和行分隔符即可解析存储在HDFS和HBase上的数据。
hive 建立在Hadoop平台上。主要是提供一个sql解析的过程。把外部sql命令解析成一个mapreduce作业计划,并把按照该计划生成的Mapreduce任务交给Hadoop集群处理。所以,要进行hive 处理,必须要保证Hadoop 集群正常启动。
简而言之 hive是一个数据仓库工具,作用是可以将结构化的数据文件映射为一张数据库表,并提供简单查询功能,可以将sql语句转化为Mapreduce任务进行,是在Hadoop上的数据库基础架构。数据仓库面向主题是集成的,不可更新 ,不随时间改变的。
hive的运行方式底层走的是maoreduce,可任意实现自定义的mapper 和reduce 任务、hive是SQL解析引擎,它将SQL语句解析翻译成M/PJob管理 运行在Hadoop上执行
hive表其实就是HDFS的目录。按照表名把文件夹分开,如果是分区表,则分区值是文件夹,可以直接在Mr/job中使用这些数据。hive 相当于是Hadoop客服端工具,部署时候不放在,不一定集群上,可以放在某个节点上。
按照原理标准图word手绘图如下:
hive的安装
步骤:
1.上传安装包并解压
2.配置环境变量,指定安装路径, 要配置 path hive_home等
3,安装MySQL 数据库。
我在安装MySQL数据库遇到问题了,先是用的是tmp包,也就是源码包,不能·达到预期结果,然后改成rmp二进制包,安装成功后,但是hive不能与MySQL建立连接,问题出在MySQL密码与hive-site.xml设置的不一样导致无法建立连接,之后修改密码连接成功
,之所以安装MySQL是因为hive 默认的数据库是Derby数据库,其与MySQL数据库比较存在缺陷。
hive shell
hive shell是运行在Hadoop环境上的,是hive提供的命令行接口,在hive提示符出现后输入hive命令,hiveshell会把这些hiveSQL查询转换一系列的mapreduce作业任务进行并行处理。然后返回处理结果。
hiveshell 还可以在非交互式模式下运行
HiveQLq与SQL语言非常类似,hive
不存储数据,只是管理存储在hdfs上的数据,也就是管理hdfs上文件的目录,也可以称作是管理元数据信息的。通过hive表导入数据只是简单的将数据移动【如果数据在hdfs上】或复制【如果数据是本地文件系统中】到hive表所在的HDFS目录中
hive 管理数据有以下几种方式,内部表,外部表,分区,桶。
1、内部表:Hive中的表和关系型数据库中的表在概念上很类似,每个表在HDFS中都有相应的目录用来存储表的数据,这个目录可以通
过${HIVE_HOME}/conf/hive-site.xml配置文件中的hive.metastore.warehouse.dir属性来配置,
这个属性默认的值是/user/hive/warehouse(这个目录在HDFS上),我们可以根据实际的情况来修改这个配置。如果我有一个表wyp,
那么在HDFS中会创建/user/hive/warehouse/wyp目录(这里假定hive.metastore.warehouse.dir配置
为/user/hive/warehouse);wyp表所有的数据都存放在这个目录中。这个例外是外部表。
2、外部表:Hive中的外部表和表很类似,但是其数据不是放在自己表所属的目录中,而是存放到别处,这样的好处是如果你要删除这个外部表,该
外部表所指向的数据是不会被删除的,它只会删除外部表对应的元数据;而如果你要删除表,该表对应的所有数据包括元数据都会被删除。
3、分区:在Hive中,表的每一个分区对应表下的相应目录,所有分区的数据都是存储在对应的目录中。比如wyp表有dt和city两个分区,
则对应dt=20131218,city=BJ对应表的目录为/user/hive/warehouse/dt=20131218/city=BJ,所有
属于这个分区的数据都存放在这个目录中。
4、桶:对指定的列计算其hash,根据hash值切分数据,目的是为了并行,每一个桶对应一个文件(注意和分区的区别)。比如将wyp表id
列分散至16个桶中,首先对id列的值计算hash,对应hash值为0和16的数据存储的HDFS目录为:/user/hive/warehouse
/wyp/part-00000;而hash值为2的数据存储的HDFS
目录为:/user/hive/warehouse/wyp/part-00002。
hive表DDL操作
create /drop/ alter 数据库
eg: create database shopping
location '/hive/shopping'
with dbproperties('creator'='bush','date'='2017-1-1')
使用hdfs dfs -ls 可以查看hdfs上的/hive 目录
接下来就是hive 的DDL 和 DML 操作了