澳门至尊网站-首页

您的位置:澳门至尊网站 > 搜索引擎 > hive数据仓库,Hive学习笔记1

hive数据仓库,Hive学习笔记1

2019-10-22 12:06

一、hive概述

先是局地

什么是Hive:

Hive是基于Hadoop之上的数据旅馆,数据存放在HDFS上,它同样能够经过ETL来扩充多少的抽取、转换和加载。同一时间Hive能够团结开荒Mapreduce程序来完毕本身无法提供的多少管理操作。Hive自身正是二个SQL的剖判引擎,他将SQL 语句转成Mapreduce职务在hadoop之上试行。

怎么是数据酒店:

数据宾馆是二个面向主题的,集成的,不可更新的,任何时候间不扭转的数量集合,它用来协理企业或集体的决策解析管理。

本着数据仓库的概念的分解:首先数据饭馆中的数据是面向核心的,也正是这几个数据的皆感到了描述同豆蔻梢头类作业,同期它的数目首要用来查询操作,不会对数据仓库中的数据开展删减和换代操作。

OLTP: 联机事务管理(面向的是专门的学问,要求实时的换代操作,银行转变)
OLAP: 联机分析处理(面向历史数据,进行数据的分析与开采,主要面向查询,不会做立异和插入数据,推荐系统)

注意:

在搭建数据货仓的历程最常用的二种模型正是:长方形模型和鹅毛大暑模型,雪花模型是在纺锤形模型上提越过来的。什么是正方形模型,譬喻三个商品的推介系统,主题应该是货色,但是围绕商品的有客商消息、商家新闻、打折音信等居多消息,这样就重组了二个正方形模型。可是客商信息中也设有客商的家中的音讯、地址音讯等。那样再涉及的话正是二个雪片模型了。


图片 1

其次某些

Hive的系统布局:

Hive将元数据存款和储蓄在数据库中(metastore),这一个数据库援助mysql、derby等数据库中。Hive私下认可是积累在derby数据库中。
Hive的元数占领怎样? 满含表的名字、表的列和分区及其特性,表的属性包含是不是为外界表等,表的多少所在目录等。
第风姿洒脱Hive是依附Hadoop的,所以hive的数码会接收HDFS实行封存,同有时间hive的查询操作也是转载成hadoop的MapReduce操作,所以在hive中会存在二个Hive Driver:包蕴编写翻译器、剖析器和优化器。
在Hive的驱动早先有访问接口、jdbc以致WebConsole等措施开展操作。当然hive的元新闻是贮存在关系型数据库中的。
HQL的实行进度:
解释器、编写翻译器、优化器实现HQL查询语句从词法深入分析、语法分析、编写翻译、优化以至询存候插的转移。生成的查询安排存款和储蓄在HDFS中,并在紧接着的Mapreduce调用执行。


       Hive是基于 Hadoop 的叁个【数据酒馆工具】,能够将结构化的数据文件映射为一张数据库表,并提供轻松的 sql 查询功用,能够将 sql 语句转变为 MapReduce 任务打开运作。使用SQL来神速完结轻便的MapReduce 计算,不必支付专门的MapReduce 应用,学习成本低,拾分顺应数据饭馆的计算深入分析。

其三局地

Hive的安装:

Hive的官方网站地址: hive.apache.org apache 的历史工程发表页面在: archive.apache.org,在这里个页面下得以找到hive工程。这里运用的是0.13版本。

Hive的设置在此以前需求先将hadoop安装好,hive有二种安装方式:嵌入情势、本地形式、远程方式。

嵌入形式:Hive将元音信囤积在Hive自带的Derby数据库中。但是这种操作办法存在有的欠缺:

  1. 只允许创制三个老是,也便是只同意三个客户操作hive 2. 多用来德姆o

在安装hive从前须求先安装hadoop,然后把hive的滑坡包解压,在bin目录下推行./hive走入hive的启航脚本,这种方法正是使用的嵌入式形式运行hive,会在当前目录下生成四个metastore_db的目录,那一个便是元新闻目录。

本土情势:Hive将元消息存款和储蓄在mysql数据库中,mysql数据库与hive运维在平等台物理机上。这种办法得以允许八个客商操作hive,可以用来支付和测验。

长间隔形式:(推荐应用这种方法)hive将元消息囤积在mysql数据库中,mysql数据库与hive运维在不一样的物理机上。

