大数据开发之Hive篇----初始hive及hadoop简单回顾

我们先简单回顾一下hadoop:

a,Hadoop是什么:海量数据分布式的存储和计算框架。其中数据的存储是hdfs(Hadoop Distributed File System),而计算是yarn/mapreduce。

b,Hadoop的访问方式:shell,Java API,Web UI(50070端口),HUE

c,我们得出的结论:使用MapReduce来处理HDFS文件系统上的数据-----真心麻烦。一个框架如果最终不能落地到使用SQL处理,那么这个框架是不会受欢迎的。

好了,说了那么多话就是为了引出我们的hive来。

1,产生背景:MapReduce编程是及其不方便的,无论是开发测试的需求变更。同时,大量DBA对传统关系型数据库的操作的需求(他们总希望可以想写SQL一样处理大数据),所以就有了hive的出现了。而hive是处理存放在hdfs(s3,oss等也可以)上的数据,而且你是使用一种类SQL语言去处理它,过程当中需要将数据结构化,将文件映射成表格为其添加schema:元数据信息(metastore)。

2,hive是什么(hive的官网 hive.apache.org):一种数据仓库,但是数据实际上是存储在HDFS,s3,oss上的。其最早是Facebook开源的,用于解决海量结构化日志数据。其构建的Hadoop之上,数据直接存储在HDFS上,将输入的sQL语言翻译成MapReduce在YARN上跑。同时hive定义了一种HQL,这是一个类SQL语言,但两者没有半毛钱的关系了(这里记住了,千万不要说hive是玩SQL的,面试大忌啊)。hive一般是离线处理的,你想想数据仓库哪有什么实时的对吧。

刚开始的hive是hive on mapreduce,后来又变成了hive on spark,再后来又hive on Tez了。

3,hive过往比较重要的版本升级:

2007年,Facebook开源hive。2013年,0.11版本,出了格HiveServer2。同年,0.12版本,对其进行了升级。2014年,0.13版本,Tez和Vectorized query engine(向量式查询引擎)。同年,0.14版本,新增了格CBO优化器(Cost-based optimizer)。

4,为什么要使用hive:首先其使用语言类似于SQL,方便了大量的DBA人员的使用。其二,hive是架构在hadoop上面的,数据可以很好的横向扩展。第三,其元数据可以和Pig,Impala,Presto,SparkSQL等共享。

5,部署架构:Hive确切点来说是一个客户端(他其实没有什么集群不集群的概念的)。当client使用Hive写好了HQL后,Hive将HQL翻译成mapreduce并提交到RM上面去,而所操作的数据就来自DN上的。Hive为HDFS上的文本格式数据添加的元数据后,这些元数据就存储在一些传统的关系型数据库之上的,而我们一般习惯使用MySQL(一主一备来部署)。

6,Hive和RDBMS的关系:语言上都是类似于SQL的,Hive的实时性很差,Hive上面是没有事物机制的(没必要),Hive是操作在分布式框架上的。

猜你喜欢

转载自blog.csdn.net/weixin_39702831/article/details/83142631
今日推荐