大数据hadoop生态体系之Hive数据仓库(14)

Hive简介:     

    Hive 是基于 Hadoop 构建的一套数据仓库分析系统,它提供了丰富的 SQL 查询方式来分析存储在 Hadoop 分布式文件系统中的数据, 可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行,通过自己的 SQL 去 查询分析需要的内容,这套 SQL 简称 Hive SQL。其底层实现是:将SQL语句转换为MapRecuce程序任务执行对应的查询功能(Yarn集群启动)。 

为什么要使用hive?      

    用户只需要在Hive中建立表和结构化数据之间的映射,就可以是实现各类复杂的数据查询统计功能,而这些功能通过编写MapReduce实现起来比较复杂,编写效率也不高。况且编写MR程序门槛也高,得有一定的编程功底。

    实现同样的查询统计功能,Hive只要简单的SQL语句(通过Hive框架转换为对应的MapReduce程序,并对其优化,最后提交Hadoop运行。),而编写MapReduce程序往往需要很长时间才能实现,若经验不足,编写的程序运行效率往往不高。

Hive的使用场景:

    Hive 的查询任务往往转换为MR程序提交Hadoop集群运行,那就不能指望快速响应,所以不适合那些需要低延迟的应用:联机事务处理(OLTP),web应用中查询模块的后台实现(往往要求秒级响应)。

    Hive往往做为数据仓库管理的工具,数据仓库中的数据往往很少进行更改,或者不更改,可以用来做联机分析处理(OLAP); 

    Hive往往用来处理GB,TB,PB级别的数据离线分析查询,所以查询结果在20分钟左右响应结果是正常的。

Hive 体系结构如下:

  客户端接口:

      有基于命令行的:CLI (单用户模式,多用户模式);

      通过Hive提供的 JAVA JDBC/ODBC API通过 Thrift提供的服务(Thrift Server)提交查询任务;

      通过HIVE提供的web项目管理监控HIVE(下载对应程序拷贝到HIVE里):Web UI

  元数据库

      用来管理Hive中数据库,表及对应的HDFS映射目录等等信息;(往往用MySQL作为元数据信息管理)

   Driver 

        是Hive客户端和Hadoop集群之间工作的桥梁纽带。Hive客户端的请求通过Driver组件转换为最终的提交Hadoop集群运行的MR任务。

       包括:解析器,编译器,MR任务优化器,执行器(辑执行计划转换成物理执行计划,如:生成MR,Spark任务等)

Hive架构:

Hive的体系结构可以分为以下几部分:

1、用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive Server。在启动 Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。 WUI是通过浏览器访问Hive。

2、元数据:Metastore

元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;

默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore。Hive将元数据存储在数据库中,如mysql、derby。

3、驱动器:Driver

(1)解析器(SQL Parser):将SQL字符转换成抽象语法树AST,这一步一般使用都是第三方工具库完成,比如antlr,对AST进行语法分析,比如表是否存在,字段是否存在,SQL语句是否有误

(2)编译器(Physical Plan):将AST编译生成逻辑执行计划

(3)优化器(Query Optimizer):对逻辑执行计划进行优化

(4)执行器(Execution):把逻辑执行计划转换成可以运行的物理计划,对于Hive来说,就是MR/Spark

4、Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成(包含*的查询,比如select * from tbl不会生成MapRedcue任务)。

执行流程:

MapReduce 开发人员可以把自己写的 Mapper 和 Reducer 作为插件支持 Hive 做更复杂的数据分析。 它与关系型数据库的 SQL 略有不同,但支持了绝大多数的语句(如 DDL、DML)以及常见的聚合函数、连接查询、条件查询等操作。

Hive 不适合用于联机(online) 事务处理,也不提供实时查询功能。它最适合应用在基于大量不可变数据的批处理作业。Hive 的特点是可 伸缩(在Hadoop 的集群上动态的添加设备),可扩展、容错、输入格式的松散耦合。Hive 的入口是DRIVER ,执行的 SQL 语句首先提交到 DRIVER 驱动,然后调用 COMPILER 解释驱动, 最终解释成 MapReduce 任务执行,最后将结果返回。

hive安装配置:

1.拷贝下载包到Hadoop集群中的任意一台服务器上进行解压。

    如:tar -zxvf apache-hive-2.1.1-bin.tar.gz

           mv apache-hive-2.1.1-bin hive

2.配置Hive,创建修改hive-site.xml文件

    cd  /opt/mysoft/hive/conf

    mv hive-env.sh.template   hive-env.sh    

    vi   hive-env.sh  //修改启动配置项:

   //若当前机器上已经配置了JAVA_HOME环境变量,则可以省略(一般都配置过了)

   export JAVA_HOME=/opt/mysoft/jdk

   export HADOOP_HOME=/opt/mysoft/hadoop

   export HIVE_CONF_DIR=/opt/mysoft/hive/conf

   export HIVE_AUX_JARS_PATH=/opt/mysoft/hive/bin

 3.进入到hive/conf目录下,创建hive-site.xml配置文件(连接mysql数据,前提要先安装mysql)

configuration>

   <property>

    <name> javax.jdo.option.ConnectionURL</name>

    <value>jdbc:mysql://localhost:3306/myHive?createDatabaseIfNotExist=true</value>

  </property>

 <property>

    <name>javax.jdo.option.ConnectionDriverName</name>

    <value>com.mysql.jdbc.Driver</value>

    <description>Driver class name for a JDBC metastore</description>

  </property>

 <property>

    <name>javax.jdo.option.ConnectionUserName</name>

    <value>root</value>

    <description>Username to use against metastore database</description>

  </property>

 <property>

    <name>javax.jdo.option.ConnectionPassword</name>

    <value>123456</value>

    <description>password to use against metastore database</description>

  </property>

 <property>

   <name>hive.metastore.schema.verification</name>

   <value>false</value>

</property>

</configuration>

4.把mysql驱动jar包(mysql-connector-java-5.1.41-bin.jar)放到hive/lib目录下

5.初始化Hive (Hive2以后要求先初始化) 

    .bin/schematool -initSchema -dbType mysql

6.启动Hive 

   ./bin/hive

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容

  • 说明:不少读者反馈,想使用开源组件搭建Hadoop平台,然后再部署Kylin,但是遇到各种问题。这里我为读者部署一...
    大诗兄_zl阅读 2,070评论 0 2
  • HIVE是一个基于Hadoop的数据仓库,适用于一些高延迟性的应用。如果对延迟性要求比较高,则可以选择Hbase。...
    夏无忧阳阅读 5,039评论 0 12
  • 2.1 Hive安装地址 1)Hive官网地址: http://hive.apache.org/ 2)文档查看地址...
    临时_01e2阅读 305评论 0 0
  • Hive是什么 我们知道传统数据存储都是存储在关系型数据库中,它们使用一种SQL(结构化查询语言)方言来查询数据库...
    零度沸腾_yjz阅读 1,111评论 0 7
  • 介绍 Hive是运行在Hadoop之上的数据仓库,将结构化的数据文件映射为一张数据库表,提供简单类SQL查询语言,...
    syncwt阅读 4,719评论 0 7