当前位置: 首页>数据库>正文

hive 维度建模实例 hive建模工具


hive

  • 数据仓库
  • 数据仓库的主要特征
  • 数据仓库与数据库的区别
  • 数据仓库分层架构
  • 数据仓库元数据管理
  • hive基本概念
  • hive基本概念
  • hive架构
  • hive的数据存储
  • hive安装
  • derby版hive直接使用
  • 使用mysql共享hive元数据
  • 安装mysql (使用yum源进行安装)
  • 修改hive的配置文件
  • hive三种交互方式
  • Hive交互shell
  • Hive JDBC服务
  • Hive命令行交互


数据仓库

数据仓库,Data Warehouse,可简写为DW或DWH。
据仓库的目的是构建面向分析的集成化数据环境。
数据仓库不“生产”,也不“消费”数据,数据来源于外部,并且开放给外部应用,这也是为什么叫“仓库”,而不叫“工厂”的原因。

数据仓库的主要特征

数据仓库是面向主题的(Subject-Oriented )、集成的(Integrated)、非易失的(Non-Volatile)和时变的(Time-Variant )数据集合,用以支持管理决策。

  1. 面向主题:数据分析有一定的范围,需要选取一定的主题进行分析
  2. 集成性:集成各个其他方面关联的一些数据,比如分析订单购买人的情况,就涉及到牵连用户信息的情况
  3. 非易失性:数据分析主要是分析过去已经发生的数据 ,分析的东西都是既成的事实
  4. 时变性:随着时间的发展,数据的形态也在发生变化,数据分析的手段也要相应的进行改变

数据仓库与数据库的区别

数据库
事务处理 联机事务处理(On-Line Transaction Processing,OLTP) 数据库主要的功能就是用来做事务处理的,主要负责频繁的增删改查

数据仓库
分析处理 联机的分析处理(On-Line Analytical Processing,OLAP) 不需要做事务的保证 主要职责就是做数据的分析,面向分析的。数据仓库的产生是因为有大量的数据库的存在,需要对数据进一步的决策分析,然后才产生数据仓库的概念。

数据库的数据,允许增删改
数据仓库的数据,一般不允许增删改

数据仓库分层架构

数据仓库一般分为三层,目的使每一层职责清晰:

  • 第一层:源数据层 又叫ODS 我们产生数据的地方
  • 第二层:数据仓库层 又叫DW 主要集中存储数据 面向主题进行分析
  • 第三步:数据应用层 又叫app层 主要用于展示我们分析之后的数据结果

数据在这三层之间的一个流动,称之为ETL的过程
ETL:extrat(抽取) transform(转换) load(加载)
数据从源数据层流向数据仓库层再流向app层

数据仓库元数据管理

元数据(Meta Date),主要记录数据仓库中模型的定义、各层级间的映射关系、监控数据仓库的数据状态及ETL的任务运行状态。
元数据可分为技术元数据业务元数据

数据仓库的元数据管理

hive 维度建模实例 hive建模工具,hive 维度建模实例 hive建模工具_hive,第1张

hive基本概念

hive基本概念

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
其本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据的存储。hive可以理解为一个将SQL转换为MapReduce的任务的工具,甚至更进一步可以说hive就是一个MapReduce的客户端
数据的存储:用的是HDFS
数据的计算:用的是MR
元数据信息:hive与hdfs上面数据的映射关系,一般都保存在mysql或者oracle里面等等

hive的特点

  • 可扩展
    Hive可以自由的扩展集群的规模,一般情况下不需要重启服务。
  • 延展性
    Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
  • 容错
    良好的容错性,节点出现问题SQL仍可完成执行。

hive架构

基本组成

  • 用户接口:提供写sql的地方
  • 元数据存储:记录hive的表与数据之间的映射关系
  • 解释器:解析我们的sql语句,转换成mr的任务提交,准备执行
  • 编译器、优化器、执行器:编译、优化以及查询计划的生成。生成的查询计划存储在HDFS 中,并在随后有MapReduce 调用执行。

hive的数据存储

  1. Hive中所有的数据都存储在 HDFS 中,一定是结构化数据没有专门的数据存储格式(可支持Text,SequenceFile,ParquetFile,ORC格式RCFILE等)
    SequenceFile是hadoop中的一种文件格式:
    文件内容是以序列化的key value对象来组织的,二进制文件
  2. 只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据。
  3. Hive 中包含以下数据模型:DB、Table,External Table,Partition,Bucket。
    db:在hdfs中表现为${hive.metastore.warehouse.dir}目录下一个文件夹
    table:在hdfs中表现所属db目录下一个文件夹
    external table:与table类似,不过其数据存放位置可以在任意指定路径
    partition:在hdfs中表现为table目录下的子目录
    bucket:在hdfs中表现为同一个表目录下根据hash散列之后的多个文件

