Hive_day01(概述与安装)

hive-概述与安装

数据仓库架构(手绘,引出hive在其中的角色)

数据仓库层的划分:

Hive_day01(概述与安装)_第1张图片

2.1 什么是hive?(面试题)

1:hive是基于hadoop的数据仓库建模工具之一(后面还有TEZ,Spark)。

2:hive可以使用类sql方言,对存储在hdfs上的数据进行分析和管理。传入一条交互式sql在海量数据中查询分析结果的工具。

2.2 对于hive的理解

​ 1、Hive是基于Hadoop的一个数据仓库工具,可以将 结构化的数据文件 映射为一张表(类似于RDBMS中的表),并提供类SQL查询功能;Hive是由Facebook开源,用于解决海量结构化日志的数据统计。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL ),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL ,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。

​ 2、Hive是SQL解析引擎,它将SQL语句转译成M/R Job然后在Hadoop的yarn上的执行。

​ 3、Hive的表其实就是HDFS的目录,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/R Job里使用这些数据。

​ 4、Hive相当于hadoop的客户端工具,部署时不一定放在集群管理节点中,可以放在某个节点上。

可以将Hive理解为一个:将 SQL 转换为 MapReduce 任务的工具

Hive_day01(概述与安装)_第2张图片

所以Hive不存储数据,自己也没有任何计算功能,只是相当于类SQL语句与Hadoop文件之间的一个解释器。他本质上只是一个对HDFS上的文件进行索引与计算的工具。他需要依赖Hadoop的Yarn来进行资源分配,也需要Hadoop的MapReduce来提供计算支持。后面我们就会知道,hive在进行数据计算时,不仅可以用MapReduce来支持,也可以集合其他更灵活,更高效的大数据计算框架(比如spark Spark SQL)

2.3 Hive的使用场景

从上面的理解介绍可以简单掌握Hive的特点:

优点:

1、使用SQL语法查询,不用再去写复杂的MapReduce程序,减少开发成版本,上手快。

2、基于MapReduce算法,所以在处理大数据时,优势非常明显

3、可以支持自定义函数,计算能力强

缺点:

1、Hive的执行延迟比较高,这是因为启动并运行一个MapReduce程序本身需要消耗非常多的资源

2、Hive的HQL语句表达能力有限,并且他是基于模板实现的,所以通常不够智能化,很多复杂的大数据计算无法支持,比如迭代式计算

3、Hive处理大数据量非常擅长,但是处理小数据量就没有优势了。

针对与优点和缺点总结:

所以,Hive通常适用于大数据的OLAP场景,做一些面向分析,允许有延迟的数据挖掘工作,并且结合其他组件也可以做一些数据清洗之类的简单数据处理工作。Hive是针对数据仓库来进行设计的,这种场景下,通常是读多写少。并且数据都是来自外部的HDFS,所以Hive中不建议做数据的修改操作,所有的数据最好是在加载的时候就已经确定好了。

2.4 Hive的整体架构

Hive_day01(概述与安装)_第3张图片

用户接口 CLI(Common Line Interface):Hive的命令行,用于接收HQL,并返回结果;JDBC/ODBC:是指Hive的java实现,与传统数据库JDBC类似;WebUI:是指可通过浏览器访问Hive。

Thrift Server:Hive可选组件,是一个软件框架服务,允许客户端使用包括Java、C++、Ruby和其他很多种语言,通过编程的方式远程访问Hive;

元数据管理(MetaStore) Hive将元数据存储在关系数据库中(如mysql、derby)。Hive的元数据包括:数据库名、表名及类型、字段名称及数据类型、数据所在位置等;

解释器 (SQLParser) :使用第三方工具(antlr)将HQL字符串转换成抽象语法树(AST);对AST进行语法分析,比如字段是否存在、SQL语义是否有误、表是否存在;

编译器 (Compiler) :将抽象语法树编译生成逻辑执行计划;

优化器 (Optimizer) :对逻辑执行计划进行优化,减少不必要的列、使用分区等;

执行器 (Executr) :把逻辑执行计划转换成可以运行的物理计划;

Hive通过CLI,JDBC/ODBC或HWI接受相关的Hive SQL查询,并通过Driver组件进行编译,分析优化,最后编程可执行的MapReduce任务。

2.5 Hive1.2.1安装

