简介

Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件 映射为一张数据库表,并提供类 SQL 查询功能。  

本质是将 SQL 转换为 MapReduce 程序。

  Hive组件

    用户接口:包括 CLI、JDBC/ODBC、WebGUI。其中,CLI(command lineinterface)为 shell 命令行;JDBC/ODBC 是 Hive 的 JAVA 实现,与传统数据库JDBC 类似;WebGUI 是通过浏览器访问 Hive。

    元数据存储:通常是存储在关系数据库如 mysql/derby 中。Hive 将元数据存储在数据库中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

    解释器、编译器、优化器、执行器:完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。

  Hive 与 Hadoop  的关系

    Hive  利用HDFS 存储数据,利用 MapReduce  查询分析数据

  Hive 与传统数据库 对比

    hive 用于海量数据的离线数据分析。

    hive 具有 sql 数据库的外表,但应用场景完全不同,hive 只适合用来做批量数据统计分析。

      1、具备数据存储的能力,使用Hadoop hdfs来进行数据的存储

​       2、具备ETL的能力,使用Hadoop MapReduce进行数据的ETL (提供sql转化成MapReduce的能力)

  Hive数据模型

    Hive 中所有的数据都存储在 HDFS 中,没有专门的数据存储格式,在创建表时指定数据中的分隔符,Hive 就可以映射成功,解析数据。

    Hive 中包含以下数据模型:

      db :在 hdfs 中表现为 hive.metastore.warehouse.dir 目录下一个文件夹

      table :在 hdfs 中表现所属 db 目录下一个文件夹

      external table :数据存放位置可以在 HDFS 任意指定路径

      partition :在 hdfs 中表现为 table 目录下的子目录

      bucket :在 hdfs 中表现为同一个表目录下根据 hash 散列之后的多个文件

  一些专业术语

增量(上次导出之后的新数据):i_s.Peking.orders_20130711_000.lzo
加密:i_s.peking.orders_20130711_000.md5
表结构:i_s.peking.orders_20130711_000.xml

全量(表中所有的数据):a_s.Peking.orders_20130711_000.lzo
加密:a_s.peking.orders_20130711_000.md5
表结构:a_s.peking.orders_20130711_000.xml

PV:页面访问量,即PageView,用户每次对网站的访问均被记录,用户对同一页面的多次访问,访问量累计。
UV:独立访问用户数:即UniqueVisitor,访问网站的一台电脑客户端为一个访客。一天内相同的客户端只被计算一次。

数据仓库:Data Warehouse,简写为 DW 或 DWH
数据库:database,简写DB

联机事务处理 OLTP(On-Line Transaction Processing) --> 关系型数据库RDBMS
联机分析处理 OLAP(On-Line Analytical Processing) --> 数据仓库

ETL(抽取 Extra, 转化 Transfer, 装载 Load)

源数据层(ODS)
数据仓库层(DW)
数据应用层(DA 或 APP)

元数据(Meta Date)


Hive MySQL版本的安装

    内置derby版缺点:不同路径启动 hive,每一个 hive 拥有一套自己的元数据,无法共享

  •   安装hive

    上传hive的安装包并解压

    切换到hive安装目录的配置文件路径中修改配置信息

cd /export/servers/hive/conf
vi hive-env.sh
export  HADOOP_HOME=/export/servers/hadoop-2.7.4
vi hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</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>hadoop</value>
<description>password to use against metastore database</description>
</property>
</configuration>
  •   安装mysql

yum install -y mysql mysql-server mysql-devel 
#启动mysql服务
/etc/init.d/mysqld start
mysql
USE mysql;
#设置用户及密码
UPDATE user SET Password=PASSWORD('hadoop') WHERE user='root';
#刷新权限
FLUSH PRIVILEGES;
#设置权限
GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'hadoop' WITH GRANT OPTION;
#设置开机启动mysql服务
chkconfig mysqld on

  注意把mysql数据库驱动mysql-connector-java-5.1.32.jar放置在hive lib/目录中


启动hive前,先启动HDFS及YARN集群

Hive几种使用方式:

  1.Hive交互shell bin/hive

  2.Hive JDBC服务(参考java jdbc连接mysql)

  3.hive启动为一个服务器,来对外提供服务
    bin/hiveserver2
    nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver.err &

    启动成功后,可以在别的节点上用beeline去连接
    bin/beeline -u jdbc:hive2://mini1:10000 -n root

  或者
    bin/beeline
    ! connect jdbc:hive2://mini1:10000

  4.Hive命令
    hive -e ‘sql’
    bin/hive -e 'select * from t_test'

