Hive 的基本概念与安装

参考文档:

https://www.yiibai.com/hive

https://blog.youkuaiyun.com/jssg_tzw/article/details/72354470

 

一、Hive 概述

 

1、Hive 是什么

    Hive 是一个数据仓库基础工具,在 hadoop 中用来处理结构化数据。通过将 sql 语句转化为 mapreduce 任务进行运行,为用户提供简单的 sql 查询功能。

 

2、Hive 不是什么

    Hive 不是一个关系数据库,不是设计用于联机事务处理(OLTP),不是实时查询和行级更新的语言。

 

3、Hive 的特点

    它存储架构在一个数据库中,并处理数据到 HDFS

    它是专为 OLAP 设计

    它提供 SQL 类型查询语言,称为 HiveQL 或 HQL

    它是熟知,快速,可扩展的。

 

4、Hive 架构

 

用户接口/界面:

    Hive 是一个数据仓库基础工具软件,可以创建用户和 HDFS 之间互动。用户界面,Hive 支持 Web UI ,Hive 命令行,Hive洞察(windows)。

 

元存储:

    Hive 选择各自的数据库服务器,用以存储表,数据库,列模式或元数据表,它们的数据类型和 HDFS 映射。

 

HiveQL 处理引擎:

    HiveQL 类似于 SQL 的查询上 Metasore 模式信息。

 

执行引擎:

    HiveQL 处理引擎和 MapReduce 的结合部分是 Hive 执行引擎。

 

HDFS/HBASE:

    HDFS或HBASE 用于将数据存储到文件系统。

 

5、Hive 工作流程

 

1)Execute Query

    Hive 接口,如命令行或 WEB UI 发送命令到查询驱动程序。

 

2)Get Plan

    在驱动程序帮助下,查询编译器。编译器分析查询,检查语法,检查查询计划,检查查询的要求。

 

3)Get Metadata

    编译器发送元数据请求到 Metastore。

 

4)Send Metadata

    Metastore 发送元数据,响应编译器。

 

5)Send Plan

    编译器检查要求,并重新发送计划给驱动程序。

 

6)Execute Plan

    驱动程序发送执行计划到执行引擎。

 

7)Execute Job

    在内部,执行作业的过程是一个 MapReduce 工作。执行引擎发送作业给 Yarn。

 

7.1)Metadata Ops

    在执行的同时,执行引擎可以通过 Metastore 执行元数据操作。

 

8)Fetch Result

    执行引擎接收来自数据节点的结果。

 

9)Send Results

    执行引擎发送这些结果值给驱动程序。

 

10)Send Results

    驱动程序将结果发送给 Hive 接口。

    

 

二、centos7 基于 hadoop 2.7.7安装 hive 2.3.3

 

1、下载 hive 2.3.3

# wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3.3/apache-hive-2.3.3-bin.tar.gz

 

2、安装 hive 2.1.1

 

# tar xzvf apache-hive-2.3.3-bin.tar.gz -C /opt/module/

# mv /opt/module/apache-hive-2.3.3-bin /opt/module/hive-2.3.3

# vim /etc/profile

export HIVE_HOME=/opt/module/hive-2.3.3

export HIVE_CONF=$HIVE_HOME/conf

export PATH=$PATH:$HIVE_HOME/bin 

 

3、配置 hive

# cp /opt/module/hive-2.3.3/conf/hive-default.xml.template /opt/module/hive-2.3.3/conf/hive-site.xml

 

# hadoop fs -mkdir -p /user/hive/warehouse /tmp/hive

# hadoop fs -chmod -R 777 /user/hive/warehouse /tmp/hive

 

# vim hive-site.xml

// ${system:java.io.tmpdir} 替换为 hive 的临时目录:/opt/module/hive-2.3.3/tmp

 

// ${system:user.name} 替换为 root

 

// javax.jdo.option.ConnectionDriverName 的 value 替换为 mysql 驱动类路径: com.mysql.jdbc.Driver

 

// javax.jdo.option.ConnectionURL 的 value 修改为 mysql 的地址: jdbc:mysql://192.168.56.101:3306/hive?useSSL=false

 

// javax.jdo.option.ConnectionUserName 的 value 修改为 mysql 数据库登录名:root

 

// javax.jdo.option.ConnectionPassword 的 value 修改为 mysql 登录密码:

 

# cp  mysql-connector-java-5.1.36.jar /opt/module/hive-2.3.3/lib/

 

# cp /opt/module/hive-2.3.3/conf/hive-env.sh.template hive-env.sh

 

# vim hive-env.sh

export HADOOP_HOME=/opt/module/hadoop-2.7.7

export HIVE_CONF_IDR=/opt/module/hive-2.3.3/conf

export HIVE_AUX_JARS_PATH=/opt/module/hive-2.3.3/lib

 

4、安装配置 mysql 5.7

0)安装 mysql 5.7 (此处不显示详细教程)

 

1)对 mysql 数据库初始化

//登录 mysql 数据库

mysql> create database hive;

 

# cd /opt/module/hive-2.3.3/bin

//初始化元数据库

# schematool -initSchema -dbType mysql

 

2)启动 hive

# ./hive

 

3)测试 hive

//查看 hive 的函数

hive> show functions;

 

//新建库,表

mysql> select * into outfile '/var/lib/mysql-files/sbux_nc_req.dat' fields terminated by '\t\t\t' from sbux_nc_req;

hive> create database test_db;

hive> use test_db;

hive> create table test_tb;

(

request_id bigint,

message_type_id int,

request_type int,

request_time string,

request_url string,

request_source int,

request_body string,

response_time string,

send_time string,

attachment_id int,

template_id bigint,

linked_template_id string,

linked_job_id bigint,

application_id int,

created_by string,

creation_date string,

last_updated_by string,

last_updated_date string

) row format delimited fields terminated by '\t\t\t';

 

hive> select * from test_tb;

mysql> select * from hive.TBLS;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值