Hive学习笔记01

1. 数据仓库

  a. 概念

    数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持。不产生数据(不会新建数据),也不消费数据(只做分析),数据来源于外部,是一个仓库,不是工厂。

    b. 特征

  • 面向主题:需要先定义一个主题,比如分析计算机协会有100万人,现在需要分析所有男生的学习成绩,这时只需要拿到男生的学习成绩,而其他不相关的数据就不需要。
  • 集成性:数据仓库是不会产生数据的,数据全部是来自于外部的,这些数据全部是来自于外部的,比如我们的mysql数据库,日志,爬虫等。
  • 非易失性:全部都是发生过的数据(历史数据),不能进行更改的操作,一般都是大量的查询操作。
  • 时变性:随着时间的变化不断的更新和加载新数据到数据仓库。

    c. 数据库于数据仓库的区别

  • 数据库是面向事务的,数据仓库是面向
  • 数据库存储的业务数据,数据仓库是存储的是历史数据。
  • 数据库是为了捕获数据存储的,数据仓库是为了分析数据而存在的。
  • 数据仓库并不是大型的数据库,也不是为了取代数据库而出现的,数据仓库是在数据库大量存在的情况下,为了进一步挖掘数据资源,为了决策需要而产生的。

 d. 数据仓库架构

2. Hive

    Hive是基于hadoop的一个数据仓库工具,它可以将结构化文件映射成一张数据表,本质是将SQL转换为MapReduce程序。

 a. Hive架构

 b. metadata和metastore

  • metadata即元数据,包括Hive创建的db,table,表,字段等元信息。
  • metastore即元数据服务,客户端连接metastore再由metastore连接mysql,这样多个客户端只需要连接metastore,不需要密码就可以连接到mysql。

 c. 三种连接方式

  • 默认开启方式

       没有配置metaStore的时候,每当开启bin/hive或者;或者开启hiveServer2的时候,都会在内部启动一个metastore。

       嵌入式服务;资源比较浪费,如果开启多个窗口,就会存在多个metastore server。

  • local mataStore(本地)

       不再使用内嵌的Derby作为元数据的存储介质,而是使用其他数据库比如MySQL来存储元数据。hive服务和metastore服务运行在同一个进程中,mysql是单独的进程,可以同一台机器,也可以在远程机器上。

        这种方式是一个多用户的模式,运行多个用户client连接到一个数据库中。这种方式一般作为公司内部同时使用Hive。每一个用户必须要有对MySQL的访问权利,即每一个客户端使用者需要知道MySQL的用户名和密码才行。

        开启metastore服务就只需要开启一次就好,避免资源浪费!

  • Remote Metastore(远程)

    Hive服务和metastore在不同的进程内,可能是不同的机器,该模式需要将hive.metastore.local设置为false,将hive.metastore.uris设置为metastore服务器URL。

  远程元存储需要单独起metastore服务,然后每个客户端都在配置文件里配置连接到该metastore服务。将metadata作为一个单独的服务进行启动。各种客户端通过beeline来连接,连接之前无需知道数据库的密码。

  仅连接远程的mysql并不能称之为“远程模式”,是否远程指的是metastore和hive服务是否在同一进程内。

  开启metastore服务就只需要开启一次就好,避免资源浪费!


原文地址:https://www.cnblogs.com/qidi/p/11574229.html