hive_01

RDBMS

  • Relation Database Management System,关系型数据库管理系统。

  • 简称:数据库

  • OLTP: online transaction process.[在线事物处理]

  • 要求延迟很小 ,低延迟

  • a.原子性

  • c.一致性

  • i.隔离性

  • f.永久性

事物并发现象

  • 脏读 //读未提交
  • 不可重复读 //读不回去
  • 幻读 //读多了

如何避免

  • 设置事物的隔离级别
    • 1.读未提交
    • 2.读已提交 避免脏读
    • 4.可以重复读 避免不可重复读
    • 8.串行化 避免幻读

Hive


  • 数据仓库软件。

  • OLAP: online analyze process.在线分析处理

  • 优点:读写管理存储天量数据,重在分析

  • 缺点:延迟高,不具有事务性

  • 简介:

    • 使用SQL读写管理驻留在分布式存储系统大型数据集,可以使用命令行
      和Driver连接到Hive。
    • 运行在hadoop之上,用来汇集查询数据
  • Hive 不是

    • 关系关系数据库
    • OLTP[在线事物处理]
    • 不适合实时查询和低层更新操作
  • 特点

    • 在数据库中存放schema,处理数据到HDFS
    • OLAP[在线分析处理]
    • 提供类SQL语言,HQL(HiveQL)
    • 可扩展、可伸缩、速度快。

Hive架构

* UI(web UI / CLI)

* MetaStore +     HQL ProcessEngine
                Execution Engine
                MapReduce  
* HDFS/HBase

Hive组件

* UI                    //
* MetaStore                //schema table clumn 信息在RDBMS
* HQL Process Engine    //编写SQL代替MR程序
* Excution Engine        //处理查询,生成结果
* HDFS                    //存储数据

Hive安装

1. 下载 apache-hive-2.3.4-bin.tar.gz并tar开  

下载链接

2.安装jdk  
    略  

3.安装hadoop  
    略  

4.安装hive  
    $>cd ~/Desktop
    $>tar -zxvf apache-xxx.x.gz
    $>mv apache-hive-xx /soft
    $>ln -s /soft/apache-hive-xx /soft/hive
    $>sudo nano /etc/environment
        HIVE_HOME=/soft/  

5.查看Hive  
    $>hive --version  

6.配置Hive  
    [${hive_home}/confhive-env.sh]  
    HADOOP_HOME=/soft/hadoop  

7.配置Hive的元数据库  
    * hive使用RDBMS存储元数据,内置了derby数据库。
      hive/conf/hive-default.xml.template //hive的默认配置,不要修改
    * 创建hive-site.xml  
        [/soft/hive/conf/hive-site.xml]
        $>cp hive-default.xml.template hive-site.xml  
    * 修改配置hive-site.xml
        替换${system:java.io.tmpdir}=/home/ubuntu/bigdata/hive
        替换${system:user.name}=ubuntu

使用Hive

1.初始化schema库
    $>hive/bin/schematool -initSchema -dbType

2.完成后,在当前目录下创建一个文件夹metastore_db(数据库)  

3.进入hive shell  
    $>hive  

Hive常见命令

hive>show databases;         //显示库
hive>show tables ;            //显示表
1
2
* 创建表
CREATE TABLE IF NOT EXISTS employee ( eid int, name String, salary String, destination String) COMMENT 'Employee details' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS TEXTFILE;
1
2
3
4
5
加载数据到hive(hdfs)
hive>LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]

[插入数据]
hive>LOAD DATA LOCAL INPATH '/home/ubuntu/employee' INTO TABLE employee
  • 准备员工表数据
    1201 Gopal 45000 Technical manager
    1202 Manisha 45000 Proof reader
    1203 Masthanvali 40000 Technical writer
    1204 Kiran 40000 Hr Admin
    1205 Kranthi 30000 Op Admin