分布式数据仓库hive学习笔记

———沉寂了一个寒假,没有更新一篇文章,仿佛一切都是陌生的。所见的的人,所看的景。

    

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学习笔记》

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 操作了

更多 

    原文作者:起个什么呢称呢
    原文地址: https://www.jianshu.com/p/7edda6d5a824
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