欢迎投稿

今日深度:

Hive 初识,

Hive 初识,


Hive 是一个构建在Hadoop上的数据仓库框架。可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能。

它把SQL查询转换为一系列MapReduce作业。元数据存储在 metastore 数据库中,数据库文件在 metastore_db 目录中。


hive -f  script   // 运行指定文件中的命令。

hive -e ‘SELECT * FROM xxx’  // 直接指定运行的命令。


可以把HDFS看做底层文件存储系统,如FAT,现在要实现一个数据仓库。当然需要管理仓库的元数据,再去访问底层文件系统。

这里metastore就是起到记录管理数据仓库元数据的目的。


与传统关系型数据库的区别

Hive为‘读时模式‘,即数据在被查询时才指定格式。而传统数据库在导入数据时就已经指定好格式,称为‘写时模式’。

读时模式在数据加载时很快速,因为只为复制与粘贴。而写时模式在查询时更快速,因为数据库对列进行了索引,并对数据进行了压缩。


Metastore(关系型数据库存储行列关系等)

metastore 是 Hive元数据的集中存放地。 metastore 包括两部分:服务和后台数据的存储。

metastore服务和Hive服务运行在同一JVM中,默认情况下此JVM还包含一个以本地磁盘为存储的Derby数据库。即Derby和Hive在同一 Hive Service JVM.

但这种情况只允许一个Hive对话。因为其他Hive对话使用不了Derby。

则可使用其他关系型数据库,比如 Mysql。来存储Hive的元数据。
这样Hive服务和metastore服务在同一JVM,而Mysql独立运行。这样可以处理多个Hive对话。


如果将数据完全交给Hive管理,Hive会把它们存储在/user/hive/warehouse 目录下。并自动压缩数据并加入特殊的目录结构以提高查询性能。

但Hive也可以直接处理HDFS其他目录中的数据,按照原样读取,保留格式。


HIve的结构




Hive+Mysql Local Metastore安装

这里安装local metastore模式,即Driver和Metastore在同一JVM,MySQL独立。

类似JDBC,需要配置MySQL的URI,指定JDBC的驱动类,及数据库用户名,密码。MySQL的URI直接指向具体数据库,需提前建立。

有关metastore的配置项是配置Remote metastore的,这里不需要。


安装后遇到java.net.URISyntaxException: Relative path in absolute URI 错误。

把hive-site.xml中含有"system:java.io.tmpdir"的配置项都改为/home/grid/hive-xxxx-bin/iotmp 后,ok了!这里需要先建立此文件夹。








www.htsjk.Com true http://www.htsjk.com/hive/41302.html NewsArticle Hive 初识, Hive 是一个构建在Hadoop上的数据仓库框架。可以将 结构化 的数据文件 映射 为一张 数据库表 ,并提供简单的 sql 查询 功能。 它把SQL查询转换为一系列MapReduce作业。元数据存...
相关文章
    暂无相关文章
评论暂时关闭