Hive基本原理及配置Mysql作为Hive的默认数据库
Hive是什么?
- Hive是基于Hadoop之上的数据仓库;
- Hive是一种可以存储、查询、分析存储在hadoop中的大规模数据
- Hive定义了简单的类SQL查询语言,成为HQL,它允许熟悉SQL的用户查询数据
- 允许熟悉MapReduce开发者的开发自定义的mapper和reducer来处理内建的mapper和reducer无法完成的复杂的分析工作
- Hive没有专门的数据格式
- Hive:数据仓库。
- Hive:解释器,编译器,优化器等。
- Hive运行时,元数据存储在关系型数据库里面。
1. 为什么选择Hive
- 基于Hadoop的大数据的计算/扩展能力
- 支持SQL like查询语言
- 统一的元数据管理
- 简单编程
2.Hive内部是什么
Hive是建立在Hadoop上的数据仓库基础架构。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL查询语言,称为QL,它允许熟悉SQL的用户查询数据。同时,这个语言也允许熟悉MapReduce开发者的开发自定义的mapper和reducer来处理内建的mapper和reducer无法完成的复杂的分析工作。
本质上讲,Hive是一个SQL解析引擎,Hive可以把SQL查询转换为MapReduce中的job来运行。Hive有一套映射工具,可以把SQL转换为MapReduce中的job,可以把SQL中的表、字段转换为HDFS中的文件(夹)以及文件中的列。这套映射工具称之为metastore,一般存放在derby、mysql中。
Hive是SQL解析引擎,它将SQL语句转译成M/R Job然后在Hadoop执行。
Hive的表其实就是HDFS的目录/文件,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/R Job里使用这些数据。
Hive在hdfs中的默认位置是/user/hive/warehouse
3. Hive的系统架构

- 用户接口
主要有3个:包括CLI,JDBC/ODBC,WebUI。
CLI,即Shell命令行;
JDBC/ODBC是Hive的Java,与使用传统数据库JDBC的方式类似
WebGUI是通过浏览器访问Hive
- 元数据存储
通常是存储在关系数据库如mysql,derby中。Hive将元数据存储在数据库中(metastore),目前只支持mysql,derby。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
- 解释器、编译器、优化器、执行器
完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。Hive的数据存储在HDFS中,大部分的查询由MapReduce完成(包含*的查询,比如select * from table不会生成MapReduce任务)
- Hadoop
用HDFS进行存储,利用MapReduce进行计算。
- HIVE的架构

Hive的架构:
——编译器(compiler)将一个Hive QL转换操作符
——操作符是Hive的最小的处理单元
——每个操作符代表HDFS的一个操作或者一道MapReduce作业
Hive的三种模式:
——local模式,此模式连接到一个In-memory的数据块Derby,一般用于Unit Test.
——单用户模式,通过网络连接到一个数据库中,是最经常使用到的模式
——多用户模式,或者远程服务器模式。 用于非Java客户端访问元数据库,在服务器端启动MetaStoreServer,客户端利用Thrift协议通过MetaStoreServer访问元数据库。
local模式:

单用户模式:

多用户模式:(远程服务器模式)

