学习笔记hive——hive简介

别呀 别呀     2023-01-09     635

关键词:

一、Hive设计思想

(了解)
Facebook用户社交数据存储与处理

Facebook是美国的一个社交网站 ,于2004年2月4日上线。主要创始人为美国人马克·扎克伯格。Facebook是世界排名领先的照片分享站点。

根据Comscore咨询公司的数据显示,2008年5月Facebook全球独立访问用户首次超过了竞争对手Myspace,前者五月独立访问用户达到了1.239亿,页面浏览量达到500.6亿。2009年12月,Facebook的独立人次达到了4.69亿,其综合浏览量增长了141个百分点,在09年末达到了1930亿。

1.1、Hive由来

Hive是Facebook开发的,构建于Hadoop集群之上的数据仓库应用。2008年Facebook将Hive项目贡献给Apache,成为开源项目。

Hive最初是由Facebook设计的,是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的类SQL查询语言(称为HiveQL)。

底层将HiveQL语句转换为MapReduce任务运行,它允许熟悉SQL的用户基于Hadoop框架分析数据。

优点:学习成本低,对于简单的统计分析,不必开发专门的MapReduce程序,直接通过HiveQL即可实现。


二、Hive体系结构

  • CLI:Cli 启动的时候,会同时启动一个 Hive 副本。

  • JDBC客户端:封装了Thrift,java应用程序,可以通过指定的主机和端口连接到在另一个进程中运行的hive服务器

  • ODBC客户端:ODBC驱动允许支持ODBC协议的应用程序连接到Hive。

  • WUI 接口:是通过浏览器访问 Hive

  • Thrift服务器
    基于socket通讯,支持跨语言。Hive Thrift服务简化了在多编程语言中运行Hive的命令。绑定支持C++,Java,PHP,Python和Ruby语言

  • 解析器

    • 编译器:完成 HQL 语句从词法分析、语法分析、编译、优化以及执行计划的生成。
    • 优化器是一个演化组件,当前它的规则是:列修剪,谓词下压。
    • 执行器会顺序执行所有的Job。如果Task链不存在依赖关系,可以采用并发执行的方式执行Job。
  • 元数据库

    • Hive的数据由两部分组成:数据文件和元数据。元数据用于存放Hive库的基础信息,它存储在关系数据库中,如 mysql、derby。元数据包括:数据库信息、表的名字,表的列和分区及其属性,表的属性,表的数据所在目录等。
  • Hadoop

    • Hive 的数据文件存储在 HDFS 中,大部分的查询由 MapReduce 完成。(对于包含 * 的查询,比如 select * from tbl 不会生成 MapRedcue 作业)

2.1、运行机制

  • 用户通过用户接口连接Hive,发布Hive SQL
  • Hive解析查询并制定查询计划
  • Hive将查询转换成MapReduce作业
  • Hive在Hadoop上执行MapReduce作业

补充知识点

① 用户接口主要有三个:CLI,Client和WUI.其中最常用的是CLI,CLI启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive Server。在启动Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。WUI是通过浏览器访问Hive。

② Hive将元数据存储在数据库中,如mysql、derby。Hive中的元数据包括表的名字,表的列和分区以及属性,表的属性(是否为外部表等),表的数据所在目录等。

③ 解释器、编辑器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。

④ Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成

三、Hive应用场景

3.1、Hive设计特点

  • Hive 不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。
  • 支持索引,加快数据查询。
  • 不同的存储类型,例如,文本文件、序列化文件。
  • 将元数据保存在关系数据库中,减少了在查询中执行语义检查时间。
  • 可以直接使用存储在Hadoop 文件系统中的数据。
  • 内置大量用户函数UDF 来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF 函数来完成内置函数无法实现的操作。
  • 类SQL 的查询方式,将SQL 查询转换为MapReduce 的job 在Hadoop集群上执行。
  • 编码跟Hadoop同样使用UTF-8字符集。

3.2、Hive的优势

  • 解决了传统关系数据库在大数据处理上的瓶颈。适合大数据的批量处理。
  • 充分利用集群的CPU计算资源、存储资源,实现并行计算。
  • Hive支持标准SQL语法,免去了编写MR程序的过程,减少了开发成本。
  • 具有良好的扩展性,拓展功能方便。

3.3、Hive的劣势

  • Hive的HQL表达能力有限:有些复杂运算用HQL不易表达。
  • Hive效率低:Hive自动生成MR作业,通常不够智能。

针对Hive运行效率低下的问题,促使人们去寻找一种更快,更具交互性的分析框架。 SparkSQL 的出现则有效的提高了Sql在Hadoop 上的分析运行效率。

3.4、应用场景

适用场景

  • 海量数据的存储处理
  • 数据挖掘
  • 海量数据的离线分析

不适用场景

  • 复杂的机器学习算法
  • 复杂的科学计算
  • 联机交互式实时查询

学习笔记hive——hive应用——数据库定义创建表(代码片段)

一、任务讲解泰坦尼克号乘客信息存储与分析泰坦尼克号乘客信息存储与分析:创建乘客信息表导入数据到表中统计获救与死亡情况统计舱位分布情况统计港口登船人数分布情况统计性别与生存率的关系统计客舱等级与生存... 查看详情

hive学习笔记

