Hive 1.0.0简介与安装

Hive简介

Hive是由Facebook的数据组开发维护的,在Facebook内部使用之后,被移交给Apache基金会。

Hive是建立在Hadoop之上的数据仓库,其使用MapReduce对存储于HDFS之上的数据进行分析。
Hive可以缩短MapReduce的开发周期,它定义了一种类SQL的查询语言,称之为HiveQL.Hive使用HiveQL表述查询操作,并立即将其自动转化为一个或者多个MapReduce作业。
Hive技术在操作层面存在的最大的限制是:执行查询语句的效率很低,任务是高延迟性的。
Hive不提供数据排序和查询cache功能,不提供在线事务处理,也不提供实时的查询和记录级的更新。
Hive最大的价值是可扩展性(基于Hadoop平台,可以自动适应机器的数目和数据量的动态变化),可延展性(结合MapReduce和用户定义的函数库),良好的容错性和低约束的数据输入格式。
Hive系统中不存在主节点,从节点,其以客户端应用程序的形式运行,负责处理HiveQL语句,将查询语句转换成MapReduce作业,并将作业提交到Hadoop集群。
通常情况下,Hive需要一个现有的正在运行的Hadoop集群来配合运行MapReduce作业。

Hive可以在符合下列条件的任何主机上执行:
(1)安装了Hadoop的主机(即使主机上没有正在运行的进程);
(2)把HADOOP_HOME环境变量的值设定为Hadoop的安装目录的主机;
(3)系统路径或用户路径中出现${HADOOP_HOME}/bin目录的主机。


Hive安装

1.解压缩安装包
sudo tar -zxvf apache-hive-1.0.0-bin.tar.gz -C /opt

2.简化解压缩后的文件夹名
sudo mv apache-hive-1.0.0-bin/ hive

3.添加Hive的安装路径到环境变量
在/etc/profile文件中添加如下内容:
export HIVE_HOME=/opt/hive
export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH
在当前终端输入source /etc/profile 使环境变量对当前终端生效。

4.修改Hive的配置文档
若不进行修改,Hive将使用默认的配置文档。$HIVE_HOME/conf/hive-site.xml对应的是Hive工程的配置文档,默认该配置文档不存在,需要手动创建。创建命令如下所示:
cd $HIVE_HOME/conf
cp hive-default.xml.template  hive-site.xml

hive-default.xml.template为系统提供给的配置文档模板,其中填写的是默认的配置参数。


Hive的主要的配置项有:
hive.metastore.warehouse.dir:指定Hive的数据存储目录,是在HDFS上的位置,默认值为/user/hive/warehouse
hive.exec.scratchdir:指定Hive的数据零时文件目录,默认值为/tmp/hive-${user.name}
以及连接数据库配置,Hive需要将元数据存储在RDBMS中,在默认情况下,Hive已经配置好了Derby数据库的连接参数,并且集成了Derby数据库及其连接驱动的jar包。

5.运行Hive
首先启动Hadoop,进入Hive安装目录,命令行输入bin/hive即可启动连接Hive,执行bin/hive后出现如下错误:
cannot find hadoop installation: $HADOOP_HOME or $HADOOP_PREFIX must be set or hadoop must be in the path
解决办法:

cd /opt/hive/conf/
cp hive-env.sh.template hive-env.sh
然后在hive-env.sh文件里加下面的内容:
export HADOOP_HOME=/opt/hadoop/

再次执行bin/hive后出现如下错误:

Logging initialized using configuration in jar:file:/opt/hive/lib/hive-common-1.0.0.jar!/hive-log4j.properties

Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException:

The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rwx--x--x

......

错误报告要赋予HDFS上/tmp/hive写权限,进行如下操作赋予/tmp/hive写权限,

caiyong@caiyong:/opt/hadoop$ bin/hadoop fs -ls /tmp/


Found 1 items
drwx--x--x   - caiyong supergroup          0 2015-03-10 19:11 /tmp/hive
caiyong@caiyong:/opt/hadoop$ bin/hadoop fs -chmod go+w /tmp/hive

caiyong@caiyong:/opt/hadoop$ bin/hadoop fs -ls /tmp/
Warning: $HADOOP_HOME is deprecated.

Found 1 items
drwx-wx-wx    - caiyong supergroup          0 2015-03-10 19:11 /tmp/hive

再次执行bin/hive后又出现如下错误:
Logging initialized using configuration in jar:file:/opt/hive/lib/hive-common-1.0.0.jar!/hive-log4j.properties

Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: java.net.URISyntaxException:

Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D

......


错误表明在此不能使用相对路径,要修改hive-site.xml的配置。具体操作如下:


(1)在本地计算机上创建如下目录:
/home/caiyong/hive/tmp
/home/caiyong/hive/resources

(2)修改hive-site.xml中的hive.exec.scratchdir,hive.exec.local.scratchdir和hive.downloaded.resources.dir的配置如下:
<property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/hive</value>
    <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, 
      an HDFS scratch dir: ${hive.exec.scratchdir}/<username> is created, with ${hive.scratch.dir.permission}.</description>
  </property>
 <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/home/caiyong/hive/tmp</value>
    <description>Local scratch space for Hive jobs</description>
  </property>
<property>
    <name>hive.downloaded.resources.dir</name>
    <value>/home/caiyong/hive/resources</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>
最后执行bin/hive后,出现如下结果,说明启动Hive成功。
caiyong@caiyong:/opt/hive $ bin/hive

Logging initialized using configuration in jar:file:/opt/hive/lib/hive-common-1.0.0.jar!/hive-log4j.properties
hive>

输入quit;可以退出Hive的交互式shell.


在以后启动Hadoop后接着启动Hive,可能会出现如下错误:
caiyong@caiyong:/opt/hive$ bin/hive

Logging initialized using configuration in jar:file:/opt/hive/lib/hive-common-1.0.0.jar!/hive-log4j.properties
Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException:

org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /tmp/hive/caiyong/03415c24-adee-4998-bd6f-e4173b7b17be.

Name node is in safe mode.
......


原因是 Name node is in safe mode.,所以要等name node退出safe mode 后再启动Hive.





你可能感兴趣的:(hive,hive,1.0.0,1.0.0安装)