当前位置: 首页 > news >正文

湖北省勘察设计协会网站搜索引擎seo优化平台

湖北省勘察设计协会网站,搜索引擎seo优化平台,桂林象鼻山门票价格,模板网站建站步骤hive出现的原因 Hive 出现的原因主要有以下几个: 传统数据仓库无法处理大规模数据:传统的数据仓库通常采用关系型数据库作为底层存储,这种数据库在处理大规模数据时效率较低。MapReduce 难以使用:MapReduce 是一种分布式计算框架…

hive出现的原因

Hive 出现的原因主要有以下几个:

  • 传统数据仓库无法处理大规模数据:传统的数据仓库通常采用关系型数据库作为底层存储,这种数据库在处理大规模数据时效率较低。
  • MapReduce 难以使用:MapReduce 是一种分布式计算框架,它可以用于处理大规模数据,但 MapReduce 的编程模型比较复杂,难以使用。
  • 需要一种统一的查询接口:传统的数据仓库和 MapReduce 都提供了数据查询的接口,但这些接口相互独立,难以统一管理。

为了解决这些问题,Facebook 在 2008 年开发了 Hive,Hive 是一种基于 Hadoop 的分布式数据仓库管理系统,它提供了一种 SQL 语法来访问存储在 Hadoop 分布式文件系统 (HDFS) 中的数据。Hive 的出现,解决了传统数据仓库无法处理大规模数据的问题,也简化了 MapReduce 的使用,并提供了一种统一的查询接口。

Hive 的出现,对大数据处理产生了重大影响,它使大数据处理变得更加简单、高效、可扩展。

hive执行过程

  1. 编写 Hive SQL 程序:首先,需要编写 Hive SQL 程序,这个程序可以通过 Hive CLI、Hive WebUI 等工具进行编写。Hive SQL 程序可以包含各种数据查询语句,例如 select、insert、update、delete 等。
  2. 提交 Hive SQL 程序:编写完成后,需要将 Hive SQL 程序提交到 Hive 服务器。Hive 服务器会根据 Hive SQL 程序的语法和逻辑进行解析,并生成 MapReduce 任务。
  3. 执行 MapReduce 任务:MapReduce 任务会将 Hive SQL 程序中的查询语句转换为 Map 和 Reduce 任务。Map 任务会将数据分割成小块,并将数据进行预处理。Reduce 任务会将 Map 任务的输出结果进行合并和聚合。
  4. 生成查询结果:MapReduce 任务完成后,Hive 服务器会将查询结果生成到 HDFS 中。
  5. 从 HDFS 中取数:最后,可以通过 Hive CLI、Hive WebUI 等工具从 HDFS 中取出查询结果。

具体来说,Hive SQL 程序的执行过程如下:

  1. SqlParser 将 Hive SQL 程序解析为 AST(抽象语法树)
  2. SemanticAnalyzer 对 AST 进行语义分析
  3. Optimizer 对 AST 进行优化
  4. Planner 生成执行计划
  5. Driver 将执行计划发送到 MapReduce 框架
  6. MapReduce 框架启动 Map 和 Reduce 任务
  7. Map 和 Reduce 任务生成查询结果
  8. Hive 服务器将查询结果写入 HDFS
  9. 用户从 HDFS 中取出查询结果

这个过程可以分为两个阶段:

  • Hive SQL 解析和执行阶段:这个阶段是 Hive SQL 程序执行的核心阶段,包括 Hive SQL 程序的解析、优化、计划、执行等过程。
  • HDFS 写入和读取阶段:这个阶段是将查询结果写入 HDFS 以及从 HDFS 中取出查询结果的过程。

需要注意的是,Hive SQL 程序的执行过程可以根据 Hive 服务器的配置进行调整。例如,可以通过配置 Hive 的参数来控制 MapReduce 任务的数量和并行度。

hive服务器包含哪些部分

HiveServer2

HiveServer2 是 Hive 的服务器端,它负责接收用户的 Hive SQL 请求,并将这些请求转换为 MapReduce 任务
HiveServer2 的转换步骤如下:

  • 解析阶段:HiveServer2 会使用 ANTLR 解析器来解析 Hive SQL 请求,生成抽象语法树 (AST)。AST 是 Hive SQL 请求的结构化表示,它包含了 Hive SQL 请求的语法信息。
  • 语义分析阶段:HiveServer2 会使用 SemanticAnalyzer 来对 AST 进行语义分析,检查 Hive SQL 请求的语义是否正确。语义分析会检查 Hive SQL 请求中的变量、常量、表达式等是否正确,以及 Hive SQL 请求是否符合 Hive 的语义规则。
  • 优化阶段:HiveServer2 会使用 Optimizer 来对 AST 进行优化,提高 Hive SQL 请求的执行效率。优化会根据 Hive SQL 请求的语义和数据分布情况,生成最优的执行计划。
  • 生成执行计划阶段:HiveServer2 会使用 Planner 来生成执行计划。执行计划是 Hive SQL 请求的执行指南,它包含了 MapReduce 任务的数量、分区、输入输出等信息。
  • 执行阶段:HiveServer2 会将执行计划发送到 MapReduce 框架,由 MapReduce 框架执行 Hive SQL 请求。MapReduce 框架会将 Hive SQL 请求拆分为多个 Map 和 Reduce 任务,并在多个节点上并行执行。

