Hadoop教程

安装Hive

一般情况下,Hive在工作站上运行。它把SQL查询转换为一系列在Hadoop集群 上运行的MapReduce作业。Hive把数据组织为表,通过这种方式为存储在HDFS 的数据赋予结构。元数据————如表模式————存储在名为metastore的数据库中。

刚开始使用Hive时,为了方便,可以让metastore运行在本地机器上。这一设置是 默认设置。此时,创建的Hive的表的定义在本地机器上,所以无法和其他用户共 享这些定义。

安装Hive的过程非常简单。首先必须有Java 6。在Windows环境下,还需要 Cygwin。需要在本地安装和集群上相同版本的Hadoop。当然,在刚开始使用Hive时,你可能会选择在本地以独立模式或伪分布模式运行Hadoop。

Hive能和哪些版本的Hadoop共同工作?

每个Hive的发布版本都被设计为能够和多个版本的Hadoop共同工作。一般而 言,Hive支持Hadoop最新发布的版本以及向前若干个版本。例如,Hive 0.5.0 和Hadoop 0.17.x和0.20.x间(包括0.17.x和0.20x)的所有版本兼容。只要确保 Hadoop可执行文件在相应的路径中,或设置HAD00P_H0ME环境变量,从而不 必另行告诉Hive当前正在使用哪个版本的Hadoop。

从 http://hadoopMpache.org/hive/releases.html 下载 Hive 的一个发布版本,然后把压 缩包解压到工作站的合适位置:

% tar xzf hive-x.y.z-dev.tar.gz

把Hive放在你自己的路径下以便于访问:

% export HIVE_INSTALL=/home/tom/hive-x.y.z-dev % export PATH=$PATH:$HIVE_INSTALL/bin

现在,键入hive启动Hive外壳环境(shell):

% hive hive>

Hive外壳环境

外壳环境是我们和Hive进行交互、发出HiveQL命令的主要方式。HiveQL是Hive 的查询语言。它是SQL的一种“方言”(dialect)。它的设计受到MySQL很多的影 响。因此,如果熟悉MySQL,你会觉得Hive很亲切。 第一次启动Hive时,,我们可以通过列出Hive的表来检査Hive是否正常工作:此 时应该没有任何表。命令必须以分号结束,以吿诉Hive立即执行该命令:

hive> SHOW TABLES;0KTime taken: 10.425 seconds

和SQL类似,HiveQL 一般是大小写无关的(除了字符串比较以外),因此showtable;和上面的命令有同样的效果。

对于全新的安装,这个命令会花几秒钟来执行。因为系统采用“懒”(lazy)策略, 所以直到此时才在你的机器上创建metastore数据库。该数据库把相关文件放在你 运行的hive命令所在位置下名为metastore_db的目录中。 也可以以非交互式模式运行Hive的外壳环境。使用-f选项可以运行指定文件中的 命令。在这个示例中,我们运行脚本文件%script.q:

% hive -f script.q

对于较短的脚本,可以使用-e选项在行内嵌人命令。此时不需要表示结束的分号

% hive -e ’SELECT * FROM dummy’Hive history file=/tmp/tom/hive_job_log_tom_201005042112_1906486281.txt OK XTime taken: 4.734 seconds

% echo 'X' > /tmp/dummy.txt% hive -e ” CREATE TABLE dummy (value STRING); \LOAD DATA LOCAL INPATH Vtmp/dummy.txt'\OVERWRITE INTO TABLE dummy"

无论是在交互式还是非交互式模式下,Hive都会把操作运行时的信息打印输出到 标准错误输出(standard error) 例如运行一个查询所花的时间。可以在启动程序 的时候使用-5选项强制不显示这些消息,其结果是只输出查询结果:

% hive -S -e'SELECT * FROM dummy'X

其他的较有用的Hive外壳程序的特性包括:使用a!前缀来运行宿主操作系统的命 令;使用dfs命令来访问Hadoop文件系统。

关注微信获取最新动态