Hive是Hadoop项目中的一个子项目,由FaceBook向Apache基金会贡献。Hive被视为一个仓库工具,可以将结构化的数据文件映射为一张数据库表,并可以将sql语句转换为 MapReduce 任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。 

Hive主要分为以下几个部分: 

 1.用户接口 

用户接口主要有三个:命令行(CLI),客户端(Client) 和 Web界面(WUI)。

最常用的是 CLI,启动的时候,会同时启动一个 Hive 服务。

Client 是 Hive 的客户端,用户连接至 Hive Server。在启动 Client 模式的时候,需要指出 Hive Server 所在节点,并且在该节点启动 Hive Server。

WUI 是通过浏览器访问 Hive的Web工具


2.元数据存储

 Hive 将元数据存储在数据库中,如 MySQL或者Derby嵌入式数据库。


3. 执行 解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。


4. HDFS存储 

 Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from tbl 不会生成 MapRedcue 任务)。


安装与配置 

下载到hive到/usr/local/src

tar zxvf hive-0.12.0.tar.gz

mv hive-0.12.0 /usr/local/hive

加入以下环境变量到/etc/profile

export PATH="$PATH:/usr/local/mysql/bin"

export HADOOP_HOME=/usr/local/hadoop-2.2.0

export HIVE_HOME=/usr/local/hive

export HIVE_CONF_DIR=$HIVE_HOME/conf

export HIVE_LIB=$HIVE_HOME/lib

export CLASSPATH=$CLASSPATH:$HIVE_LIB

export PATH=$HIVE_HOME/bin/:$PATH

source /etc/profile

修改配置文件

cd /usr/local/hive/conf

复制4个配置模板文件

cp hive-default.xml.template

……

新建配置文件 hive-site.xml 需提前装好mysql,并设置指定账号,给予权限

提前下载好java连接mysql工具包mysql-connector-java-5.1.22-bin.jar,放入HIVE_LIB中

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

  

<configuration>

<property>

  <name>hive.metastore.local</name>

    <value>true</value>

    </property>

      

<property>

  <name>javax.jdo.option.ConnectionURL</name>

    <value>jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true</value>

    </property>

      

<property>

  <name>javax.jdo.option.ConnectionDriverName</name>

    <value>com.mysql.jdbc.Driver</value>

    </property>

      

<property>

  <name>javax.jdo.option.ConnectionUserName</name>

    <value>hive</value>

    </property>

      

<property>

  <name>javax.jdo.option.ConnectionPassword</name>

    <value>hive</value>

    </property>

    <property>

      <name>datanucleus.fixedDatastore</name>

        <value>false</value>

        </property>

          

</configuration>

以hadoop身份执行hive

cd /usr/local

chown -R hadoop:hadoop hive

su hadoop

执行:hive

hive> CREATE TABLE pokes (foo INT, bar STRING);

hive> show tables;

OK

pokes

Time taken: 2.855 seconds, Fetched: 1 row(s)

hive> 

hdfs dfs -ls /user/hive #查看hdfs中有关hive的文件

导入测试数据

hive> LOAD DATA LOCAL INPATH './examples/files/kv1.txt' overwrite into table pokes;


hive> select * from pokes;


执行一个计算任务

hive> select max(foo) as m from pokes;


ps: 1 结合http://cswei.blog.51cto.com/3443978/1417503 Hadoopj集群搭建手册

     2 https://cwiki.apache.org/confluence/display/Hive/GettingStarted  hive官方指导

   http://blog.fens.me/hadoop-hive-roadmap/  Hive学习路线图