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和临时文件存储目录tmp | 5 | 配置hive-site.xml,配置hive的一些相关信息(拷贝自带模板,重命名) | 6 | 启动Hive |
散仙重点要说的是,关于3,4,5的配置,mysql的安装其实很简单,在这里不再介绍,首先我们要拷贝hive-env.sh.template重命名为hive-env.sh并向其中,加入hadoop的目录路径截图如下:
其次,我们要在HDFS上创建,对应的hive的table的存放位置目录,截图如下:
接下来,我们需要最重要的东西了,hive-site.xml,重命名hive-default.xml.template为hive-site.xml,修改其中几项即可:
<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,并尝试建表操作了,截图如下:
最后,退出的命令,使用exit即可。