Hadoop生态hive(一)介绍

一、Hive是什么

      起源自facebook由Jeff Hammerbacher领导的团队,构建在Hadoop上的数据仓库框架。设计目的是让SQL技能良好,但Java技能较弱的分析师可以查询海量数据。2008年facebook把hive项目贡献给Apache。

       由facebook开源,最初用于解决海量结构化的日志数据统计问题。ETL(Extraction-Transformation-Loading)数据抽取、加载、处理工具,构建在Hadoop之上的数据仓库。数据计算使用MR,数据存储使用HDFS。Hive 定义了一种类 SQL 查询语言——HQL,类似SQL,但不完全相同。通常用于进行离线数据处理(采用MapReduce),可认为是一个HQLMR的语言翻译器。

       作为数据仓库工具,可以把Hadoop下的原始结构化数据变成Hive中的表 ,支持一种与SQL几乎完全相同的语言HiveQL。除了不支持更新、索引和事务,几乎SQL的其它特征都能支持。可以看成是从SQL到Map-Reduce的映射器 。提供shell、JDBC/ODBC、Thrift、Web等接口。 

 

二、为什么使用Hive

简单,容易上手,提供了类SQL查询语言HQL。为超大数据集设计的计算/扩展能力 ,MR作为计算引擎,HDFS作为存储系统 。统一的元数据管理(HCalalog) ,可与Pig、Presto等共享 。

(1)Hive优点与长处

95%的Facebook任务由Hive写成,开发周期通常十分钟
Hive的所有执行,最终是转换为MapReduce
Hive的长处,在于数据统计如:pv,uv,ip的计算
group by,join
………………
精力放在数据逻辑上,优化数据结构和性能,而不再关注前人已经发明的轮子,不同同事之间的成果,可以方便的服用

(2)Hive缺点

Hive的HQL表达的能力有限:迭代式算法无法表达;有些复杂运算用HQL不易表达

Hive效率较低:Hive自动生成MapReduce作业,通常不够智能;HQL调优困难,粒度较粗;可控性差

 

三、Hive架构

(1)Hive的基本架构

1)用户接口
包括 CLI,JDBC/ODBC,WebUI
2)元数据存储(metastore)
默认存储在自带的数据库derby中,线上使用时一般换为MySQL
3)驱动器(Driver)
解释器、编译器、优化器、执行器
4)Hadoop
用 MapReduce 进行计算,用 HDFS 进行存储

(2)Hive的数据存储

1)Hive没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由的组织 Hive 中的表。
2)Hive 中所有的数据都存储在 HDFS 中,Hive 中包含以下数据模型:Table,External Table,Partition,Bucket。
3)Hive 中的 Table 和数据库中的 Table 在概念上是类似的,每一个 Table 在 Hive 中都有一个相应的目录存储数据。
例如表 tbl_pv放在目录 /wh/tbl_pv中,这里wh为hive-site.xml中${hive.metastore.warehouse.dir} 指定的数据仓库目录。
4)Hive 表中的一个 Partition 对应于表下的一个目录,所有的 Partition 的数据都存储在对应的目录中。
例如:tbl_pv 表中包含 ds 和 city 两个 Partition,则对应于 ds = 20090801, ctry = US 的 HDFS 子目录为:/wh/tbl_pv/ds=20090801/ctry=US;对应于 ds = 20090801, ctry = CA 的 HDFS 子目录为/wh/pvs/ds=20090801/ctry=CA

5)Buckets 对指定列计算 hash,根据 hash 值切分数据,每一个 Bucket 对应一个文件。可用于采样:

CREATE TABLE sales( id INT, name STRING)PARITIONED BY (ds STRING)CLUSTERED BY (id) INTO 32 BUCKETS;
SELECT id FROM sales TABLESAMPLE (BUCKET 1 OUT OF 32);

6)External Table 指向已经在 HDFS 中存在的数据,可以创建 Partition

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用混合云的SQL Server

近期发布的Microsoft SQL Server 2017,表明Microsoft公司正寻求不断降低其所交付的工具对平台的绑定。在SQL Server 2017中,这一趋势可以从“混合云”(Hybrid Cloud)术语和多平台本质这两个方面得以证实。下面让我们分别一窥这两个…

.NET Core多平台项目模板eShopOnContainers编译手记

之前写了一个功能性的文件上传asp.net core的小程序,加上点七七八八的东西,勉强能够应付了,打算学习一下微软的官方.NET CORE微服务示例https://github.com/dotnet-architecture/eShopOnContainers。这个例子很全面地展现了微服务、docker以及…

如何改变Idea的背景

进入Idea 按下ctrlshifta 点击set background 选择自己准备好的图片地址,就可以更改背景了 更改后效果 关于接口的插件 GsonFormat插件 安装还是和别的插件一样,在plugin里搜索GsonFormat,下载并重启 然后在model里的类 按下alts 出现 将…

TFS在项目中Devops落地进程(上)

作为一名开发,经过近2年折腾,基于TFS的Devops主线工程大体落地完毕。 在此大体回忆下中间的各种历程。 开始之前简单说下什么是TFS(Team Foundation Server)。 TFS是微软推出的一款ALM(Application Lifecycle Management)管理工具。 透过TFS你将能获取到从代码版本管…

