数据分析系统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安装与配置教程 Hive 是一个建立在 Hadoop 之上的数据仓库工具,用于大规模数据的存储和查询。以下是关于电影票房数据分析系统Hive 的安装与配置指南。 #### 1. 环境准备 在安装 Hive 之前,需要确保以下环境已经正确安装并配置: - Linux 操作系统 - Java JDK(建议版本 1.8 或更高)[^1] - Hadoop(建议版本 2.x 或更高) - MySQL(用于 Hive 的元数据存储) #### 2. 下载 Hive 从 Apache 官方网站下载最新版本的 Hive,并解压到指定目录。例如: ```bash wget https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz tar -xzvf apache-hive-3.1.2-bin.tar.gz -C /opt/ ``` #### 3. 配置环境变量 编辑 `~/.bashrc` 文件,添加 Hive 的环境变量: ```bash export HIVE_HOME=/opt/apache-hive-3.1.2-bin export PATH=$PATH:$HIVE_HOME/bin ``` 然后执行以下命令使配置生效: ```bash source ~/.bashrc ``` #### 4. 配置 Hive 进入 Hive 的配置目录,复制模板文件并进行修改: ```bash cd $HIVE_HOME/conf cp hive-default.xml.template hive-site.xml ``` 编辑 `hive-site.xml` 文件,添加以下内容以配置 MySQL 作为元数据存储: ```xml <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>your_password</value> </property> ``` #### 5. 初始化 Metastore 下载 MySQL 的 JDBC 驱动并将其放置到 Hive 的 lib 目录下: ```bash wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.26.jar mv mysql-connector-java-8.0.26.jar $HIVE_HOME/lib/ ``` 初始化 Hive 的元数据存储: ```bash schematool -dbType mysql -initSchema ``` #### 6. 启动 Hive 确保 Hadoop 已经启动,然后运行 Hive CLI: ```bash hive ``` 如果一切正常,你应该能够看到 Hive 的提示符。 #### 7. 测试 Hive 创建一个简单的表来测试 Hive 是否正常工作: ```sql CREATE TABLE IF NOT EXISTS movies ( id INT, title STRING, box_office DOUBLE ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; ``` 加载数据到表中: ```sql LOAD DATA LOCAL INPATH '/path/to/movies.txt' INTO TABLE movies; ``` 查询数据: ```sql SELECT * FROM movies LIMIT 10; ``` ### 注意事项 - 确保 Hadoop 和 Hive 的版本兼容。 - 如果使用 MapReduce 执行 Hive 查询,需确保 Hadoop 集群正常运行[^1]。 - 在实际生产环境中,建议将 Hive 的元数据存储迁移到分布式数据库(如 MySQL 集群)以提高可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值