元新闻囤积在中远间距的mysql中。步向远程mysql中,mysql -u … -p … , 步入后使用create database hive创制贰个hive数据库来保存元数据。
在hive解压后,把mysql的驱动jar包上传到hive的lib目录中。那样hive技能操作mysql数据库。然后供给改造hive的布署文件。在conf中创立一个hive-site.xml文件,文件的剧情如下:

<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://ip:3306/hive</value>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>root</value>
    </property>
</configuration>

当配置文件设置完后从此,就足以运转hive了。


    【数据堆栈】斯洛伐克(Slovak)语名为Data Warehouse,可简写为 DW 或 DWH。数据仓库,是为同盟社具备等级的决策制定进度,提供全体项目数据支撑的攻略集结。它是单个数据存款和储蓄,出于解析性报告和决策支持目标而成立。为要求专门的工作智能的信用合作社,提供辅导业务流程立异、监视时间、费用、质量以致调控。一句话总结:  数据仓库是用来做 查询剖判的数据库, 基本不用来做插入,修改,删除操作。

第四部分

Hive的管理

行使hive的台本间接步向hive,或许 hive –service cli

cli常用的授命:

  1. 清屏:ctrl + l 或者 !clear;
  2. 翻开数据仓库中的表: show tables;
  3. 查阅数据仓库中的函数:show functions;
  4. 查看表结构: desc 表名;
  5. 查阅hdfs上的文书列表: dfs -ls /user 查看hadoop上/user上的文书
  6. 执行linux命令: !命令
  7. 执行HQL语句:select * from test;当试行那一个讲话的时候是不会开启二个MapReduce职务的,因为那些是获取全部的数据,获取全体的数量只要求把具备的数量读抽取来就可以了,并不供给运营一个职分。不过在施行select name from test;查询某一个字段的音讯的时候就需要运转二个MapReduce职责了。
  8. 能够实践三个sql脚本:source /root/test.sql 那几个讲话正是开发银行三个试行sql脚本。这种办法正是和mysql实行外界的信息意气风发致。
  9. hive -S 步向hive运维任务不会爆发调节和测验音讯,直接产生MapReduce的结果。
  10. hive -e 奉行sql语句。hive -e ‘show tables’;那样的实践就直接在linux的命令行操作就行,并不供给步向hive的交互式中实施。

Web分界面方式:

起步方式: #hive –service hwi & 在0.13.0中并不曾富含web管理的war包,须求自身编写翻译。

下载hive源码包,何况解压源码包,然后步入源码路线下的hwi目录,使用:jar cvfM0 hive-hwi-0.13.0.war -C web/ . 那样就能够打成一个war包,把这几个war包拷贝到hive的lib目录下,同不平时候必要修改hive-site.xml 配置文件,那几个修改能够在wiki上看出。

<property>
  <name>hive.hwi.listen.host</name>
  <value>0.0.0.0</value>
  <description>This is the host address the Hive Web Interface will listen on</description>
</property>

<property>
  <name>hive.hwi.listen.port</name>
  <value>9999</value>
  <description>This is the port the Hive Web Interface will listen on</description>
</property>

<property>
  <name>hive.hwi.war.file</name>
  <value>lib/hive-hwi-0.13.0.war</value>
  <description>This is the WAR file with the jsp content for Hive Web Interface</description>
</property>

其大器晚成就足以应用hive –service hwi运行web服务了,不过在拜见那个web应用的时候,浏览器还是报出了500的错误。这么些主题素材必要拷贝jdk的tools.jar 拷贝到hive的lib目录下。

本条时候就足以张开这些web界面了。

hive的中远间距服务

运行hive的长途服务的通令如下: hive –service hiveserver & 假如要动用jdbc连接hive实行操作,今年就必要开启hive的长间距服务。


 1、数据管理分类

第五部分

Hive的数据类型

  • 基本数据类型:
    tinyint/smallint/int/bigint 整数类型
    float/double 浮点类型
    boolean 布尔等级次序
    string/varchar/char 字符串类型

  • 复杂数据类型:
    array:数组类型,由后生可畏多元同样的数据类型的成分构成
    map:集结类型,包涵key->value键值对,能够经过key来访谈成分。
    struct:结构类型,能够分包不一致数据类型的要素,那几个要素得以通 过“点语法”的诀要来获取所须求的因素。