HIVE的Metastore:
Metastore:hive元数据的集中存放地,metastore默认使用内嵌的derby数据库作为存储引擎。
Derby引擎的缺点,一次只能打开一个会话。
使用Mysql作为外置存储引擎,多用户同时访问。
4. 配置MySql的metastore
PS:metastore默认使用derby数据库作为存储引擎,但是一次只能打开一个会话,修改成Mysql作为外置存储引擎,进行多用户同时访问。
前提:已经安装MYSQL
未安装mysql,可参考文章:https://www.cnblogs.com/wendyw/p/11389741.html
- 1.上传mysql-connector-java-5.1.10.jar到$HIVE_HOME/lib
- 2.登录MYSQL,创建数据库hive
#mysql -uroot -pitcast mysql>create database hive; mysql>GRANT all ON hive.* TO root@'%' IDENTIFIED BY 'itcast'; mysql>flush privileges; mysql>set global binlog_format='MIXED';
- 3.把mysql的数据库字符类型改为latin1
修改$HIVE_HOME/conf/hive-site.xml,其中hadoop表示自己当前虚拟机的主机名,用户名和密码都是mysql登录的用户名、密码,hive-site.xml配置文件如下:
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop:3306/hive?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>itcast</value> </property>
Hive基本原理及配置Mysql作为Hive的默认数据库的更多相关文章
- Hive安装与配置——深入浅出学Hive
第一部分:软件准备与环境规划 Hadoop环境介绍 •Hadoop安装路径 •/home/test/Desktop/hadoop-1.0.0/ •Hadoop 元数据存放目录 •/home/test/ ...
- HIVE配置mysql metastore
HIVE配置mysql metastore hive中除了保存真正的数据以外还要额外保存用来描述库.表.数据的数据,称为hive的元数据.这些元数据又存放在何处呢? 如果不修改配置hive ...
- 1.9 Hive常见属性配置
一.Hive数据仓库位置配置 1. # Hive数据仓库位置配置: 默认位置(hive根目录): /user/hive/warehouse 注意事项: *在仓库目录下,没有对默认的数据库default ...
- spark sql metastore 配置 mysql
本文主要介绍如何为 spark sql 的 metastore 配置成 mysql . spark 的版本 2.4.0 版本 hive script 版本为 hive 1.2.2 mysql 为 5. ...
- CentOS 7安装配置MySQL 5.7
概述 前文记录了在Windows系统中安装配置MySQL 5.7(前文连接:https://www.cnblogs.com/Dcl-Snow/p/10513925.html),由于安装部署大数据环境需 ...
- Hive 2、Hive 的安装配置(本地MySql模式)
一.前提条件 安装了Zookeeper.Hadoop HDFS HA 安装方法: http://www.cnblogs.com/raphael5200/p/5154325.html 二.安装Mysq ...
- Hive初步使用、安装MySQL 、Hive配置MetaStore、配置Hive日志《二》
一.Hive的简单使用 基本的命令和MySQL的命令差不多 首先在 /opt/datas 下创建数据 students.txt 1001 zhangsan 1002 lisi 1003 wangwu ...
- Hive安装与配置--- 基于MySQL元数据
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过 ...
- hive的安装与配置 mysql安装 启动
三种模式 内嵌模式:元数据保持在内嵌的derby模式,只允许一个会话连接 本地独立模式:在本地安装Mysql,吧元数据放到mySql内 远程模式:元数据放置在远程的Mysql数据库 1.下载Hive安 ...
随机推荐
- CentOS 8.x 下尝试安装.Net 5 的运行时
1.背景 看着不管是群里还是公众号里这几天最热闹就是.Net 5.0 正式版的发布.C#9. 当然要开发.net 5.0 的项目就需要把VisualStudio升级的v16.8.0版本了.升级后自带着 ...
- 01MySQL数据库介绍
一.数据库基本介绍 目标:了解数据库的功能和常见数据库分类.数据库产品 数据库基本知识 数据库分类 SQL简介 MySQL访问 1.数据库基本知识 目标:了解数据库的概念和数据库的作用 概念 数据库: ...
- shell编程之算术扩展(引号、命令替换、算术扩展)
1.单引号 .双引号.反引号的区别 单引号:忽略所有特殊字符 双引号:忽略大部分特殊字符($ `等字符除外) [root@tlinux shell]# echo '*' * [root@tlinux ...
- 你只会用 StringBuilder?试试 StringJoiner,真香!
你只会用 StringBuilder/ StringBuffer 拼接字符串? 那你就 OUT 了!! 如果需要拼接分隔符的字符串,建议使用 Java 8 中的这款拼接神器:StringJoiner, ...
- Linux操作系统选择
主流的操作系统 ubuntu centos debian oracle linux 主要使用的操作系统就是上面几个,主要是ubuntu和centos,debian是基于ubuntu改的,oracle ...
- SQL Server 常用近百条SQL语句(收藏版)
1. sqlserver查看实例级别的信息,使用SERVERPROPERTY函数 select SERVERPROPERTY ('propertyname') 2. 查看实例级别的某个参数XX的配置 ...
- 如何使用GitHub创建Maven私有仓库
[Github上创建仓库] 首先,在GitHub上创建自己的仓库(mvn-repo): [配置本地setting文件] 找到本地的maven settings文件,配置server: 有两种选择,可以 ...
- python-网络安全编程第九天(json模块、zoomeye采集)
前言 其实这篇应该是昨天必须完成的但是昨天emmmmm 学习进度有点慢 今天早上起来早点完成了这些的学习 昨天计划学习内容还差一道CTFemmm 不管了 先写一下今天的计划 开始锻炼身体去. pyth ...
- 面试BAT问的最多的27道MyBatis 面试题(含答案和思维导图总结)
前言 关于MyBatis总结了一个思维导图希望对大家有帮助 什么是 Mybatis? Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身, ...
- FL Studio 插件使用技巧——Fruity Reeverb 2(下)
了解大教堂声场的特点 上节教程中我们说到,混响具有营造空间感的作用.当我们想要在FL Studio软件中用Fruity Reeverb 2 插件有目标地模仿一个特定空间的环境时,我们需要充分了解该空间 ...