安装大致分为几大步骤:
  • 将压缩包传到 linux 中,并解压
  • 配置环境变量,配置各种配置文件
  • 启动

版本介绍:

0.13和.14版本稳定版本,不支持但是不支持更新删除操作。
1.2.1和1.2.2 稳定版本,为Hive2版本(主流版本)
1.2.1的程序只能连接hive1.2.1 的hiveserver2

java 1.8.0_171
hadoop 2.7.6
hive 1.2.1
mysql:5.7

安装主要流程(详细见word文档)
安装MySQL服务
安装hive包,解压
修改配置文件,连接mysql,连接hadoop
启动

在之前博客中我有记录安装JDK和Hadoop和Mysql的过程,如果还没有安装,请先进行安装配置好。

(以上准备工作已经做好后=========================)

下面开始安装Hive

开始: 先启动Hadoop

image-20220531204335673将两个包使用Xftp拖至soft目录下Hive_day01(概述与安装)_第4张图片

1、解压hive安装包

tar -zxvf apache-hive-1.2.1-bin.tar.gz

修改下目录名称

mv apache-hive-1.2.1-bin hive-1.2.1

Hive_day01(概述与安装)_第5张图片

2.配置环境变量

Hive_day01(概述与安装)_第6张图片

在配置完环境变量之后,必须要 source 一下,才能生效

Hive_day01(概述与安装)_第7张图片

3、备份配置文件

cp hive-env.sh.template hive-env.sh

cp hive-default.xml.template hive-site.xml

Hive_day01(概述与安装)_第8张图片

3、修改配置hive的配置文件(在conf目录下)

3.1 修改hive-env,sh

加入三行内容(大家根据自己的情况来添加,每个人安装路径可能有所不同)

HADOOP_HOME=/usr/local/soft/hadoop-2.6.0

JAVA_HOME=/usr/local/soft/jdk1.8.0_171

HIVE_HOME=/usr/local/soft/hive-1.2.1

Hive_day01(概述与安装)_第9张图片

3.2 修改hive-site.xml (找到对应的键对值进行修改,注意!!!是修改,而不是全部直接复制粘贴)

(注意:修改自己安装mysql的主机地址)


    javax.jdo.option.ConnectionURL
    jdbc:mysql://192.168.44.110:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf8&useSSL=false
    JDBC connect string for a JDBC metastore
  

(固定)

指定数据库的驱动包


    javax.jdo.option.ConnectionDriverName
    com.mysql.jdbc.Driver
    Driver class name for a JDBC metastore
  

Hive_day01(概述与安装)_第10张图片

(mysql的用户名)


    javax.jdo.option.ConnectionUserName
    root
    Username to use against metastore database
  

(mysql的用户密码)


    javax.jdo.option.ConnectionPassword
    123456
    password to use against metastore database
  

(你的hive安装目录的tmp目录)


    hive.querylog.location
    /usr/local/soft/hive-1.2.1/tmp
    Location of Hive run time structured log file
  

(同上)


    hive.exec.local.scratchdir
    /usr/local/soft/hive-1.2.1/tmp
    Local scratch space for Hive jobs
  

(同上)


    hive.downloaded.resources.dir
    /usr/local/soft/hive-1.2.1/tmp
    Temporary local directory for added resources in the remote file system.
  

4、

拷贝mysql驱动到$HIVE_HOME/lib目录下

cp /usr/local/soft/mysql-connector-java-5.1.17.jar ../lib/

Hive_day01(概述与安装)_第11张图片

查看一下:存在;

Hive_day01(概述与安装)_第12张图片

5、

将hadoop的jline-0.9.94.jar的jar替换成hive的版本。

hive的 jline-2.12.jar 位置在 /usr/local/soft/hive-1.2.1/lib/jline-2.12.jar

将Hadoop的删除

Hive_day01(概述与安装)_第13张图片

rm -rf /usr/local/soft/hadoop-2.6.0/share/hadoop/yarn/lib/jline-0.9.94.jar

然后将hive的jar拷过去hadoop下:

Hive_day01(概述与安装)_第14张图片

命令:

cp/usr/local/soft/hive-1.2.1/lib/jline-2.12.jar /usr/local/soft/hadoop-2.6.0/share/hadoop/yarn/lib/

最后启动Hive

命令: hive

Hive_day01(概述与安装)_第15张图片

你可能感兴趣的:(hive,hadoop,大数据,hdfs,数据仓库)