Hive Metastore

Hive Metastore 是 Hive 的元数据存储,它存储了 Hive 数据库、表、列、分区等元数据信息
Hive Metastore 使用 MySQL 存储元数据,提供以下优点:

可扩展性:MySQL 是一个可扩展的数据库,可以支持大量的并发连接。
可靠性:MySQL 支持 ACID 事务,保证了数据的一致性和完整性。
性能:MySQL 是一个高性能的数据库,可以满足 Hive 的性能需求。

性能优化

要尽可能减少生成的 MapReduce 任务量,在编写 HiveSQL 时应该注意以下几点:

  • 尽量使用 join 而不是 union。 union 操作会导致两个表的数据分别作为 MapReduce 任务的输入,而 join 操作只会生成一个 MapReduce 任务。
  • 尽量使用 where 子句来过滤数据。 where 子句可以过滤掉不需要的数据,减少 MapReduce 任务处理的数据量。
  • **尽量使用分区表。**分区表可以将数据分布到多个文件中,减少 MapReduce 任务之间的数据 shuffle 量。
  • 使用 coalesce 函数合并小文件。 coalesce 函数可以将多个小文件合并为一个大文件,减少 MapReduce 任务之间的数据 shuffle 量。
  • 使用 mapjoin 操作。 mapjoin 操作可以将 Map 任务和 Reduce 任务合并为一个任务,减少 MapReduce 任务的数量。

以下是一些具体的示例:

  • 使用 join 而不是 union:
# 使用 union,生成两个 MapReduce 任务
select * from table1 union all select * from table2;# 使用 join,生成一个 MapReduce 任务
select * from table1 join table2 on table1.id = table2.id;
  • 使用 where 子句来过滤数据:
# 不使用 where 子句,生成一个 MapReduce 任务
select * from table1;# 使用 where 子句,生成一个 MapReduce 任务
select * from table1 where id = 1;
  • 使用分区表:
# 使用不分区表,生成一个 MapReduce 任务
select * from table1;# 使用分区表,生成多个 MapReduce 任务
select * from table1 partition(d1, d2, d3);
  • 使用 coalesce 函数合并小文件:
# 不使用 coalesce 函数,生成多个 MapReduce 任务
select * from table1;# 使用 coalesce 函数,生成一个 MapReduce 任务
select * from table1 coalesce(1000);
  • 使用 mapjoin 操作:
# 不使用 mapjoin 操作,生成两个 MapReduce 任务
select * from table1 join table2 on table1.id = table2.id;# 使用 mapjoin 操作,生成一个 MapReduce 任务
select * from table1 mapjoin table2 on table1.id = table2.id;

总结

也就是说,hive sql通过将sql转换成map reduce任务,使得开发人员可以通过编写sql来替代写map reduce代码,由于sql是通用的,很多数据分析人员都有此技术栈,相对写map reduce代码要容易上手很多。对于同样一个取数需求,hive sql编写方式的不同,会导致Map Reduce任务的创建量不同,所以尽可能编写少的Map Reduce的任务的SQL也是性能优化需要关注的点。

http://www.fp688.cn/news/143118.html

相关文章:

  • 在线 网站建设关键词seo公司真实推荐
  • wordpress discuz论坛模板下载优化电脑的软件有哪些
  • 网站页面设计说明搜索词和关键词
  • 网站开发入股合作分配比例网络营销的八大能力
  • 怎么做网站在里面填字百度sem推广
  • 个人网站做企业备案中国联通和腾讯
  • 阿里巴巴网站推广怎么做sem竞价推广公司
  • 泰州网站制作工具优化工具箱下载
  • 扬州网站建设 开元怎么去推广一个app
  • 免费服务器建立网站2022新闻大事件摘抄
  • 百度一下 你就知道首页南宁seo收费
  • 一个网站的首页设计ps腾讯新闻发布平台
  • 500强企业网站建设公司产品怎样网上推广
  • 迅捷在线图片编辑seo技术服务外包
  • 那家财经网站做的好企业管理软件
  • 网站怎么建立数据库今日国际重大新闻
  • 专业的网站建设公司排名快速优化工具
  • 营销网络平台网站搜索优化找哪家
  • 昆明睿腾科技网站建设seo常见优化技术
  • 无锡网站建设哪家公司比较好网页制作的软件有哪些
  • 如何做美女图片网站凡科建站登录
  • 新疆找工作哪个网站好百度网站收录
  • 有了公网ip如何做网站b站推广入口2023mmm
  • 青岛专业做网站的爱用建站官网
  • 网站开发 验收苏州疫情最新消息
  • 网站评论做外链百度快照下载
  • 做外贸网站推广的步骤一个新产品策划方案
  • 做网站可能遇到的问题网络广告投放方案
  • 商城开发网站宁波企业seo外包
  • php做网站seo诊断服务