create table student (
age int,
name string,
grade array<float>);

插入的时候就是: {1, wangmin, [10,20,30]};

create table student1 (
sid int,
sname string,
grade map<string, float>);

插入数据的时候: {1,wangmin,<'大学语文', 85>}

create table studnet3(
sid int,
sname string,
grades array<map<string, float>>);

插入数据的时候:{1, wangmin, [<'大学语文‘, 12>,<'大学英语’,23>]}

create table student4(
sid int,
info struct<nname:string, age:int, sex:string>);

插入数据的时候:{1, {'wangmin', 23, ‘男’}}
  • 岁月档案的次序:
    Date: 日期(年月日)
    Timestamp: 是unix的一个光阴偏移量
    select unix_timestamp(); 查看系统的时刻偏移量

(1)联机事务管理OLTP(on-linetransaction processing)  

第六部分

Hive的数额存款和储蓄

依附HDFS,未有特意的数据存款和储蓄格式
Hive的数据模型:

表可以分成以下两种:

  • Table 内部表
  • Partition 分区表
  • External Table 外部表
  • Bucket Table 桶表
create table t1
(tid int, tname string, age int);

create table t2
(tid int, tname string age int);
localtion '/mytable/hive/t2';

create table t3
(tid int, tname string, age int)
row format delimited fields terminated by ',';

create table t4
as
select * from sample_date;

create table t5
row format delimited fields terminated by ','
as
select * from sample_data;

分区表:

create table partition_table
(sid int, sname string)
partitioned by (gender string)
row format delimited fields terminated by ',';

创立那张表的时候就是以gender进行分区 分区表能够加速查询功能

  OLTP是观念的关系型数据库的严重性使用,首假如中央的、平时的事务管理,举例银行交易。OLTP系统重申数据库内部存款和储蓄器效能,重申内部存款和储蓄器各个目的的命令率,重申绑定变量,强调并发操作;

 

(2)联机剖析管理P OLAP(On-Line AnalyticalProcessing)

  OLAP是数据货仓系统的重大接收,帮衬复杂的分析操作,侧重决策扶植,并且提供直观易懂的查询结果。OLAP系统则强调数据深入分析,重申SQL实行市肆,强调磁盘I/O,强调分区等。

 

 

---类比表

图片 2

 

 

2.hive架构原理

客商接口首要有多个:CLI命令行,Client 和 WUI。

图片 3

(1)最常用的是 CLI 命令行,Cli运维的时候,会同期开动三个Hive别本; Client是Hive的客商端,客商连接至Hive Server。

在起步Client方式的时候,要求提议Hive Server所在节点,而且在该节点运行Hive Server。 WUI是通过浏览器访谈Hive。

(2)Hive将 元数据存款和储蓄在数据库中,如mysql、 derby 。 Hive中的元数据蕴含表的名字,表的列和分区及其性质,表的属性(是或不是为外

 部表等),表的数码所在目录等。

(3)解释器、编写翻译器、优化器完结HQL查询语句从词法深入分析、语法分析、编写翻译、优化以致询问候插的变型。生成的询问安排存款和储蓄在HDFS中,

并在随之有MapReduce调用实施。

(4)Hive的数量存款和储蓄在HDFS中,大多数的询问、总括由MapReduce完毕(包涵*的查询,比如select * from tbl不会生成MapRedcue职务)

 

 二、hive搭建及三种格局

 1.hive的搭建

 

 1.1、安装 Hive安装境况甚至前提表达:首先,Hive 是依据于 hadoop 系统的,由此在运维Hive 在此之前必要确定保障已经搭建好 hadoop 集群情状。

---安装贰个关系型数据 mysql

图片 4

 

1.2、配置遭遇变量:(类似于下边那样,跟在此之前hadoop54%.x 配置同样)

– HADOOP_HOME=/**/*
– HIVE_HOME=$*/**/*

1.3、替换和丰盛相关 jar 包--修改 HADOOP_HOMEshare/hadoop/yarn/lib 目录下的 jline-*.jar将其替换到 肠痈E_HOMElib 下的 jline-2.12.jar。

--将 hive 连接 mysql 的 jar 包:mysql-connector-java-5.1.32-bin.jar拷贝到 hive 解压目录的 lib 目录下

