Hive提供的服务


来自:百度百科整理

Hive提供什么服务

  • hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。
  • hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。
  • Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。
  • hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(不包含 * 的查询,比如 select * from tbl 不会生成 MapReduce 任务)

更进一步的简介

  • hive是基于Hadoop构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的数据:
    • 可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能;
    • 可以将SQL语句转换为MapReduce任务运行,通过自己的SQL查询分析需要的内容,这套SQL简称Hive SQL,使不熟悉mapreduce的用户可以很方便地利用SQL语言查询、汇总和分析数据。
    • 而mapreduce开发人员可以把自己写的mapper和reducer作为插件来支持hive做更复杂的数据分析。
      • 它与关系型数据库的SQL略有不同,但支持了绝大多数的语句如DDL、DML以及常见的聚合函数、连接查询、条件查询。它还提供了一系列的工具进行数据提取转化加载,用来存储、查询和分析存储在Hadoop中的大规模数据集,并支持UDF(User-Defined Function)、UDAF(User-Defined AggregateFunction)和UDTF(User-Defined Table-Generating Function),也可以实现对map和reduce函数的定制,为数据操作提供了良好的伸缩性和可扩展性。
  • hive不适合用于联机(online)事务处理,也不提供实时查询功能。它最适合应用在基于大量不可变数据的批处理作业。hive的特点包括:可伸缩(在Hadoop的集群上动态添加设备)、可扩展、容错、输入格式的松散耦合。

适用场景

  • hive 构建在基于静态批处理的Hadoop 之上,Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,hive 并不能够在大规模数据集上实现低延迟快速的查询
  • 因此,hive 并不适合那些需要高实时性的应用,
    • 例如,联机事务处理(OLTP)。hive 查询操作过程严格遵守Hadoop MapReduce 的作业执行模型,hive 将用户的hiveSQL 语句通过解释器转换为MapReduce 作业提交到Hadoop 集群上,Hadoop 监控作业执行过程,然后返回作业执行结果给用户。
    • hive 并非为联机事务处理而设计,hive 并不提供实时的查询和基于行级的数据更新操作。
    • hive 的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。

设计特征

  • hive 是一种底层封装了Hadoop 的数据仓库处理工具,使用类SQL 的hiveSQL 语言实现数据查询,所有hive 的数据都存储在Hadoop 兼容的文件系统(例如,Amazon S3、HDFS)中。hive 在加载数据过程中不会对数据进行任何的修改,只是将数据移动到HDFS 中hive 设定的目录下,因此,hive 不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。hive 的设计特点如下。
    • 支持创建索引,优化数据查询。
    • 不同的存储类型,例如,纯文本文件、HBase 中的文件
    • 将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间
    • 可以直接使用存储在Hadoop 文件系统中的数据。
    • 内置大量用户函数UDF 来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF 函数来完成内置函数无法实现的操作
    • 类SQL 的查询方式,将SQL 查询转换为MapReduce 的job 在Hadoop集群上执行

Hive中数据存储模型

Hive 中所有的数据都存储在 HDFS 中,它包含数据库( Database )、表( Table )、分区表( Partition )和桶表( Bucket ) 4 种数据类型
具体介绍

hive 与impala

  • impala查询任务不是依赖mapreduce,更快。
### 配置 Hive 远程服务完整教程 #### 1. 下载并解压安装包 下载 Hive 的安装包,版本可以根据需求选择。例如,在引用中提到的是 Hive-3.1.3 版本[^2]。将其上传到服务器节点上,并解压缩至指定路径。 ```bash tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /opt/ ln -s /opt/apache-hive-3.1.3-bin /opt/hive ``` #### 2. 修改环境变量 编辑 `~/.bashrc` 文件,添加如下内容: ```bash export HIVE_HOME=/opt/hive export PATH=$PATH:$HIVE_HOME/bin ``` 使修改生效: ```bash source ~/.bashrc ``` #### 3. 配置 MySQL 数据库作为元数据存储 默认情况下,Hive 使用自带的 Derby 数据库来存储元数据。但在生产环境中推荐使用 MySQL 来替代它。以下是具体操作步骤: ##### (1) 创建 MySQL 数据库和用户 登录 MySQL 并创建名为 `hive` 的数据库以及相应的用户权限[^3]。 ```sql CREATE DATABASE hive CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; GRANT ALL PRIVILEGES ON hive.* TO 'hive_user'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; ``` ##### (2) 添加 JDBC 驱动程序 下载适用于 MySQL 的 JDBC 驱动程序(如 mysql-connector-java-x.x.xx.jar),并将该文件复制到 Hive 的 lib 目录下: ```bash cp mysql-connector-java-x.x.xx.jar $HIVE_HOME/lib/ ``` ##### (3) 编辑 Hive 配置文件 进入 `$HIVE_HOME/conf/` 路径,找到或新建 `hive-site.xml` 文件,加入以下配置项: ```xml <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.150.1:3306/hive?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>hive_user</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>password</value> </property> </configuration> ``` 注意:这里的 IP 地址应替换为实际 MySQL 所在主机地址;用户名和密码也需对应前面所设值。 #### 4. 启动 HiveServer2 服务 通过命令行启动 Hive Server2 实例以便于远程客户端能够连接上来运行查询作业[^1]: ```bash nohup hive --service hiveserver2 & ``` 可以通过 jps 命令查看是否有 RunJar 进程存在确认是否正常开启。 如果遇到异常情况,则可能需要排查 YARN 中是否存在冲突 JAR 包等问题。 #### 5. 测试远程连接功能 利用 Beeline 工具测试本地或者跨机器间的连通状况: ```bash beeline -u jdbc:hive2://localhost:10000/default -n username -p password ``` 其中 `-u` 参数指定了目标 HiveServer2 的 URL 和端口号,默认监听的是 10000 端口;而后面的选项则是用于身份验证的信息字段。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

universe_1207

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值