前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据篇---hive学习第一部分 Hive概述

大数据篇---hive学习第一部分 Hive概述

作者头像
用户2337871
发布2020-11-24 11:00:18
4090
发布2020-11-24 11:00:18
举报
文章被收录于专栏:gitgit

第一部分 Hive概述

代码语言:javascript
复制
HDFS => 海量数据的存储
MapReduce => 海量数据的分析和处理
YARN => 集群资源的管理和作业调度

第 1 节 Hive产生背景

  • 直接使用MapReduce处理大数据,将面临以下问题:
代码语言:javascript
复制
- MapReduce 开发难度大,学习成本高(wordCount => Hello World)
- Hdfs文件没有字段名、没有数据类型,不方便进行数据的有效管理 
- 使用MapReduce框架开发,项目周期长,成本高
  • Hive是基于Hadoop的一个数据仓库工具,可以将 结构化的数据文件 映射为一张表 (类似于RDBMS中的表),并提供类SQL查询功能;Hive是由Facebook开源,用于解 决海量结构化日志的数据统计。
代码语言:javascript
复制
	* Hive本质是:将 SQL 转换为 MapReduce 的任务进行运算
	* 底层由HDFS来提供数据存储
 	* 可以将Hive理解为一个:将 SQL 转换为 MapReduce 任务的工具
  • 数据仓库(Data Warehouse)是一个面向主题的、集成的、相对稳定的、反映历史变 化的数据集合,主要用于管理决策。(数据仓库之父比尔·恩门,1991年提出)。
代码语言:javascript
复制
	* 数据仓库的目的:构建面向分析的、集成的数据集合;为企业提供决策支持
	* 数据仓库本身不产生数据,数据来源与外部
	* 存储了大量数据,对这些数据的分析和处理不可避免的用到Hive

第 2 节 Hive和RDBMS对比

  • 由于 Hive 采用了类似SQL 的查询语言 HQL(Hive Query Language),因此很容易将 Hive 理解为数据库。其实从结构上来看,Hive 和传统的关系数据库除了拥有类似的 查询语言,再无类似之处。
代码语言:javascript
复制
	* 查询语言相似。HQL <=> SQL 高度相似 由于SQL被广泛的应用在数据仓库中,因此,专门针对Hive的特性设计了类SQL的查询语言 HQL。熟悉SQL开发的开发者可以很方便的使用Hive进行开发。 
	* 数据规模。Hive存储海量数据;RDBMS只能处理有限的数据集; 由于Hive建立在集群上并可以利用MapReduce进行并行计算,因此可以支持很大规模的数 据;而RDBMS可以支持的数据规模较小。 
	* 执行引擎。Hive的引擎是MR/Tez/Spark/Flink;RDBMS使用自己的执行引擎 Hive中大多数查询的执行是通过 Hadoop 提供的 MapReduce 来实现的。而RDBMS通常 有自己的执行引擎。
	* 数据存储。Hive保存在HDFS上;RDBMS保存在本地文件系统 或 裸设备 Hive 的数据都是存储在 HDFS 中的。而RDBMS是将数据保存在本地文件系统或裸设备 中。
	* 执行速度。Hive相对慢(MR/数据量);RDBMS相对快; Hive存储的数据量大,在查询数据的时候,通常没有索引,需要扫描整个表;加之Hive使 用MapReduce作为执行引擎,这些因素都会导致较高的延迟。而RDBMS对数据的访问通常 是基于索引的,执行延迟较低。当然这个低是有条件的,即数据规模较小,当数据规模大到 超过数据库的处理能力的时候,Hive的并行计算显然能体现出并行的优势。
	* 可扩展性。Hive支持水平扩展;通常RDBMS支持垂直扩展,对水平扩展不友好 Hive建立在Hadoop之上,其可扩展性与Hadoop的可扩展性是一致的(Hadoop集群规模 可以轻松超过1000个节点)。而RDBMS由于 ACID 语义的严格限制,扩展行非常有限。目 前最先进的并行数据库 Oracle 在理论上的扩展能力也只有100台左右。
	* 数据更新。Hive对数据更新不友好;RDBMS支持频繁、快速数据更新Hive是针对数据仓库应用设计的,数据仓库的内容是读多写少的。因此,Hive中不建议对 数据的改写,所有的数据都是在加载的时候确定好的。而RDBMS中的数据需要频繁、快速的 进行更新。

** 安装python-devel开发包

  • 1.概述 有时在安装某些软件的时候,会报错:
代码语言:javascript
复制
Error: must have python development packages for 2.4, 2.5, 2.6 or 2.7. Could not find Python.h.Please install python2.4-devel, python2.5-devel, python2.6-devel or python2.7-devel

这是因为缺少python开发包的原因。

  • 2.解决方案

如果你使用的是centOS系统,或者支持yum的系统,那么可以通过如下方式进行安装:

代码语言:javascript
复制
yum search python | grep -i devel

通过上面命令会找到devel开发包,然后再运行下面命令进行安装:

代码语言:javascript
复制
yum  install python-devel.x86_64
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第 1 节 Hive产生背景
  • 第 2 节 Hive和RDBMS对比
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档