hive是基于Hadoop的一个数据仓库工具

Shibuwodai 2016-01-16

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

Hive最早由facebook开源,最初用于解决海量结构化的日志数据统计问题,是一个ETL工具,
Hive的一些应用场景如下:
日志分析
  统计网站一个时间段内的pv、uv
  多维度数据分析
  大部分互联网公司使用Hive进行日志分析,包括百度、淘宝等
其他场景
  海量结构化数据离线分析
  低成本进行数据分析(不直接编写MR)


本篇,散仙来介绍下Hive的安装与部署,Hive并不是一个分布式的系统,所以它的安装相对来说,还是比较容易的,在Hive安装之前,确保你的hadoop环境已经成功搭建,并可以正常启动,散仙的配置版本是,hadoop1.2.0的版本,hive0.10的版本。

我们,先来总结下Hive的安装步骤:

序号描述1安装配置MySQL数据库,(默认是derby)2放一个mysql的JDBC连接的jar包,到hvie/lib里面3在hive-env.sh里面加入hadoop的目录路径(拷贝自带模板,重命名)4在HDFS上创建Hive的主目录hive和临时文件存储目录tmp5配置hive-site.xml,配置hive的一些相关信息(拷贝自带模板,重命名)6启动Hive


散仙重点要说的是,关于3,4,5的配置,mysql的安装其实很简单,在这里不再介绍,首先我们要拷贝hive-env.sh.template重命名为hive-env.sh并向其中,加入hadoop的目录路径截图如下:

hive是基于Hadoop的一个数据仓库工具

其次,我们要在HDFS上创建,对应的hive的table的存放位置目录,截图如下:
hive是基于Hadoop的一个数据仓库工具
接下来,我们需要最重要的东西了,hive-site.xml,重命名hive-default.xml.template为hive-site.xml,修改其中几项即可:

Xml代码 hive是基于Hadoop的一个数据仓库工具 hive是基于Hadoop的一个数据仓库工具hive是基于Hadoop的一个数据仓库工具
  1. <configuration>  
  2. <property>    
  3. <!-- MySQ的URL配置 -->  
  4.   <name>javax.jdo.option.ConnectionURL</name>     
  5.   <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>    
  6. </property>   
  7. <!-- 数据库的用户名配置-->   
  8. <property>    
  9.   <name>javax.jdo.option.ConnectionUserName</name>    
  10.   <value>root</value>    
  11. </property>   
  12. <!-- 此处JDBC的驱动务必加上,对应的数据配置对应的驱动-->  
  13. <property>    
  14.   <name>javax.jdo.option.ConnectionDriverName</name>    
  15.   <value>com.mysql.jdbc.Driver</value>    
  16.   <description>Driver class name for a JDBC metastore</description>    
  17. </property>    
  18. <!-- 数据库密码配置-->  
  19. <property>    
  20.   <name>javax.jdo.option.ConnectionPassword</name>    
  21.   <value>root</value>    
  22. </property>  
  23. <!-- HDFS路径hive表的存放位置-->  
  24. <property>  
  25.   <name>hive.metastore.warehouse.dir</name>  
  26.   <value>/root/hive</value>  
  27. </property>  
  28. <!--HDFS路径,用于存储不同 map/reduce 阶段的执行计划和这些阶段的中间输出结果。 -->  
  29. <property>  
  30.   <name>hive.exec.scratchdir</name>  
  31.   <value>/root/tmp</value>  
  32. </property>  
  33. <property>  
  34.   <name>mapred.child.java.opts</name>  
  35.   <value>-Xmx4096m</value>  
  36. </property>  
  37. <!-- 日志的记录位置-->  
  38. <property>  
  39. <name>hive.querylog.location</name>  
  40. <value>/root/hive-0.10.0/logs</value>  
  41. </property>  
  42. </configuration>   
<configuration>
<property>  
<!-- MySQ的URL配置 -->
  <name>javax.jdo.option.ConnectionURL</name>   
  <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>  
</property> 
<!-- 数据库的用户名配置--> 
<property>  
  <name>javax.jdo.option.ConnectionUserName</name>  
  <value>root</value>  
</property> 
<!-- 此处JDBC的驱动务必加上,对应的数据配置对应的驱动-->
<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.ConnectionPassword</name>  
  <value>root</value>  
</property>
<!-- HDFS路径hive表的存放位置-->
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/root/hive</value>
</property>
<!--HDFS路径,用于存储不同 map/reduce 阶段的执行计划和这些阶段的中间输出结果。 -->
<property>
  <name>hive.exec.scratchdir</name>
  <value>/root/tmp</value>
</property>
<property>
  <name>mapred.child.java.opts</name>
  <value>-Xmx4096m</value>
</property>
<!-- 日志的记录位置-->
<property>
<name>hive.querylog.location</name>
<value>/root/hive-0.10.0/logs</value>
</property>
</configuration>


至此,配置部分已经完毕,下面我们就可以启动hive,并尝试建表操作了,截图如下:

hive是基于Hadoop的一个数据仓库工具


最后,退出的命令,使用exit即可。

相关推荐