数据分析系统Hive
Posted yunpiao123456
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据分析系统Hive相关的知识,希望对你有一定的参考价值。
Hive概述
Hive是由facebook开源,最初用于解决海量结构化的日志数据统计问题。其是构建在Hadoop之上的数据仓库。数据计算使用MR,数据存储使用HDFS。Hive 定义了一种类 SQL 查询语言——HQL。类似SQL,但不完全相同。通常用于进行离线数据处理(采用MapReduce)。可认为Hive是一个HQL-MR的语言翻译器。
上述代码是mapreduce实现的wordcount。但是,利用Hive实现上述功能只需要一行命令。SELECT word, COUNT(*) FROM doc LATERAL VIEW explode(split(text, ' ')) lTable as word GROUP BY word。
Hive典型应用场景
日志分析统计网站一个时间段内的pv、uv多维度数据分析。 大部分互联网公司使用Hive进行日志分析,包括百度 、淘宝等。其他场景如:海量结构化数据离线分析和低成本进行数据分析(不直接编写MR)。
Hive简单,容易上手提供了类SQL查询语言HQL。为超大数据集设计了计算/扩展能力。MR作为计算引擎,HDFS作为存储系统。其具有统一的元数据管理(HCalalog)。并且可与Pig、Presto等共享 。
Hive基本架构
用户接口包括 CLI,JDBC/ODBC,WebUI 。元数据存储(metastore)是默认存储在自带的数据库derby中,线上使用时一般换为mysql 。驱动器(Driver)包括:解释器、编译器、优化器以及执行器 。负责将HQL语句翻译为Map/Reduce Job。Hive与Hadoop交互。 用 MapReduce 进行计算,用 HDFS 进行存储。
如图所示为Hive的生成环境。将HIve部署在一个节点上。元数据存储在安装有Mysql的节点上。另一个Mysql节点作为热备。然后,可以和hadoop集群进行交互。
Hive部署架构-metastore服务
第一种部署方案是将driver,元数据存储以及Mysql放在一个节点上。这样不利于多个driver同时操作。第二种方案将Mysql放在一个单独节点上。这样可以有多个driver同时工作。最后一种方案将三者都分离。这样可以更加灵活的操作Hive。
Hive使用方式
CLI(Command Line Interface)
$HIVE_HOME/bin/hive --help 可以查询Hive相关的命令。
外部资源:HQL运行时需要的jar包、二进 制文件、文本文件、压缩文件等 。外部资源需分发到集群的各个节点上使用。三种外部资源:
FILE:普通文件,Hadoop不会进行任何处理。
JAR:jar包,Hadoop自动将其加入CLASSPATH中。
ARCHIVE:归档文件,Hadoop可识别“.tgz”、“.tar.gz”、 “.zip”等结尾的文件,并自动解压。
三种操作:
ADD FILE[S] | JAR[S] | ARCHIVE[S] <filepath1> [<filepath2>]*
LIST FILE[S] | JAR[S] | ARCHIVE[S] [<filepath1> <filepath2> ..]
DELETE FILE[S] | JAR[S] | ARCHIVE[S] [<filepath1> <filepath2> ..]
Hive Web UI
Hive客户端程序
方法1:提供JDBC/ODBC访问方式;
方法2:采用开源软件Thrift实现C/S模型,支持任何语言编写客户端程序。
如上为采用php实现Hive的操作。
HQL查询语句
数据模型
Hive最上层是Database,下面是数据表。数据表可以分成不同的partition分区。Partition又可以切割成很多bucket桶。
以上是Hive的介绍,接下来介绍pig。
以上是关于数据分析系统Hive的主要内容,如果未能解决你的问题,请参考以下文章