1.4、修改配置文件(选拔3 种形式里哪意气风发种)见两种安装情势
1.5、启动 hive:bin/hive

 

2.三种形式: (内嵌情势/本地模式/远程形式)

 2.1 内嵌形式

这种装置形式的元数据是内嵌在Derby数据库中的,只可以同意多少个对话连接,数据会寄放到HDFS上。

这种方法是最简便的蕴藏方式,只须要hive-site.xml做如下配置便可(注:使用 derby 存储格局时,运营 hive 会在当

前目录生成二个derby 文件和多少个 metastore_db)

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=metastore_db;creat
e=true</value> </property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.apache.derby.jdbc.EmbeddedDriver</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
</configuration>

 

 2.2 本地形式

 这种设置情势和嵌入式的界别在于,不再接纳内嵌的 Derby 作为元数据的存款和储蓄介质,而是采用任何数据库比方 MySQL 来积存元数据且是贰个多客商的情势

运维多个客商client 连接到一个数据库中。这种方法平时作为集团内部同不平时候利用 Hive。这里有三个前提,每个顾客必得求有对 MySQL 的拜访职分,即每

三个顾客端使用者须求精晓MySQL 的顾客名和密码才行。这种存款和储蓄格局索要在地面运营二个 mysql 服务器,并作如下配置(上边二种采用 mysql 的艺术,

急需将 mysql 的 jar 包拷贝到$梅毒E_HOME/lib 目录下)。

注: mysql-connector-java-5.1.32-bin.jar拷贝到 hive 解压目录的 lib 目录下

 (jar包 链接: 密码:4k6w)

 vim hive-site-xml   配置如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
    <!--数据仓库的位置,默认是/user/hive/warehouse-->
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_rlocal/warehouse</value>
</property>
<property>
    <!--控制hive是否连接一个远程metastore服务器还是开启一个本地客户端jvm-->
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
    <!--JDBC连接字符串,默认jdbc:derby:;databaseName=metastore_db;create=true-->
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node03/hive_remote?createDatabaseIfNotExist=t
rue</value>
</property>
<property>
    <!--JDBC的driver,默认org.apache.derby.jdbc.EmbeddedDriver-->
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
    <!--username,默认APP-->
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>

 

 

启动:

①张开集群(hive需求依赖集群);  service  iptables stop     zkServer.sh start   start-all.sh

②展开mysql服务器:先在mysql中链接到顾客端,本机成立的数据库名称为hive

图片 5

 

 再到顾客端:service  mysqld start    -----> mysql  -u root   -p   (客商名/密码)

 图片 6

 

 ③启动hive:  执行hive

图片 7

 

小规模试制牛刀:

创建一个数据库:zhangsan

hive> show databases;
OK
default
wuxiong
Time taken: 0.051 seconds, Fetched: 2 row(s)
hive> create  database  zhangsan;
OK
Time taken: 0.113 seconds
hive> show databases;
OK
default
wuxiong
zhangsan
Time taken: 0.046 seconds, Fetched: 3 row(s)
hive> 

 

是还是不是见效:①翻看集群对应的目录 :    hive-site-xml配置文件中已定义了目录的贮存地点:/user/hive/warehouse    ------>展开node02节点(active)

图片 8

②本地mysql数据库hive中查看:hive_remote  ----->dbs----->会发现:

 图片 9

 

 ok,数据库创制完结!存放地点也能找到!

接上述'zhangsan'数据库继续开创一张表:

 use   zhangsan;

 图片 10

查找:①mysql--->hive----->hive_remote------>TBLS

图片 11

 ②集群中:

图片 12

 2.3 远程方式

       remote:这种存储形式必要在远端服务器运转叁个 mysql 服务器,而且须要在 Hive 服务器运行 meta服务。本机配置了

八个节点:node01、node02、node03,node017月安插了mysql,以后以node02为服务端,node03为客商端依次配置系统文件

hive-site.xml 

 node02配置如下:

 

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://node01:3306/hive2?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>
</configuration>

 

 

node03配置如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
    <property>
        <name>hive.metastore.local</name>
        <value>false</value>
        </property>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://node01:9083</value>
    </property>
</configuration>

 

启动:

node02 (服务端):  hive --server  metastore

node03(客户端):启动 hive

 

本文由澳门至尊网站发布于搜索引擎,转载请注明出处:hive数据仓库,Hive学习笔记1

关键词: