10-Hive数据仓库

Hive数据仓库

Hive数据仓库思维导图下载链接

Hive简介
Hive的产生

非java编程者对HDFS的数据做Mapreduce操作

Hive : 数据仓库
Hive:解释器,编译器,优化器等
Hive 运行时,元数据存储在关系型数据库里面
Hive架构
(1)用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive Server。在启动 Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。 WUI是通过浏览器访问Hive。
(2)Hive将元数据存储在数据库中,如mysql、derby。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
(3)解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。
(4)Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成(包含*的查询,比如select * from tbl不会生成MapRedcue任务)。
架构

编译器将一个Hive SQL转换操作符
操作符是Hive的最小的处理单元
每个操作符代表HDFS的一个操作或者一道MapReduce作业

Operator

Operator都是hive定义的一个处理过程

Operator都定义有:

protected List <Operator> childOperators;
protected List <Operator> parentOperators;
protected boolean done; // 初始化值为false

ANTLR词法语法分析工具解析hql
Hive搭建
Hive搭建模式

此模式连接到一个In-memory 的数据库Derby,一般用于Unit Test

通过网络连接到一个数据库中,是最经常使用到的模式

单用户模式

架构

Node0001

MySQL

Node0002

HIVE

Node0003

Node0004

Node0001(MySQL)

MySQL

安装mysql

yum install mysql-server -y

启动mysql

service mysqld start

无密码登陆,更改权限(mysql)

use mysql;

select host,user,password from user;

grant all privileges on . to ‘root’@’%’ identified by ‘123’ with grant option;

grant

all privileges

on .(所有库所有表)

to ‘root’

@’%’

identified by ‘123’

delete from user where host!=’%’;

flush privileges;

Node0002(Hive)

softwares

apache-hive-1.2.1-bin.tar.gz
mysql-connector-java-5.1.32-bin.jar

Hive

解压

tar xf apache-hive-1.2.1-bin.tar.gz -C /opt/sxt/

环境变量

vi + /etc/profile

export HIVE_HOME=/opt/sxt/apache-hive-1.2.1-bin
PATH=PATH:PATH:PATH:HIVE_HOME/bin

source /etc/profile

mv hive-default.xml.template hive-site.xml

hive-site.xml

hive.metastore.warehouse.dir
/opt/sxt//opt/sxt/apache-hive-1.2.1-bin/hive_remote/warehouse


javax.jdo.option.ConnectionURL
jdbc:mysql://node0001/hive_remote?createDatabaseIfNotExist=true


javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver


javax.jdo.option.ConnectionUserName
root


javax.jdo.option.ConnectionPassword
123

- 驱动报错(复制驱动包)

- cp ~/softwares/mysql-connector-java-5.1.32-bin.jar /opt/sxt/apache-hive-1.2.1-bin/lib/

- java.lang.IncompatibleClassChangeError: Found class jline.Terminal

- Node0003
- Node0004
- 命令

- zkServer.sh start(所有zk)
- start-dfs.sh(主NN)
- start-yarn.sh(主NN)
- yarn-daemon.sh start resourcemanager(所有RS)
- hive(Hive)

远程服务器模式

用于非Java客户端访问元数据库,在服务器端启动MetaStoreServer,客户端利用Thrift协议通过MetaStoreServer访问元数据库

多用户模式

Remote一体

架构

Node0001

MySQL

Node0002

HIVE(Server-Clien)

Node0003

Node0004

Node0001(MySQL)

MySQL

安装mysql

yum install mysql-server -y

启动mysql

service mysqld start

无密码登陆,更改权限(mysql)

use mysql;

select host,user,password from user;

grant all privileges on . to ‘root’@’%’ identified by ‘123’ with grant option;

grant

all privileges

on .(所有库所有表)

作者:一个孤独漫步者的遐想

相关推荐

如何基于layui的laytpl实现数据绑定的示例代码

antd-mobile ListView长列表的数据更新遇到的坑

jquery实现两个div中的元素相互拖动的方法分析

Python使用sqlite3模块内置数据库