Hive的介绍及安装的更多相关文章

  1. Hive学习之一 《Hive的介绍和安装》

    一.什么是Hive Hive是建立在 Hadoop 上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储.查询和分析存储在 Hadoop 中的大规模数据 ...

  2. 吴超老师课程--Hive的介绍和安装

    1.Hive1.1在hadoop生态圈中属于数据仓库的角色.他能够管理hadoop中的数据,同时可以查询hadoop中的数据.  本质上讲,hive是一个SQL解析引擎.Hive可以把SQL查询转换为 ...

  3. 从零自学Hadoop(14):Hive介绍及安装

    阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 本系列已 ...

  4. hive学习笔记_hive的介绍与安装

    一.什么是Hive Hive是建立在 Hadoop 上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储.查询和分析存储在 Hadoop 中的大规模数据 ...

  5. Hive介绍及安装

    Hive介绍及安装 介绍: Hive是基于Hadoop的数据仓库解决方案.由于Hadoop本身在数据存储和计算方面有很好的可扩展性和高容错性,因此使用Hive构建的数据仓库也秉承了这些特性. 简单来说 ...

  6. Hive介绍和安装部署

        搭建环境 部署节点操作系统为CentOS,防火墙和SElinux禁用,创建了一个shiyanlou用户并在系统根目录下创建/app目录,用于存放 Hadoop等组件运行包.因为该目录用于安装h ...

  7. 从零自学Hadoop(19):HBase介绍及安装

    阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一篇, ...

  8. Hive的三种安装方式(内嵌模式,本地模式远程模式)

    一.安装模式介绍:     Hive官网上介绍了Hive的3种安装方式,分别对应不同的应用场景.     1.内嵌模式(元数据保村在内嵌的derby种,允许一个会话链接,尝试多个会话链接时会报错)   ...

  9. Hadoop入门进阶课程8--Hive介绍和安装部署

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

随机推荐

  1. pointer-events/H5页面在iphone6 plus的微信上出现闪退

    一.pointer-events 1.元素加上pointer-events:none后,在js中加点击事件不好使 原因:pointer-events:none关闭所有点击事件,包括js总的 解决:删掉 ...

  2. Android_Universal-Image-Load使用

    一,快速使用(确保ImageLoader只初始化一次,这样图片缓存会更加优秀.) 场景:为ImageView设置一张指定Uri的图片. 1,导包,配置联网,读写SD卡权限. 2,初始化: ImageL ...

  3. HUE配置文件hue.ini 的mapred_clusters模块详解(图文详解)(分HA集群和非HA集群)

    不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...

  4. neo4j 查询

    match (p: Node {name:"城关镇"}) return p p 代表的是一个变量,Node为插入neo4j时节点类型,name后面加节点的名称

  5. word黑底白字

    我们在使用word文档编辑文件时,有时候希望某段文字采用黑底白字,以区分其他段落的白底黑字从而达到强调的效果. 方法是: 1. 选中待处理的段落. 2. 点击“设计”选项卡. 3. 找到“设计”选下卡 ...

  6. JAVA 对象的行为 总结

    对象的行为 1. 断点调试 a:定位(设置断点)  b:启动调试  c:单步执行  观察变量(F5单步执行   F6单步跳过)d:修改2 static  静态   静态成员,为类的所有对象共享   在 ...

  7. 基于json-lib-2.2.2-jdk15.jar的JSON解析工具类大集合

    json解析之前的必备工作:导入json解析必须的六个包 资源链接:百度云:链接:https://pan.baidu.com/s/1dAEQQy 密码:1v1z 代码示例: package com.s ...

  8. Oracle11g密码过期处理方法

    首先 查询密码有效期:   SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIF ...

  9. WIN 10 初体验:期待越多失望越大

    我大多数时候使用 MacBook,不过 WIN 10(预览版)的推送还是让我忍不住升级玩玩——它是微软史上首款真正意义上的免费操作系统,正式版将与中国诸多互联网巨头联合提供升级工具分发这一体现了微软迎 ...

  10. [HTML5] Canvas绘制简单形状

    使用canvas来进行绘画,它像很多其他dom对象一样,有很多属性和方法,操作这些方法,实现绘画 获取canvas对象,调用document.getElementById()方法 调用canvas对象 ...