Hive简介:
Hive是基于Hadoop的一个数据仓库管理工具,可以将结构化的数据文件映射为数据库表,提供sql查询统计功能(Hive 定义了简单的类 SQL 查询语言,称为 HQL),其底层实现是:将SQL语句转换为MapRecuce程序任务执行对应的查询功能(Yarn集群启动)。
为什么要使用hive?
用户只需要在Hive中建立表和结构化数据之间的映射,就可以是实现各类复杂的数据查询统计功能,而这些功能通过编写MapReduce实现起来比较复杂,编写效率也不高。况且编写MR程序门槛也高,得有一定的编程功底。
实现同样的查询统计功能,Hive只要简单的SQL语句(通过Hive框架转换为对应的MapReduce程序,并对其优化,最后提交Hadoop运行。),而编写MapReduce程序往往需要很长时间才能实现,若经验不足,编写的程序运行效率往往不高。
Hive的使用场景:
Hive 的查询任务往往转换为MR程序提交Hadoop集群运行,那就不能指望快速响应,所以不适合那些需要低延迟的应用:联机事务处理(OLTP),web应用中查询模块的后台实现(往往要求秒级响应)。
Hive往往做为数据仓库管理的工具,数据仓库中的数据往往很少进行更改,或者不更改,可以用来做联机分析处理(OLAP);
Hive往往用来处理GB,TB,PB级别的数据离线分析查询,所以查询结果在20分钟左右响应结果是正常的。
Hive 体系结构如下:
客户端接口:
有基于命令行的:CLI (单用户模式,多用户模式);
通过Hive提供的 JAVA JDBC/ODBC API通过 Thrift提供的服务(Thrift Server)提交查询任务;
通过HIVE提供的web项目管理监控HIVE(下载对应程序拷贝到HIVE里):Web UI
元数据库
用来管理Hive中数据库,表及对应的HDFS映射目录等等信息;(往往用MySQL作为元数据信息管理)
Driver
是Hive客户端和Hadoop集群之间工作的桥梁纽带。Hive客户端的请求通过Driver组件转换为最终的提交Hadoop集群运行的MR任务。
包括:解析器,编译器,MR任务优化器,执行器(辑执行计划转换成物理执行计划,如:生成MR,Spark任务等)
安装配置步骤:
1.拷贝下载包到Hadoop集群中的任意一台服务器上进行解压。
如:tar -zxvf apache-hive-2.1.1-bin.tar.gz
mv apache-hive-2.1.1-bin hive
2.配置Hive
cd /opt/mysoft/hive/conf
mv hive-env.sh.template hive-env.sh
vi hive-env.sh //修改启动配置项:
//若当前机器上已经配置了JAVA_HOME环境变量,则可以省略(一般都配置过了)
export JAVA_HOME=/opt/mysoft/jdk
export HADOOP_HOME=/opt/mysoft/hadoop
export HIVE_CONF_DIR=/opt/mysoft/hive/conf
export HIVE_AUX_JARS_PATH=/opt/mysoft/hive/bin
3.进入到hive/conf目录下,创建hive-site.xml配置文件(连接mysql数据,前提要先安装mysql)
configuration>
<property>
<name> javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/myHive?createDatabaseIfNotExist=true</value>
</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>root</value>
<description>Username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
</configuration>
4.把mysql驱动jar包(mysql-connector-java-5.1.41-bin.jar)放到hive/lib目录下
5.初始化Hive (Hive2以后要求先初始化)
.bin/schematool -initSchema -dbType mysql
6.启动Hive
./bin/hive