Hadoop生态hive(三)Hive QL介绍

一、表 创建表 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name CREATE TABLE 创建一个指定名字的表。Hive 创建内部表时,会将数据移动到数据仓库指向的路径; EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实…

抖音上非常火的旋转图快速部署

本教程不需要你有服务器! 本教程不需要你有服务器! 本教程不需要你有服务器! 点击我看旋转图 总共两步 1、注册一个码云账号 2、新建一个仓库,上传文件即可 1、注册账号的话,直接浏览器搜索码云,手机号…

Microsoft的现代数据管理

PASS 2017峰会是面向SQL Server及Microsoft相关数据技术用户的大会。在大会的第一天,Microsoft的Rohan Kumar先生到场做了开幕式的主题演讲,并借此机会展示了Microsoft在SQL Server和Azure数据库方面的最新进展。 Kumar的演讲涉及数据、人工智能和云这三…

vue 3.4x以上如何改变项目运行端口号

我用3.4版本的vue-cli构建了一个vue项目,然后我想修改项目运行之后的访问端口 在网上查了一下,很多都是2.0的版本,查来查去都说是什么在 config目录下index.js文件中修改端口号。。。。。。。 都抄来抄去的 新的vue项目目录结构下并没有con…

Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

转载自 Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient hive初始化(mysql为元数据库)完成后,执行SQL语句报错 经过各种查询资料,找到了一种解决办法,大家可以参考。 首先进…

Asp.net core应用在 Kubernetes上内存使用率过高问题分析

原文:https://blog.markvincze.com/troubleshooting-high-memory-usage-with-asp-net-core-on-kubernetes/ ps:我不是死板翻译原文的,尽量的通俗一点,如有不对欢迎指出,谢谢哈。 在生产环境中,我们把asp.ne…

vue cli 4.x打包后如何部署到tomcat服务器上

使用npm run build打包好dist后,不能直接打开里面的index.html,否则页面是一片空白 这时候我们就需要用服务器来代理我们的页面,可以使用ningx,tomcat,或者apache,这里我们使用tomcat当作范例 找到tomcat的…

依赖注入和控制反转

概念 IoC——Inversion of Control 控制反转 DI——Dependency Injection 依赖注入 要想理解上面两个概念,就必须搞清楚如下的问题: 参与者都有谁? 依赖:谁依赖于谁?为什么需要依赖? 注入:…

Hadoop生态Flume(一)介绍

一、概述 Apache Flume是一个分布式,可靠且可用的系统,用于有效地收集,聚合大量日志数据并将其从许多不同的源移动到集中式数据存储中。 Apache Flume的使用不仅限于日志数据聚合。由于数据源是可定制的,因此Flume可用于传输大量…

centos7安装最新版node

为了在linux服务端运行前端以及node后端项目,就必须在服务器上安装node了 但是想要运行前端项目版本就必须是8.x以上的,所以我们干脆安装最新的node 下载 进入下面的官方网站 https://nodejs.org/en/download/ 点击64位的Linux下载 复制该网址 这里以…

[译]ASP.NET Core 2.0 网址重定向

问题 如何在ASP.NET Core 2.0中实现网址重定向? 答案 新建一个空项目,在Startup.cs文件中,配置RewriteOptions参数并添加网址重定向中间件(UseRewriter): public void Configure(IApplicationBuilder app, …

纪中2019(上)游记+总结

目录之下 文章目录目录之下游记之下Day−1Day-1Day−1Day0Day0Day0Day1Day1Day1Day2Day2Day2Day3Day3Day3Day4Day4Day4Day5Day5Day5Day6Day6Day6Day7Day7Day7Day8Day8Day8Day9Day9Day9Day10Day10Day10Day11Day11Day11Day12Day12Day12Day13Day13Day13Day14Day14Day14比赛之下欢乐…

asp.net core WebAPI实现CRUD

本节用于构建一个简单的WebAPI来管理to-do列表。不会创建用户界面。 API Description Request body Response body GET /api/todo Get all to-do items NoneArray of to-do items GET /api/todo/{id} Get an item by ID NoneTo-do item POST /api/todo Add a new item To-do it…

Hadoop2.6.0的Intellij Idea 插件

一、Hadoop2.6.0的Idea Intellij插件下载 github源码地址 github插件压缩包 二、安装插件 setting》Plugins》install plugins from disk 选择压缩包,重启Idea就行 安装完的结果:

v-for指令案例详解

对于v-for指令,以前老是不能理解,经常记混,所以特地写篇笔记来加强下记忆,希望借此能学的更深刻一点 v-for顾名思义就是个for循环,是vue的一个循环。在遍历json字符串的时候有奇佳的效果,感觉就是为他们而造…

Docker ASP.NET Core 2.0 微服务跨平台实践

本篇博文的目的:在 Mac OS 中使用 VS Code 开发 ASP.NET Core 2.0 应用程序,然后在 Ubuntu 服务器配置 Docker 环境,并使用 Docker 运行 Consul 和 Fabio 环境,最后使用 Docker 运行 ASP.NET Core 2.0 应用程序。 你要的项目源码&…