【若泽大数据实战第十四天】Hive快速入门以及Hive部署安装

你认为现在HDFS、YARN 还存在哪些致命的地方?
首先nm和rm是单点的,只要这个节点挂了,整个hdfs或者yarn都不能提供工作了。
单点故障:生产上面任何一个环节必须是HA(高可用)
以后学习任何的框架的时候,都要去思考:这个框架的单点故障怎么去解决。

 

Hive

Hive是Apache的*项目   

网址是:hive.apache.org

Hive源码网址:https://github.com/apache/hive

(其它项目修改一下名称即可,比如:https://github.com/apache/hadoop

 

一个项目要经过一个发展的过程,一个孵化的过程,才有可能成为apache的*项目。
孵化的项目网址是:xxx.incubator.apache.org/
*的项目网址是:xxx.apache.org/

孵化的项目:调研可以、生产慎用

孵化项目举例: http://livy.incubator.apache.org/
 

github.com/apache/hive

 

看官网解释:

【若泽大数据实战第十四天】Hive快速入门以及Hive部署安装

(Apache Hive™数据仓库软件使用SQL语句便于读取,写入和管理驻留在分布式存储中的大型数据集。操作结构化数据。提供给用户命令行工具和JDBC驱动程序以连接到Hive)

从上面解释可以看出:它是数据仓库data warehouse。它是构建在分布式存储之上的。

再看:

【若泽大数据实战第十四天】Hive快速入门以及Hive部署安装

从上面解释可以看出:它以前是apache hadoop的一个子项目,并不是单独的,但是现在成为了一个*项目,是独立的。它是开源的,如果你觉得什么地方有问题,你可以去修改,然后把修改后的代码提交给社区,如果你的改动被社区所接受,它会把你的代码合并到源码里面去。如果你修改了之后,你的代码被merge到源码里面后,你就成为了container贡献者了。commits更厉害一些。

Hive:https://github.com/apache/hive

【若泽大数据实战第十四天】Hive快速入门以及Hive部署安装

 

 

Hive是构建在Hadoop之上的数据仓库,可以分为三部分去理解:
    数据:存储在HDFS上
    执行:用MapReduce(2.0 过时)去执行。(它的执行效率比较低不理想) (由于它不理想,后来底层可以用Spark/Tez来运行。) 
    运行:在YARN上面运行

问题;hive能够运行在哪些执行引擎之上?答:MapReduce、Spark、Tez

MapReduce从2.0(apache,不是cdh)开始已经标识为过时,可以用,但是不推荐。

hive:就是使用SQL来搞定大数据的处理分析。

如果一个框架最终不能落地SQL,那么这个框架就有待选择。对于公司的产品/数据平台:必须提供一种SQL的方式,不然销售不出去的。

 

【若泽大数据实战第十四天】Hive快速入门以及Hive部署安装

【若泽大数据实战第十四天】Hive快速入门以及Hive部署安装

Hive部署安装:

前置条件:

【若泽大数据实战第十四天】Hive快速入门以及Hive部署安装

这里用的hive版本是:hive-1.1.0-cdh5.7.0

hadoop版本下载:wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0.tar.gz
hive版本下载:      wget http://archive.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.7.0.tar.gz

①下载:

【若泽大数据实战第十四天】Hive快速入门以及Hive部署安装

②解压

【若泽大数据实战第十四天】Hive快速入门以及Hive部署安装(解压到指定目录,注意哪个用户解压的)

【若泽大数据实战第十四天】Hive快速入门以及Hive部署安装

【若泽大数据实战第十四天】Hive快速入门以及Hive部署安装(目前只关心bin和conf就足够了)

③设置环境变量

把bin加入到环境变量里面去,这样可以在任意窗口使用任意命令。

vi ~/.bash_profile
export HIVE_HOME=/home/hadoop/app/hive-1.1.0-cdh5.7.0
export PATH=$HIVE_HOME/bin:$PATH

source ~/.bash_profile

(注意编辑完成之后需要source生效,新打开的窗口无所谓,其它之前打开的窗口也需要source之后才能生效。)

 

备注:hive的数据data是存放在HDFS上的,那么ruozeinput.txt 就是一个普通的不能再普通的文本文件,它是没有schema信息的。hive的数据是在hdfs上的,但是描述这些数据的元数据信息是存放在mysql(市场上90%以上都是用mysql)里面的,所以安装好hive之后还需要配置元数据信息,告诉hive如何能访问到mysql数据库。
 schema信息是 table/database/column(name/type/index)。
 元数据信息  metadata:是描述数据的数据。

访问mysql需要哪些条件?URL、用户user、密码password、mysql驱动driver(每个软件都有驱动)。

④拷贝mysql的驱动到lib下

在hive解压后,lib下是没有mysql驱动的,所以需要拷贝mysql的驱动到lib下。

cp mysql-connector-java.jar  ~/app/hive-1.1.0-cdh5.7.0/lib/

⑤hive-site.xml配置mysql相关信息(一开始没有这个文件,需要从创建一个或者从其它地方copy一个)

/home/hadoop/app/hive-1.1.0-cdh5.7.0/conf/hive-site.xml

 

<property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/ruoze_d6?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8</value>
</property>

<property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
 </property>

<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
</property>

<property>
     <name>javax.jdo.option.ConnectionPassword</name>
    <value>root</value>
</property>
【若泽大数据实战第十四天】Hive快速入门以及Hive部署安装

【若泽大数据实战第十四天】Hive快速入门以及Hive部署安装

用mysqladmin用户进mysql,看一下:出现了ruoze_d6这个数据库

【若泽大数据实战第十四天】Hive快速入门以及Hive部署安装

 

hive补充了解:

【若泽大数据实战第十四天】Hive快速入门以及Hive部署安装

mysql会出现单点故障问题

怎么解决?主备(相当于会同时存在两个mysql,如果有一个出现问题,另一个备用的立马切换过来使用)

 

hive是一个客户端,不存在集群的概念。虽然它没有集群的概念,但是在生产上面,它也要部署多个。

 

Hive提供了一种类SQL的语法 Hive QL,它里面的SQL和关系型数据库的SQL是没有关系的,只是语法上很相似而已。

Hive vs RDBMS 对比(面试)

SQL:都可以用SQL

事物:RDBMS是事物,hive也可以但是最好不用

insert/update:hive高版本支持,但是性能特别差;RDBMS当然支持。

底层分布式:hive底层的执行引擎(MapReduce)是分布式的,节点可以有很多很多;RDBMS也可以支持,但是对节点是有限制的,多了之后就不行了。

机器:hive、hadoop一般构建在廉价的机器上面,但是RDBMS是部署在专用的机器上面。

数据量:大数据可以到P以及更多,但是RDBMS到G。

速度:hive底层是MapReduce,快不哪里去,它都是跑离线任务的。hive的延时性非常高,关系型数据库延时性非常低。

hive:离线批处理,延时性很高。

 

大数据不怕数据量大,就怕数据倾斜!!!