【大数据学习】之Hive初认识

1、Hive 产生的背景:

a.MapReduce编程不方便:开发、测试、需求变更;

b.传统关系型数据库人员的需要,DBA:我就像使用sql一样的方式来处理分析大数据,不需要用mapreduce,那就好了。

所以基于以上两点,Hive就出来了。

另:文件存放在HDFS之上的,那么如果你想使用SQL去处理它,需要一个什么前提?

需要的前提就是结构化、文件映射成表格 ==> Schema  元数据信息(metastore) 。

什么叫Schema?可以理解为是库名、表名、字段名等信息,即元数据信息(metastore)。

2、Hive是什么

a.去官网看看:hive.apache.org 

Hive其实就是:使用sql对分布式文件系统里的大的数据集进行读、写管理的数据仓库。

data warehouse  ---数据仓库

分布式存储有:HDFS、S3、OSS

b.hive是构建在Hadoop之上的数据仓库 

Hive通常用于离线处理,就是写sql,流程:SQL =====Hive=====MapReduce/Spark/Tez===>YARN
另:Hive诞生之初的流程,SQL =====Hive=====MapReduce===>YARN ,随着后续的发展,就会很慢,为什么执行性能慢呢,是mapreduce执行的模型导致的,因为所有的map task和reduce task都是以进程的方式进行的,要启动进程、销毁进程,所以就非常慢。即使开启gvm,用完还要关闭,成本很高。

c.Hive定义了SQL语言:HQL  (类SQL)

d.Hive所支持的执行引擎:MapReduce、Spark、Tez
    Hive on MapReduce
    Hive on Spark
    Hive on Tez

3、为什么要使用Hive

    1) 从SQL角度,简单、容易上手、使用方便。 
    2) 从Hadoop角度,可以操作大规模的数据集,可以作为大数据的引擎。
    3) 从MetaStore角度:有了这个之后,这些框架Pig/Impala/Presto/SparkSQL跟Hive可以共享元数据信息,
         共享元数据即他们之间的元数据可以互通访问的,比如在Hive创建一张表,可以在SparkSQL能用,也可以在 Presto,Impala,Pig用。相反,在SparkSQL创建的表,在HIVE,Pig,Impala,Presto也能用。因为他们底层都是共享MetaStore。

4、Hive部署架构

Hive其实是一个客户端,没有集群概念。比如有10个hadoop节点,可以在任意节点上布置Hive,但是多个Hive并不是集群的概念,是客户端而已。Metastore可以理解为数据库。其实在生产中,元数据信息就是使用MySQL的。

下图为Hive部署架构图

在hive里面有内置的数据库derby,但基本不会用,因为存在致命的问题:只支持单用户,只能连一个。所以生产上一定使用RDBMS作为Metastore的,通常用mysql,oracle理论上也是可以的。

       另外要注意,如果只部署一个mysql的话,会有单点故障,即如果该mysql挂掉了,整个架构都不能运行了,所以生产上要部署两个mysql。

5、Hive与RDBMS的关系

    SQL: Hive QL和SQL的关系,HQL是类SQL,两者没有关系的,只是按照SQL的标准做的,相似而已。
    实时性
    事务
    分布式:mysql支持分布式。
    数据量

6、Hive部署 (参考本人的另一篇博客 “【大数据学习】之Hive部署 ”)

7、Hive快速入门

启动Hive(注意要先启动hdfs、yarn服务),用语句查询测试一下

a.创建一张表ruoze_helloworld
create table ruoze_helloworld(id int,name string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

show tables;  #已经成功了

b.创建表成功后,就可以加载数据进去。
local是指linux机器,并不是hdfs,如果没有local,就表示hdfs
load data local inpath '/home/hadoop/data/helloworld.txt' overwrite into table ruoze_helloworld; 

c.查询一下该表是否有数据

select count(*) from ruoze_helloworld; # 查一下,这时就跑mapreduce作业了

看看web页面,http://192.168.163.128:8088/cluster ,看看作业是否提交,见下图,已经提交到web上了。

 

猜你喜欢

转载自blog.csdn.net/qq_35826412/article/details/83179144