Hadoop技术生态—Hive数据仓库(一)

Hive简介:     

    Hive是基于Hadoop的一个数据仓库管理工具,可以将结构化的数据文件映射为数据库表,提供sql查询统计功能(Hive 定义了简单的类 SQL 查询语言,称为 HQL),其底层实现是:将SQL语句转换为MapRecuce程序任务执行对应的查询功能(Yarn集群启动)。 

为什么要使用hive?      

    用户只需要在Hive中建立表和结构化数据之间的映射,就可以是实现各类复杂的数据查询统计功能,而这些功能通过编写MapReduce实现起来比较复杂,编写效率也不高。况且编写MR程序门槛也高,得有一定的编程功底。

    实现同样的查询统计功能,Hive只要简单的SQL语句(通过Hive框架转换为对应的MapReduce程序,并对其优化,最后提交Hadoop运行。),而编写MapReduce程序往往需要很长时间才能实现,若经验不足,编写的程序运行效率往往不高。

Hive的使用场景:

    Hive 的查询任务往往转换为MR程序提交Hadoop集群运行,那就不能指望快速响应,所以不适合那些需要低延迟的应用:联机事务处理(OLTP),web应用中查询模块的后台实现(往往要求秒级响应)。

    Hive往往做为数据仓库管理的工具,数据仓库中的数据往往很少进行更改,或者不更改,可以用来做联机分析处理(OLAP); 

    Hive往往用来处理GB,TB,PB级别的数据离线分析查询,所以查询结果在20分钟左右响应结果是正常的。

Hive 体系结构如下:
  客户端接口:
      有基于命令行的:CLI (单用户模式,多用户模式);
      通过Hive提供的 JAVA JDBC/ODBC API通过 Thrift提供的服务(Thrift Server)提交查询任务;
      通过HIVE提供的web项目管理监控HIVE(下载对应程序拷贝到HIVE里):Web UI
  元数据库
      用来管理Hive中数据库,表及对应的HDFS映射目录等等信息;(往往用MySQL作为元数据信息管理)
   Driver 
        是Hive客户端和Hadoop集群之间工作的桥梁纽带。Hive客户端的请求通过Driver组件转换为最终的提交Hadoop集群运行的MR任务。
       包括:解析器,编译器,MR任务优化器,执行器(辑执行计划转换成物理执行计划,如:生成MR,Spark任务等)

安装配置步骤:
1.拷贝下载包到Hadoop集群中的任意一台服务器上进行解压。
    如:tar -zxvf apache-hive-2.1.1-bin.tar.gz
    mv apache-hive-2.1.1-bin hive

2.配置Hive
    cd  /opt/mysoft/hive/conf

    mv hive-env.sh.template   hive-env.sh    
    vi   hive-env.sh  //修改启动配置项:
   //若当前机器上已经配置了JAVA_HOME环境变量,则可以省略(一般都配置过了)
   export JAVA_HOME=/opt/mysoft/jdk
   export HADOOP_HOME=/opt/mysoft/hadoop
   export HIVE_CONF_DIR=/opt/mysoft/hive/conf
   export HIVE_AUX_JARS_PATH=/opt/mysoft/hive/bin

 3.进入到hive/conf目录下,创建hive-site.xml配置文件(连接mysql数据,前提要先安装mysql)

configuration>
   <property>
    <name> javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/myHive?createDatabaseIfNotExist=true</value>
  </property>

 <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>

 <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
    <description>Username to use against metastore database</description>
  </property>

 <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456</value>
    <description>password to use against metastore database</description>
  </property>

 <property>
   <name>hive.metastore.schema.verification</name>
   <value>false</value>
</property>
</configuration>


4.初始化Hive (Hive2以后要求先初始化) 
    .bin/schematool -initSchema -dbType mysql

5.启动Hive 
   ./bin/hive

 


更多精彩内容