Hive

作者: 神呐_宽恕我把 | 来源:发表于2019-12-10 11:01 被阅读0次

    数据仓库的主要特征

    数据仓库是面向主题的(Subject-Oriented )、集成的(Integrated)、稳定的(Non-Volatile)和时变的(Time-Variant )数据集合,用以支持管理决策 。

    Hive和RDBMS(关系数据库Relational Database Management System)的对比

    数据仓库分层架构

    源数据层(ODS):此层数据无任何更改,直接沿用外围系统数据结构和数据,不对外开放;为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。

    数据仓库层(DW):也称为细节层,DW层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。

    数据应用层(DA或APP):前端应用直接读取的数据源;根据报表、专题分析需求而计算生成的数据。

    Hive组件

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

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

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

    Hive安装部署

    Metadata即元数据。元数据包含用Hive创建的database、table、表的字段等元信息。元数据存储在关系型数据库中。如hive内置的Derby、第三方如MySQL等。

    Metastore即元数据服务,作用是:客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可。

    metastore三种配置方式

    内嵌模式

    内嵌模式使用的是内嵌的Derby数据库来存储元数据,也不需要额外起Metastore服务。数据库和Metastore服务都嵌入在主Hive Server进程中。这个是默认的,配置简单,但是一次只能一个客户端连接,适用于用来实验,不适用于生产环境。

    解压hive安装包  bin/hive 启动即可使用

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

    本地模式

    本地模式采用外部数据库来存储元数据,目前支持的数据库有:MySQL、Postgres、Oracle、MS SQL Server.在这里我们使用MySQL。

    本地模式不需要单独起metastore服务,用的是跟hive在同一个进程里的metastore服务。也就是说当你启动一个hive服务,里面默认会帮我们启动一个metastore服务。

    hive根据hive.metastore.uris参数值来判断,如果为空则为本地模式

    缺点是:每启动一次hive服务,都内置启动了一个metastore。

    hive安装包conf/hive-site.xml文件中配置,如果没有自己创建该文件。

    <configuration>

    <property>

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

    <value>jdbc:mysql://node01:3306/hive?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>

    因为hive存储元数据已经使用了mysql,而连接操作mysql必须要用到的就是mysql的驱动,这里需要将mysql的驱动包添加到hive的lib目录下。(容易忘,重点)

    远程模式

    远程模式下,需要单独起metastore服务,然后每个客户端都在配置文件里配置连接到该metastore服务。远程模式的metastore服务和hive运行在不同的进程里。

    在生产环境中,建议用远程模式来配置Hive Metastore。

    在这种情况下,其他依赖hive的软件都可以通过Metastore访问hive。

    主节点配置

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

    vim conf/hive-env.sh

    export HADOOP_HOME=/export/servers/hadoop

    vim  hive-site.xml

    <configuration>

    <property>

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

    <value>jdbc:mysql://node01:3306/hive?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>

    <property>

        <name>hive.server2.thrift.bind.host</name>

        <value>node01</value>

    </property>

    <property>

        <name>hive.metastore.uris</name>

        <value>thrift://node01:9083</value>

    </property>

    </configuration>

    其他节点配置

    <configuration>

    <property>

        <name>hive.server2.thrift.bind.host</name>

        <value>node01</value>

    </property>

    <property>

        <name>hive.metastore.uris</name>

        <value>thrift://node01:9083</value>

    </property>

    </configuration>

    启动方式:

    主节点运行:首先启动metastore服务,然后启动hiveserver2服务。

    nohup /export/servers/hive/bin/hive --service metastore &

    nohup /export/servers/hive/bin/hive --service hiveserver2 &

    然后有hive进行连接访问:

    /export/servers/hive/bin/beeline

    Beeline version 1.1.0-cdh5.14.0 by Apache Hive

    beeline> ! connect jdbc:hive2://node01:10000

    Enter username for jdbc:hive2://node01:10000: root

    Enter password for jdbc:hive2://node01:10000:

    相关文章

      网友评论

          本文标题:Hive

          本文链接:https://www.haomeiwen.com/subject/yxwwgctx.html