Java教程

Hive-入门

本文主要是介绍Hive-入门,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、 数据仓库

1. 数据仓库的基本概念

        简称DW,Data Houseware。专门存储数据,构建面向分析的集成化数据环境,主要职责是做数据分析以支持决策。

2.数据分析的特征:

        面向主题:数据分析有一定的范围,需要选择一定的主题进行分析

        集成性:集成各个其他方面关联的一些数据。比如分析订单购买人的情况,会涉及用户信息

        非易失性:数据分析主要是分析过去已经发生的数据,分析的数据都是确定的事实,不会再改变

        时变性:随着时间的发展,数据的形态也在发生变化,数据分析的手段也要进行相应的改变

3. 数据仓库与数据库区别 

        数据库:OLTP,联机事务处理;数据库主要的功能就是用来做事务处理,主要负责频繁的增删改查。

        数据仓库:OLAP(On-Line Analytical Processing),联机的分析处理,不需要做事务的保证,主要职责就是针对某些主题的历史数据进行分析,支持管理决策。

        数据库的数据,允许增删改;数据仓库的数据,一般不建议不允许增删改;

4、数据仓库分层架构

        按照数据流入流出的过程,数据仓库架构可分为三层——源数据数据仓库数据应用。

        第一层:源数据层,又叫ODS,产生数据的地方

        第二层:数据仓库层,又叫DW,主要集中存储数据,面向主题进行分析

        第三步:数据应用层,又叫APP层,主要用于展示分析之后的数据结果

        数据在这三层之间的一个流动,称之为ETL的过程

        ETL:extrat(抽取),transform(转换),load(加载)

        数据从源数据层流向数据仓库层再流向APP层

        数据仓库分层的目的:使每一层职责更清晰 

5、数据仓库元数据管理

        元数据(Meta Date),定义数据架构,数据的位置,数据的信息,记录的是数据仓库当中的数据如何进行处理的一整套的过程

二、Hive基本概念

1.什么是Hive

         HIve是基于hadoop的一个数据仓库的处理工具,专门用于数据仓库的数据分析。它将结构化的数据映射成为一张数据库表,并提供类SQL查询功能。本质是将SQL语句转换为MapReduce的任务进行执行。

2.Hive当中的元数据信息

        主要描述了Hive表与HDFS的数据之间的映射关系,包括字段的映射,数据位置的保存。一般都保存在MySQL或者oracle里面等等。数据的存储:用的是HDFS;数据的计算:用的是MapReduce。

3.Hive架构

        用户接口:包括CLI、JDBC/ODBC、WebGUI。其中,CLI(command line interface)为shell命令行;JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC类似;WebGUI是通过浏览器访问Hive。

        元数据存储:通常是存储在关系数据库如mysql/derby中。Hive 将元数据存储在数据库中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

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

4.Hive与Hadoop的关系

        Hive利用HDFS存储数据,利用MapReduce查询分析数据

三.HIVE的安装部署 

  • 1.解压hive

cd /opt/software
tar -zxvf hive-1.1.0-cdh5.14.0.tar.gz -C ../module/

2.直接启动  bin/hive

cd ../module/
cd hive-1.1.0-cdh5.14.0/
bin/hive

3.Linux-MySQL安装

        1.新建文件夹/opt/mysql,并cd进去

       2.运行wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar,下载mysql安装包

        PS:centos7.6自带的类mysql数据库是mariadb,会跟mysql冲突,要先删除。

        3.运行tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

        4.运行rpm -qa|grep mari,查询mariadb相关安装包

        5.运行rpm -e --nodeps mariadb-libs,卸载

        6.然后开始真正安装mysql,依次运行以下几条

                rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm

                rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm

                rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm

                rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm

       7. 运行systemctl start mysqld.service,启动mysql

       8.然后开始设置root用户密码

       Mysql自动给root用户设置随机密码,运行grep "password" /var/log/mysqld.log可看到当前密码

        9.运行mysql -u root  -p,用root用户登录,提示输入密码可用上述的,可以成功登陆进入mysql命令行

        10.设置root密码,对于个人开发环境,如果要设比较简单的密码(生产环境服务器要设复杂密码),可以运行set global validate_password_policy=0;提示密码设置策略(validate_password_policy默认值1,)

        11.set password for 'root'@'localhost' =password('12345678');

        12.授权MySQL允许远程连接

                grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

        13.运行flush privileges;使密码设置生效

4.修改hive的配置文件

  • 修改hive-env.sh 
cd  /opt/module/hive-1.1.0-cdh5.14.0/conf
cp hive-env.sh.template hive-env.sh
vim hive-env.sh

HADOOP_HOME=/opt/module/hadoop-2.6.0-cdh5.14.0

# Hive Configuration Directory can be controlled by:

export HIVE_CONF_DIR=/opt/module/hive-1.1.0-cdh5.14.0/conf

  •  修改hive-site.xml
cd /opt/module/hive-1.1.0-cdh5.14.0/conf
vim hive-site.xml

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://hadoop104: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>root</value>
        </property>
        <!--连接数据库的密码-->
        <property>
                <name>javax.jdo.option.ConnectionPassword</name>
                <value>12345678</value>
        </property>
        <property>
                <name>hive.cli.print.current.db</name>
                <value>true</value>
        </property>
        <property>
                <name>hive.cli.print.header</name>
                <value>true</value>
        </property>
        <property>
                <name>hive.server2.thrift.bind.host</name>
                <value>node03.hadoop.com</value>
        </property>
<!--
        <property>
                <name>hive.metastore.uris</name>
                <value>thrift://node03.hadoop.com:9083</value>
        </property>
-->
</configuration>
  •  上传MySQL的lib驱动包

        将mysql的lib驱动包上传到hive的lib目录下

cd /opt/module/hive-1.1.0-cdh5.14.0/lib

        将mysql-connector-java-5.1.38.jar 上传到这个目录下

四.使用方式

第一种交互方式:Hive交互shell

cd /opt/module/hive-1.1.0-cdh5.14.0

bin/hive

查看所有的数据库

hive (default)> show databases;

创建一个数据库

hive (default)> create database myhive;

使用该数据库并创建数据库表

hive (default)> use myhive;

hive (myhive)> create table test(id int,name string);

第二种交互方式:Hive JDBC服务

启动hiveserver2服务

  • 前台启动

    cd  /opt/module/hive-1.1.0-cdh5.14.0
    bin/hive --service hiveserver2
    
  • 后台启动
    cd  /opt/module/hive-1.1.0-cdh5.14.0
    nohup bin/hive --service hiveserver2>&1  &
    
  • beeline连接hiveserver2
    bin/beeline
    beeline> !connect jdbc:hive2://hadoop103:10000
    

    第三种交互方式:Hive命令

    使用 –e  参数来直接执行hql的语句

    bin/hive -e "use myhive;select * from test;"

    使用 –f  参数通过指定文本文件来执行hql的语句

    vim hive.sql
    
    use myhive;select * from test;
    
    bin/hive -f hive.sql

这篇关于Hive-入门的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!