hive安装

hive不需要安装多台,就是一个客户端。

derby版hive直接使用

  1. 解压hive
    cd /export/softwares
    tar -zxvf hive-1.1.0-cdh5.14.0.tar.gz -C …/servers/
  2. 直接启动 bin/hive
    cd …/servers/
    cd hive-1.1.0-cdh5.14.0/
    bin/hive
    hive> create database mytest;

缺点:多个地方安装hive后,每一个hive是拥有一套自己的元数据,大家的库、表就不统一;

使用mysql共享hive元数据

安装mysql (使用yum源进行安装)

第一步:在线安装mysql相关的软件包
yum install mysql mysql-server mysql-devel

第二步:启动mysql的服务
/etc/init.d/mysqld start
查看mysql进程:ps -ef | grep mysql

第三步:通过mysql安装自带脚本进行设置

/usr/bin/mysql_secure_installation

hive 维度建模实例 hive建模工具,hive 维度建模实例 hive建模工具_hive_02,第2张

hive 维度建模实例 hive建模工具,hive 维度建模实例 hive建模工具_mysql_03,第3张

第四步:进入mysql的客户端然后进行授权

进入mysql的客户端

mysql -uroot -p

mysql的远程连接授权语句:

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

刷新权限表
flush privileges;
退出
exit;

符号

含义

*. *

第一个星表示数据库名称 第二个星表示数据库下面的哪个表

‘root’@’%’

root:表示mysql的用户 %表示我们的ip地址 可以从哪台机器使用哪个用户来连接我们的数据库服务器

例如:root@node01 表示node01这台机器可以用root用户远程登录

all privileges

所有的权限 这里还可以写 insert update delete select

identified by

远程连接的时候的密码,与我们mysql的root用户密码无关

修改hive的配置文件

修改hive-env.sh
添加我们的hadoop的环境变量

cd /export/servers/hive-1.1.0-cdh5.14.0/conf
 cp hive-env.sh.template hive-env.sh
 vim hive-env.sh
 HADOOP_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0
 #Hive Configuration Directory can be controlled by:
 export HIVE_CONF_DIR=/export/servers/hive-1.1.0-cdh5.14.0/conf

修改hive-site.xml
cd /export/servers/hive-1.1.0-cdh5.14.0/conf
vim hive-site.xml

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://node03.hadoop.com:3306/hive?createDatabaseIfNotExist=true</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>123456</value>
        </property>
        <property>
                <name>hive.cli.print.current.db</name>
                <value>true</value>
        </property>
        <property>
                <name>hive.cli.print.header</name>
                <value>true</value>
        </property>
        <property>
                <name>hive.server2.thrift.bind.host</name>
                <value>node03.hadoop.com</value>
        </property>
<!--
        <property>
                <name>hive.metastore.uris</name>
                <value>thrift://node03.hadoop.com:9083</value>
        </property>
-->
</configuration>

上传mysql的lib驱动包
将mysql的lib驱动包上传到hive的lib目录下
cd /export/servers/hive-1.1.0-cdh5.14.0/lib
将mysql-connector-java-5.1.38.jar 上传到这个目录下

hive三种交互方式

Hive交互shell

cd /export/servers/hive-1.1.0-cdh5.14.0
bin/hive

查看所有的数据库
hive (default)> show databases;

创建一个数据库
hive (default)> create database myhive;
使用该数据库并创建数据库表
hive (default)> use myhive;
hive (myhive)> create table test(id int,name string);

Hive JDBC服务

启动hiveserver2服务
前台启动
cd /export/servers/hive-1.1.0-cdh5.14.0
bin/hive --service hiveserver2

后台启动
cd /export/servers/hive-1.1.0-cdh5.14.0
nohup bin/hive --service hiveserver2 &

启动后再另一个窗口可以beeline连接hiveserver2
bin/beeline
beeline> !connect jdbc:hive2://node03.hadoop.com:10000
用户名和密码随便输出,但是用户名一定要有权限去操作hdfs的数据

Hive命令行交互

bin/hive -e 不进入hvie的客户端直接执行hql语句
 bin/hive -e “use myhive;select * from test;”bin/hive -f hive.sql 不进入hive的客户端,直接执行hive的脚本文件
 vim hive.sql
 use myhive;select * from test;
 bin/hive -f hive.sql

hive参数含义

hive 维度建模实例 hive建模工具,hive 维度建模实例 hive建模工具_数据仓库_04,第4张



https://www.xamrdz.com/database/67w1964140.html

相关文章: