是什么?
hive,是基于hadoop的数据仓库,用于处理结构化数据。适合做OLAP。存储数据结构(schema)在数据库中,处理数据进入hdfs。
大量的MR任务繁重,为了简化编写MR的工作量,hive提供了一个框架,可以把一个类似sql的查询语句翻译成MR程序,然后把job提交到hdfs上进行查询;到hdfs上查询哪个表呢?这就是hive提供的另一个功能,把hdfs的一个文件,映射成一张hive表,在查询时就是把job在hdfs上处理该文件。
那么hive表和hdfs的映射关系要怎么记录呢?hive在进行表映射的时候使用mysal记录hive表和hdfs文件的映射关系(使用mysql存储元数据)
hive负责把类似sql的查询语句翻译成MR程序;mysql存储表和待查询文件的映射关系;HDFS上运行这些HDFS程序;
建立一张表hive内部的工作机制:mysql记录表定义,在hdfs中创建目录,把数据存储到目录就可以进行数据处理。
数据库和数据仓库:
数据库和数据仓库从本质上来说是一致的,都是基于某种模型来组织、管理数据。只是两者的使用场景不同,数据库更关注业务交易处理(OLTP)是业务性数据库,而数据仓库更关注数据分析处理(OLAP)属于分析性数据库,所以两者的数据库模型会有很大差异。
数据库通常追求交易的速度、完整性、数据的一致性等,数据库模型遵从范式模型,尽量减少数据冗余,保证引用完整性;而数据仓库强调数据分析的效率,复杂查询的速度以及数据之间的相关性分析,在数据库模型上,数据仓库喜欢使用多维模型,从而提高数据分析的效率。
讨论数据库和数据仓库的区别,其实是在讨论OLTP和OLAP:
数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
OLTP:联机事务处理。负责基本业务的正常运转。也可以称面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发的支持用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。
OLAP:联机分析处理。负责发现在业务数据积累时产生的价值。一般针对某些主题历史数据进行分析,支持管理决策。
hive 安装部署
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.1.8:3306/hive?createDatabaseIfNotExist=true</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>admin</value> </property> </configuration>