Hive学习笔记1、Hive安装(只在主节点上安装) (1)下载安装包到/usr/app/目录下 (2)解压 (3)修改配置文件/etc/profile(添加 exportHIVE_HOME=/usr/local/hive-0.9.0-bin exportHADOOP_HOME=/usr/local/hadoop-0.20.2-cdh3u 查看详情

hive学习笔记_hive的表创建

创建hive表注意事项一、表分隔符必须与读取的数据文件一致,比如例子的分隔符为 ‘ ‘(制表符),hive下默认分隔符是制表符。二、最好指定分区作为数据之间的区分。三、创建完表可以desc+表明进行查看,字段名称(fiel... 查看详情

hive学习笔记——crud

1.首先需要安装Hadoop和HiveHadoop和Hive的own和grp都是HadoopHive的安装很简单,在清华镜像站下载Hive的二进制文件,然后解压到/usr/local目录下修改own和grp就行2.启动hive之前需要先启动Hadoop,启动后显示hive>  查看详情

hive系统性学习笔记

1.基础1.1DDLHive分桶Bucket1.2DML1.3函数Hive如何实现自定义函数UDFHive日期相关函数Hive如何使用GroupingSets1.4服务Hive元数据服务MetaStore2.原理3.调优HiveCountDistinct优化HiveJoin优化之MapJoin4.实战Hive安装与配置在Zeppelin中如何使用Hive 查看详情

hive系统性学习笔记

1.基础1.1DDLHive分桶Bucket1.2DML1.3函数Hive如何实现自定义函数UDFHive日期相关函数Hive如何使用GroupingSets1.4服务Hive元数据服务MetaStore2.原理3.调优HiveCountDistinct优化HiveJoin优化之MapJoin4.实战Hive安装与配置在Zeppelin中如何使用Hive 查看详情

学习笔记hive——自定义函数(代码片段)

一、自定义函数简介1.1、函数类型UDF:用户定义函数UDF操作作用于单个数据行,并且产生一个数据行作为输出。大多数函数都属于这一类(比如数学函数和字符串函数)UDAF:用户定义聚集函数UDAF接受多个输入... 查看详情

学习笔记hive——hive应用——hive查询(代码片段)

五、Hive查询5.1、创建职工信息表任务实现:1、创建表dept,emp和salgrade2、导入数据将数据emp.txt导入到表emp#emp.txt7369,SMITH,CLERK,7902,1980-12-17,800.00,,207499,ALLEN,SALESMAN,7698,1981-2-20,1600.00,300.00,307521,WARD,SALE 查看详情

学习笔记hive——hive应用——hive导入及导出数据(代码片段)

四、Hive导入及导出数据通过HDFS直接导入导出通过Hive命令导入导出4.1、Hive导入数据的语法LOADDATA[LOCAL]INPATH'filepath'[OVERWRITE]INTOTABLEtablename[PARTITION(partcol1=val1,partcol2=val2...)]LOCAL:导入语句带有LOCALÿ 查看详情

hive学习笔记(启动方式,内置服务)

一、Hive介绍  Hive是基于Hadoop的一个数据仓库,Hive能够将SQL语句转化为MapReduce任务进行运行。  Hive架构图分为以下四部分。     1、用户接口   Hive有三个用户接口:命令行接口(CLI):以命令行的形式输入SQL语... 查看详情

hive学习笔记

摘要:  Hive 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简... 查看详情

hadoop-hive学习笔记

createtablehive_1(idstring,namestring,genderstring)rowformatdelimitedfieldsterminatedby‘,‘storedasTEXTFILE;loaddatalocalinpath‘/luozt/hive_001.txt‘intotablehive_1;createEXTERNALtablehive_2(idstring,na 查看详情

hive自定义函数的学习笔记

 前言:   hive本身提供了丰富的函数集,有普通函数(求平方sqrt),聚合函数(求和sum),以及表生成函数(explode,json_tuple)等等.但不是所有的业务需求都能涉及和覆盖到,因此hive提供了自定义函数的接口,方便用户扩展.   自己好像... 查看详情

hive学习笔记(代码片段)

安装配置安装hive下载hive解压重命名添加环境变量Vi/etc/proflie使环境变量生效Source/etc/profile修改配置文件cphive-env.sh.templatehive-env.shHiveMetastore配置将自带的derby数据库替换为mysql数据库参考文章https://my.oschina.net/u/4292373/blog/3497563登录... 查看详情

学习笔记hive——hive安装配置(代码片段)

一、环境介绍环境描述4个Linux操作系统虚拟机使用centos7镜像配置安装java1.8以上版本安装Hadoop2.6.5以上版本安装MySQL5.1以上版本二、安装MySQL(这里我是CentOs7)安装教程链接:https://www.jb51.net/article/150557.htm1、安装完成... 查看详情

hive学习笔记-表操作

Hive数据类型基本数据类型tinyint,smallint,int,biging,float,double,decimal,char,varchar,string,binary,boolean,timestamp,date,引用数据类型Array:同样数据类型组合的数组,使用array[1]訪问MAP:Key-value键值对,通过键进行訪问,使用map[‘key‘]訪问STRUCT:... 查看详情

学习笔记hive——hive开发应用(代码片段)

一、任务1.1、商品零售购物篮分析现代商品种类繁多,顾客往往会由于需要购买的商品众多而变得疲于选择,且顾客并不会因为商品选择丰富而选择购买更多的商品。繁杂的选购过程往往会给顾客疲惫的购物体验。1.2、... 查看详情

hive简介及使用(代码片段)

...educe分布式计算->难度大hive->SQL语句mysql简化开发减少学习成本2、优缺点优点:(1)操作接口采用了sql,简化开发,减少学习成本( 查看详情