Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
Hive要运行Hadoop伪分布式上,请确保Hadoop已经成功运行。
hive有一套映射工具,可以把SQL转换为MapReduce中的job,可以把SQL中的表、字段转换为HDFS中的文件(夹)以及文件中的列。
这套映射工具称之为metastore,一般存放在derby、mysql中。
Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。而在HDFS中,Hive的数据就存储在这里,利用MapReduce来调用执行。
默认情况下,Hive元数据保存在内嵌的 Derby 数据库中,只能允许一个会话连接,只适合简单的测试。为了支持多用户多会话,则需要一个独立的元数据库,我们使用 MySQL 作为元数据库,Hive 内部对 MySQL 提供了很好的支持。
安装Hive
brew install hive
配置Hive
- JDBC驱动放置在hive/lib目录下(JDBC驱动程序mysql-connector-java-x.x.x-bin.jar文件的下载地址),还要把jline-2.12.jar拷贝到hadoop相应目录下命令如下:
# Mac中利用Homebrew安装Hive,目录跟随所安装的Hive目录变动 mv ~/下载/mysql-connector-java*.jar /usr/local/Cellar/hive/2.1.0/libexec/lib # 把jline-2.12.jar拷贝到hadoop相应目录下 cp /usr/local/Cellar/hive/2.1.0/libexec/lib/jline-2.12.jar /usr/local/Cellar/hadoop/2.8.2/libexec/share/hadoop/yarn/lib
- 修改hive配置文件
Hive安装好后,是没有自带hive-site.xml文件。
首先复制hive-default.xml.template到hive-default.xml作为全局配置文件.自己创建hive-site.xml作为可覆盖配置文件。cd /usr/local/Cellar/hive/2.1.0/libexec/conf cp ./hive-default.xml.template ./hive-default.xml touch hive-site.xml
hive在hdfs中的默认位置是/user/hive/warehouse,是由配置文件hive-conf.xml中属性hive.metastore.warehouse.dir决定的.这里不做改动。
编辑hive-site.xml文件,添加如下内容:<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> <description>password to use against metastore database</description> </property> </configuration>
在确保mysql已正常运行,执行如下命令检测hive是否安装成功。
hive
安装成功后,mysql的hive元数据存在如下表格: