zoukankan      html  css  js  c++  java
  • 虚拟机中hive相关

    二、Hive概述

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

    2. 底层是将sql语句转换为MapReduce任务进行运行

    3. Hive提供了一系列的工具,可以用来进行数据提取、转化、加载(ETL Extract-Transform-Load ),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制

    4. 本质上是一种大数据离线分析工具

    三、Hive的HQL

    1. HQL - Hive通过类SQL的语法,来进行分布式的计算

    2. HQL用起来和SQL非常的类似,Hive在执行的过程中会将HQL转换为MapReduce去执行,所以Hive其实是基于Hadoop的一种分布式计算框架,底层仍然是MapReduce

    四、特点

    1. 优点: a. 学习成本低,只要会sql就能用hive b. 开发效率高,不需要编程,只需要写sql c. 模型简单,易于理解 d. 针对海量数据的高性能查询和分析 e. HiveQL 灵活的可扩展性(Extendibility) f. 高扩展性(Scalability)和容错性 g. 与 Hadoop 其他产品完全兼容

    2. 缺点: a. 不支持行级别的增删改 b. 不支持完整的在线事务处理 c. 本质上仍然是MR的执行,效率不算高

    五、适用场景

    1. Hive 构建在基于静态(离线)批处理的Hadoop 之上,Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,Hive 并不能够在大规模数据集上实现低延迟快速的查询因此,Hive 并不适合那些需要低延迟的应用

    2. Hive 并不提供实时的查询和基于行级的数据更新操作。Hive 的最佳使用场合是大数据集的离线批处理作业,例如,网络日志分析

      数据仓库和数据库对比

      一、数据仓库和数据库对比

      数据库数据仓库
      为线上系统提供实时数据 为离线分析存储历史数据
      具有完整的增删改查的能力 只支持一次写入多次查询,不支持行级别的增删改
      具有完整的事务能力 不强调事务的特性
      尽量的避免冗余,提高存储和处理的效率 人为的制造冗, 提高查询的效率
      数据来源单一 数据来源多样(数据库,爬虫,日志等)

     

     

    1. 用户接口主要有三个:CLI,JDBC 和 WUI

    a. CLI,最常用的模式。实际上在>hive 命令行下操作时,就是利用CLI用户接口 b. JDBC,通过java代码操作,需要启动hiveserver,然后连接操作

    2. Metastore

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

    3. 解释器(complier)、优化器(optimizer)、执行器(executor)组件

    这三个组件用于:HQL语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行

    4. Hadoop

    Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成

    流程

    1.通过客户端提交一条Hql语句 2.通过complier(编译组件)对Hql进行词法分析、语法分析。在这一步,编译器要知道此hql语句到底要操作哪张表 3.去元数据库找表信息 4.得到信息 5.complier编译器提交Hql语句分析方案。 6.1 executor 执行器收到方案后,执行方案(DDL过程)。在这里注意,执行器在执行方案时,会判断 如果当前方案不涉及到MR组件,比如为表添加分区信息、比如字符串操作等,比如简单的查询操作等,此时就会直接和元数据库交互,然后去HDFS上去找具体数据。 如果方案需要转换成MR job,则会将job 提交给Hadoop的JobTracker。 6.2 MR job完成,并且将运行结果写入到HDFS上。 6.3 执行器和HDFS交互,获取结果文件信息。 7.如果客户端提交Hql语句是带有查询结果性的,则会发生:7-8-9步,完成结果的查询。

     

    1.解压压缩包

    tar -zxvf hive-0.12.0-bin.tar.gz -C 解压路径

    -c为建立新的压缩文件

    2、设置环境变量

    vi /etc/profile

    export HIVE_HOME=这里为你自己的路径
    export PATH=$HIVE_HOME/bin:$PATH

    执行source /etc.profile:

    执行hive --version

     

    3、定义配置文件

    cp hive-default.xml.template hive-site.xml
    cp hive-env.sh.template hive-env.sh
    cp hive-exec-log4j.properties.template hive-exec-log4j.properties
    cp hive-log4j.properties.template hive-log4j.properties

     

     

    vi hive-site.xml

    <?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://master: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>

     

     

    vi hive-env.sh

    export JAVA_HOME=/opt/jdk1.8.0_161 export HADOOP_HOME=/opt/hadoop-2.6.0-cdh5.7.0

    在最后加上自己JAVA_HOME和HADOOP_HOME的路径

  • 相关阅读:
    CSS基础
    bootbox api
    实现浏览器遗漏的原件 jQuery.selectCheckbox
    获取图片宽高方法
    javascript基础知识
    找工作总结
    cms配置使用
    页面被运营商加载广告
    iOS7 隐藏状态栏 hide statusBar
    Status Bar in iOS7
  • 原文地址:https://www.cnblogs.com/l1205/p/14142384.html
Copyright © 2011-2022 走看看