Hadoop流:最简单的M-R
具体可以参见Hadoop权威指南的第二章,主要是为了非java程序员方便使用。下面使用的是ruby脚本
Hive
数据仓库工具,可以把Hadoop的原始结构化数据变成Hive中的表。支持一种与SQL几乎完全相同的语言HiveQL,除了不支持更新、索引和事务,几乎SQL的其他特征都支持。可以看成是SQL到Map-Reduce的映射器。提供shell,JDBC/ODBC,Thrift,Web等接口。
起源于Facebook由Jeff HammerBacher领导的团队,构建在Hadoop上的数据仓库框架,设计目的是让SQL技能良好,但java技能较弱的分析师可以查询海量数据。2008年Facebook把Hive项目贡献给Apache。
Hive组件和体系架构
Hive安装:
1. 内嵌模式:元数据保持在内嵌的Derby模式,只允许一个回话连接
2. 本地独立模式:在本地安装MySQL,把元数据放到MySQl内
3. 远程模式:元数据放置在远程的MySQL数据库。
内嵌模式
- 下载Hive,解压到安装位置
- 配置Hive在 hive-config.sh文件末尾中添加内容:export JAVA_HOME = usr/lcoa/jdk export HIVE_HOME=/usr/loca/hive export HADOOP_HOME=/usr/lcoa/hadoop
- 根据hive-default.xml复制hive-site.xml,配置hive-site.xml文件内容:hive.metastore.warehouse.dir:HDFS上的数据目录hive.exec.scratchdir:HDFS上的临时文件目录默认值是/tmp/hive-${user.name} ,hive.metastore.warehouse.dir模式是/user/hive/warehouse
- 改变/usr/loca/hive的目录所有者为Hadoop chown -R hadoop:hadoop /usr/local/hive
- 配置hive的log4 j:cp /usr/local/hive/conf/hive-log4j.properties.template /usr/local/hive/conf/hive-log4j.properties,将其中的一个内容进行修改:org.apache.hadoop.metrics.jvm.EventCounter 该为org.apache.hadoop.log.metrics.EventCounter
- 启动hive 使用Hadoop用户登录执行/usr/local/hive/bin/hiv
- 安装MySQL并启动服务,在MySQL中为Hive建立账号,并授权足够的权限,例如all privileges
- 在上述账号登录MySQL,然后创建数据库,例如hive用于存放hive的元数据
- 在本地安装MySQL客户端
- 配置hive-site.xml文件指出本地MySQL数据库,已经连接协议,账号,口令等
- 把MySQL-connector-java.x.x.x.jar复制到hive的lib目录下
- 启动hive能进入shell表示成功
- 启动 hive的Thrift Server,否则连接hive的时候会报connection refused的错误。启动命令:hive --service hiveserver (以后台形式启动而不是shell)
- 新建java项目,将hive/lib/下的所有jar包和Hadoop的核心jar包Hadoop-0.20.2-core-jar添加到项目的类路径上。
- 连接过程,样板代码如下:
Hive的Web接口
假设hive部署在10.20.151.71机器上,conf/hive-default.xml文件都是默认值,那么在浏览器中直接输入http://10.20.151.71:9999/hwi就可以访问了。
Hive的数据放在 HDFS的warehouse目录下,每一个表对应一个子目录。本地的/tmp目录存放日志和执行计划。Hive的UDF可以参考Hadoop权威指南的介绍。