3K字详解Hive,让你彻底弄明白

1 Hive基本概念Hive是一个构建在Hadoop上的数据仓库框架 。最初,Hive是由Facebook开发,后来移交由Apache软件基金会开发,并作为一个Apache开源项目 。
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能 。
其本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据的存储,说白了hive可以理解为一个将SQL转换为MapReduce的任务的工具,甚至更进一步可以说hive就是一个MapReduce的客户端 。

3K字详解Hive,让你彻底弄明白

文章插图
 
2 Hive的特点与架构图
  • Hive最大的特点是通过类SQL来分析大数据,而避免了写MapReduce程序来分析数据,这样使得分析数据更容易 。
  • 数据是存储在HDFS上的,Hive本身并不提供数据的存储功能,它可以使已经存储的数据结构化 。
  • Hive是将数据映射成数据库和一张张的表,库和表的元数据信息一般存在关系型数据库上(比如MySQL) 。
  • 数据存储方面:它能够存储很大的数据集,可以直接访问存储在Apache HDFS或其他数据存储系统(如Apache HBase)中的文件 。
  • 数据处理方面:因为Hive语句最终会生成MapReduce任务去计算,所以不适用于实时计算的场景,它适用于离线分析 。
  • Hive除了支持MapReduce计算引擎,还支持Spark和Tez这两种分布式计算引擎;
  • 数据的存储格式有多种,比如数据源是二进制格式,普通文本格式等等;
  • hive具有sql数据库的外表,但应用场景完全不同,hive只适合用来做批量数据统计分析

3K字详解Hive,让你彻底弄明白

文章插图
 
3Hive的安装方式hive的安装一共有三种方式:内嵌模式、本地模式、远程模式
元数据服务(metastore)作用是:客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据 。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可 。
  (1) 内嵌模式
  内嵌模式使用的是内嵌的Derby数据库来存储元数据,也不需要额外起Metastore服务 。数据库和Metastore服务都嵌入在主Hive Server进程中 。这个是默认的,配置简单,但是一次只能一个客户端连接,适用于用来实验,不适用于生产环境 。解压hive安装包 bin/hive 启动即可使用
  缺点:不同路径启动hive,每一个hive拥有一套自己的元数据,无法共享 。
3K字详解Hive,让你彻底弄明白

文章插图
 
  (2)本地模式
  本地模式采用外部数据库来存储元数据,目前支持的数据库有:MySQL、Postgres、Oracle、MS SQL Server.在这里我们使用MySQL 。本地模式不需要单独起metastore服务,用的是跟hive在同一个进程里的metastore服务 。也就是说当你启动一个hive 服务,里面默认会帮我们启动一个metastore服务 。hive根据hive.metastore.uris 参数值来判断,如果为空,则为本地模式 。
  缺点:每启动一次hive服务,都内置启动了一个metastore 。
3K字详解Hive,让你彻底弄明白

文章插图
 
  (3)远程模式
  远程模式下,需要单独起metastore服务,然后每个客户端都在配置文件里配置连接到该metastore服务 。远程模式的metastore服务和hive运行在不同的进程里 。在生产环境中,建议用远程模式来配置Hive Metastore 。在这种情况下,其他依赖hive的软件都可以通过Metastore访问hive 。
  远程模式下需要配置hive.metastore.uris 参数来指定metastore服务运行的机器ip和端口,并且需要单独手动启动metastore服务 。hiveserver2是Hive启动了一个server,客户端可以使用JDBC协议,通过IP+ Port的方式对其进行访问,达到并发访问的目的 。
3K字详解Hive,让你彻底弄明白

文章插图
 
4 Hive的安装之前文章介绍过按照Hadoop,继Hadoop后按照Hive 。在此处选择第三台机器node3作为我们hive的安装机器,安装方式使用远程方式 。
准备工作:① 必须按照有Hadoop(可以是单节点也可以是高可用)和MySQL数据库 。可参照我其他两篇文章 。
     ② 在Node3主机上创建目录(已创建有可以忽略):


推荐阅读