hadoop--hive数据仓库

一、hive概述

Hive是基于 Hadoop 的一个【数据仓库工具】,可以将结构化的数据文件映射为一张数据库表,并提供简单的 sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进行运行。使用SQL来快速实现简单的MapReduce 统计,不必开发专门的MapReduce 应用,学习成本低,十分适合数据仓库的统计分析。

【数据仓库】英文名称为 Data Warehouse,可简写为 DW 或 DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。一句话概括:  数据仓库是用来做 查询分析的数据库, 基本不用来做插入,修改,删除操作。

 1、数据处理分类

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

  OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLTP系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作;

(2)联机分析处理P OLAP(On-Line AnalyticalProcessing)

  OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。OLAP系统则强调数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等。

---类比表

 

2.hive架构原理

用户接口主要有三个:CLI命令行,Client 和 WUI。

(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

1.2、配置环境变量:(类似于下面这样,跟之前hadoop1 /2.x 配置一样)

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

1.3、替换和添加相关 jar 包--修改 HADOOP_HOME\share/hadoop/yarn/lib 目录下的 jline-*.jar将其替换成 HIVE_HOME\lib 下的 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 包拷贝到$HIVE_HOME/lib 目录下)。

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

jar包 链接:https://pan.baidu.com/s/17LzbGrLpLAcs-guXz2ttLg 密码: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=true</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

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

③启动hive:  执行hive

小试牛刀:

创建一个数据库: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)

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

ok,数据库创建完毕!存放位置也能找到!

接上述‘zhangsan‘数据库继续创建一张表:

use   zhangsan;

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

②集群中:

 2.3 远程模式

remote:这种存储方式需要在远端服务器运行一个 mysql 服务器,并且需要在 Hive 服务器启动 meta服务。本机配置了

三个节点:node01、node02、node03,node01上已配置了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

原文地址:https://www.cnblogs.com/luren-hometown/p/9405239.html

时间: 2024-10-23 06:27:43

hadoop--hive数据仓库的相关文章

Hadoop系列之Hive(数据仓库)安装配置

Hadoop系列之Hive(数据仓库)安装配置1.在NameNode安装  cd /root/soft  tar zxvf apache-hive-0.13.1-bin.tar.gz   mv apache-hive-0.13.1-bin /usr/local/hadoop/hive2. 配置环境变量(每个节点都需要增加) 打开/etc/profile #添加以下内容: export HIVE_HOME=/usr/local/hadoop/hive export PATH=$HIVE_HOME/

Hadoop Hive基础sql语法

Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行,通过自己的SQL 去查询分析需要的内容,这套SQL 简称Hive SQL,使不熟悉mapreduce 的用户很方便的利用SQL 语言查询,汇总,分析数据.而mapreduce开发人员可以把己写的mapper 和reducer 作为插件来支持

Hadoop Hive sql 语法详解

Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行,通过自己的SQL 去查询分析需要的内容,这套SQL 简称Hive SQL,使不熟悉mapreduce 的用户很方便的利用SQL 语言查询,汇总,分析数据.而mapreduce开发人员可以把己写的mapper 和reducer 作为插件来支持

Hadoop Hive sql语法详解

Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行,通过自己的SQL 去查询分析需要的内容,这套SQL 简称Hive SQL,使不熟悉mapreduce 的用户很方便的利用SQL 语言查询,汇总,分析数据.而mapreduce开发人员可以把己写的mapper 和reducer 作为插件来支持

Hadoop Hive与Hbase关系 整合

用hbase做数据库,但因为hbase没有类sql查询方式,所以操作和计算数据很不方便,于是整合hive,让hive支撑在hbase数据库层面 的 hql查询.hive也即 做数据仓库 1. 基于Hadoop+Hive架构对海量数据进行查询:http://blog.csdn.net/kunshan_shenbin/article/details/7105319 2. HBase 0.90.5 + Hadoop 1.0.0 集成:http://blog.csdn.net/kunshan_shenb

hadoop(1):centos 安装 hadoop &amp; hive

1,关于hive Hive是一个基于Hadoop的数据仓库平台.通过hive,我们可以方便地进行ETL的工作.hive定义了一个类似于SQL的查询语言:HQL,能 够将用户编写的QL转化为相应的Mapreduce程序基于Hadoop执行. Hive是Facebook 2008年8月刚开源的一个数据仓库框架,其系统目标与 Pig 有相似之处,但它有一些Pig目前还不支持的机制,比如:更丰富的类型系统.更类似SQL的查询语言.Table/Partition元数据的持久化等. 本文的原文连接是: ht

Hadoop Hive与Hbase整合+thrift

1.  简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析. Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive_hbase-handler.jar工具类, 大致意思如图所示

Hive数据仓库工具安装

一.Hive介绍 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单SQL查询功能,SQL语句转换为MapReduce任务进行运行. 优点是可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析.缺点是Hive不适合在大规模数据集上实现低延迟快速的查询. 二.安装Hive 环境:Docker(17.04.0-ce).镜像Ubuntu(16.04.3).JDK(1.8.0_144).

hadoop+hive+spark搭建(二)

上传hive软件包到任意节点 一.安装hive软件 解压缩hive软件包到/usr/local/hadoop/目录下 重命名hive文件夹 在/etc/profile文件中添加环境变量 export HIVE_HOME=/usr/local/hadoop/hive export PATH=$HIVE_HOME/bin:$PATH 运行命令source /etc/profile  使用mysql作为数据库时需要安装mysql 在mysql中创建hive用户,数据库等 create user 'hi

Hive创建表格报【Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException】引发的血案

在成功启动Hive之后感慨这次终于没有出现Bug了,满怀信心地打了长长的创建表格的命令,结果现实再一次给了我一棒,报了以下的错误Error, return code 1 from org.apache.Hadoop.hive.ql.exec.DDLTask. MetaException,看了一下错误之后,先是楞了一下,接着我就发出感慨,自从踏上编程这条不归路之后,就没有一天不是在找Bug的路上就是在处理Bug,给自己贴了个标签:找Bug就跟吃饭一样的男人.抒发心中的感慨之后,该干活还是的干活.