Apache Hive

一、Apache Hive简介

官方网址:https://hive.apache.org/ 
The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL. Structure can be projected onto data already in storage. A command line tool and JDBC driver are provided to connect users to Hive. 
(Apache Hive™数据仓库软件使用SQL语句便于读取,写入和管理驻留在分布式存储中的大型数据集。操作结构化数据。提供给用户命令行工具和JDBC驱动程序以连接到Hive)

1、概念

(1)Hive 是建立在 Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL ,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。 
(2)Hive是SQL解析引擎,它将SQL语句转译成MR Job然后在Hadoop执行。 
(3)Hive的表其实就是HDFS的目录,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在MR Job里使用这些数据。 
(4)Hive相当于hadoop的客户端工具,部署时不一定放在集群管理节点中,可以放在某个节点上。 
(5)Hive中存储结构和HDFS里面的存储结构的对应关系 
Hive的表———-HDFS的目录 
Hive的数据——–HDFS的目录下面的(数据)文件 
Hive中行列——–HDFS的目录下面的数据文件的行列 
(6)Hive相当于hadoop的客户端工具,部署时不一定放在集群管理节点中,可以放在某个节点上。

2、数据存储

(1)Hive的数据存储基于Hadoop HDFS 
(2)Hive没有专门的数据存储格式 
(3)存储结构主要包括:数据库、文件、表、视图、索引 
(4)Hive默认可以直接加载文本文件(TextFile),还支持SequenceFile、RCFile 
(5)创建表时,指定Hive数据的列分隔符与行分隔符,Hive即可解析数据

3、Hive的体系结构

(1)用户接口主要有三个:CLI,JDBC/ODBC和 WebUI 
(2)CLI,即Shell命令行 
(3)JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似 
(4)WebGUI是通过浏览器访问 Hive 
(5)Hive 将元数据存储在数据库中(metastore),目前只支持 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等 
(6)解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成。生成的查询计划存储在 HDFS 中,并在随后由 MapReduce 调用执行 
(7)Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from table 不会生成 MapRedcue 任务)

4、Hive的元数据

(1)metastore是hive元数据的集中存放地。 
(2)metastore默认使用内嵌的derby数据库作为存储引擎 
(3)Derby引擎的缺点:一次只能打开一个会话 
(4)使用MySQL作为外置存储引擎,多用户同时访问

二、Apache Hive安装

hive的下载地址http://hive.apache.org/downloads.html 
JAVA_HOME=/usr/local/jdk1.7.0_55 
HADOOP_HOME=/usr/local/hadoop-2.6.0 
HIVE_HOME=/usr/local/hive-0.14.0 
Ubuntu操作系统安装步骤http://www.tuicool.com/articles/bmUjAjj 
以下是Centos操作系统

1、Mysql的安装(推荐在线安装)

http://www.cnblogs.com/liuchangchun/p/4099003.html 
1°、查看mysql依赖 
rpm -qa | grep mysql 
2°、删除mysql依赖 
[root@hive local]# rpm -e –nodeps rpm -qa | grep mysql 
3°、安装mysql 
[root@hive local]# yum -y install mysql-server 
4°、启动mysql的服务 
[root@hive local]# service mysqld start 
5°、将mysql的服务加入到开机启动项里 
[root@hive local]# chkconfig mysqld on 
6°、mysql的配置 
[root@hive local]# /usr/bin/mysql_secure_installation 
7°、授予远程指定用户的登陆权限 
mysql -h hive.teach.crxy.cn -uroot -proot 
问题:ERROR 1130 (HY000): Host ‘hive.teach.crxy.cn’ is not allowed to connect to this MySQL server 
解决办法: 
mysql> grant all privileges on . to ‘root’@’%’ identified by ‘root’; 
mysql> flush privileges;

2、安装Hive

    前提是:hadoop必须已经启动了*****
    1°、解压hive安装包到/usr/local目录下
        [root@hive soft]# tar -zvxf apache-hive-0.14.0-bin.tar.gz -C /usr/local/
        [root@hive local]# mv apache-hive-0.14.0-bin/ hive-0.14.0
    2°、备份配置文件(在$HIVE_HOME/conf目录下)
        [root@hive conf]$ cp hive-env.sh.template hive-env.sh
        [root@hive conf]$ cp hive-default.xml.template hive-site.xml
    3°、配置hive的配置文件
        1)、修改hive-env.sh
            加入三行内容(大家根据自己的情况来添加)
                JAVA_HOME=/usr/local/jdk1.7.0_55
                HADOOP_HOME=/usr/local/hadoop-2.6.0
                HIVE_HOME=/usr/local/hive-0.14.0
        2)、修改hive-site.xml
               <property>
                    <name>javax.jdo.option.ConnectionURLname>             
                     <value>jdbc:mysql://scbnode1:3306/hivedb?creat

你可能感兴趣的:(大数据)