Hive的架构与搭建

什么是Hive

Hive是Hadoop生态圈中的一个数据仓库工具,也可以是一个数据分析引擎。他没有提供数据存储功能,基于HDFS,数据存储在HDFS上。HIve可以将结构化的数据映射为一张表,提供HQL语句查询的功能,所以需要依赖一个外部的数据库,这个数据库中之存储表的元信息,不存储任何实际的数据,数据还是在HDFS上。 Hive的核心是把HQL语句翻译成MR程序交给Yarn集群来调用。
hive的体系架构:
在这里插入图片描述

web管理界面在2.2之后已经废弃了。
CLI指的是命令行,
JDBC/ODBC指的是用api去访问,与Java用jdbc的方式访问mysql类似。
最重要的当然是Hive Driver,Driver 组件完成 HQL 查询语句从词法分析,语法分析,编译,优化,以及生成逻辑执行 计划的生成。生成的逻辑执行计划存储在 HDFS 中,并随后由 MapReduce 调用执行
   驱动引擎由四部分组成:
    (1) 解释器:解释器的作用是将 HiveSQL 语句转换为抽象语法树(AST)
    (2) 编译器:编译器是将语法树编译为逻辑执行计划
    (3) 优化器:优化器是对逻辑执行计划进行优化
    (4) 执行器:执行器是调用底层的运行框架执行逻辑执行计划

Hive的搭建:

Hive环境分为三种,嵌入模式,本地模式和远程模式
嵌入模式一般是开发的时候用,嵌入模式使用内置的数据库derby,无需单独安装关系型数据库,
本地模式自己安装数据库和hive在同一台机器上比如说mysql,远程模式指的是数据库和hive不在同一台机器上
配置环境变量:

HIVE_HOME=/root/training/apache-hive-2.3.0-bin
export HIVE_HOME

PATH=$HIVE_HOME/bin:$PATH
export PATH
  • 嵌入模式

利用vi编辑器创建并打开hive-site.xml文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
   <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:derby:databaseName=metastore_db;create=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>org.apache.derby.jdbc.EmbeddedDriver</value>
    </property>
    <property>
        <name>hive.mestore.local</name>
        <value>true</value>
    </property>
  
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>file://root/training/apache-hive-2.3.0-bin/warehouse</value>
    </property>
</configuration>

执行命令初始化: schematool -dbType derby -initSchema

[root@hadoop111 conf]# schematool -dbType derby -initSchema
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/root/training/apache-hive-2.3.0-bin/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/root/training/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Metastore connection URL:	 jdbc:derby:databaseName=metastore_db;create=true
Metastore Connection Driver :	 org.apache.derby.jdbc.EmbeddedDriver
Metastore connection User:	 APP
Starting metastore schema initialization to 2.3.0
Initialization script hive-schema-2.3.0.derby.sql
Initialization script completed
schemaTool completed

证明成功了,之后 输入hive启动命令行CLI:hive 就可以创建表,进行各种操作了。

  • 本地模式(远程模式,本地模式和远程模式的区别是数据库是不是在同一台机器上)

需要一个关系型数据库,可以到apache-hive-2.3.0-bin/scripts/metastore/upgrade这个目录先看一样目前hive支持哪些数据库:
在这里插入图片描述

我们使用Mysql数据库,首先安装数据库,去官网下载安装包,并解压,其都是一个一个的rpm文件,使用命令一个个的安装即可:

rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.19-1.el7.x86_64.rpm
rpm -ivh  mysql-community-server-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-compat-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-minimal-debuginfo-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-minimal-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-devel-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-test-5.7.19-1.el7.x86_64.rpm

安装成功之后,启动Mysql :systemctl start mysqld.service
启动成功之后,mysql会默生成一个密码,这个密码是随机生成的,你需要修改成你能记住的密码,
首先查看密码: cat /var/log/mysqld.log | grep password

2018-09-28T12:01:52.390009Z 1 [Note] A temporary password is generated for root@localhost: WL4%HyhPS4wd

用WL4%HyhPS4wd 这个密码登录, mysql -uroot -p
修改你的密码: alter user 'root'@'localhost' identified by 'Password_1';
修改的密码要有大小写和特殊字符和数字,否则会提示你不符合规范 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
配置数据库:

  1. 创建一个数据库: create database hive;
  2. 创建一个用户,并给用户授权
create user 'hiveowner'@'%' identified by 'Password_1';
grant all on hive.* To 'hiveowner'@'%';
grant all on hive.* To 'hiveowner'@'localhost' identified by 'Password_1';

可以用工具去访问一下数据库hive,比如说MySQL_font http://www.mysqlfront.de/
在这里插入图片描述

配置本地模式,也是修改hbase-site.xml文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
   <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive?useSSL=false</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hiveowner</value>
    </property>
  
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>Password_1</value>
    </property>
</configuration>

配置好以后需初始化hive : schematool -dbType mysql -initSchema

在这里插入图片描述

会报上面的错误,因为缺少驱动,将mysql驱动复制到hive lib下面
在初始化就可以成功了。在初始化的过程中也会去数据库初始建立很多表。
启动hive,直接输入命令hive即可,之后建一张表: create table student(id int, name string);
然后去mysql可视化工具上去看TBLS这个表,已经存储了student的元信息:
在这里插入图片描述
在这里插入图片描述

在网页打开HDFS,端口是50070,对应其上的一个目录:

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟红尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值