图解大数据 | Hive与HBase详解@海量数据库查询

简介: HBase是建立在Hadoop文件系统之上的、分布式面向列的数据库,包含Region Server、HBase Master、ZooKeeper等三个组件。Hive是基于Hadoop的一个数据仓库工具,用于结构化数据的查询、分析和汇总。

ShowMeAI研究中心

作者:韩信子@ShowMeAI
教程地址http://www.showmeai.tech/tutorials/84
本文地址http://www.showmeai.tech/article-detail/172
声明:版权所有,转载请联系平台与作者并注明出处

收藏ShowMeAI查看更多精彩内容


1.大数据与数据库

1)从Hadoop到数据库

大家知道在计算机领域,关系数据库大量用于数据存储和维护的场景。大数据的出现后,很多公司转而选择像 Hadoop/Spark 的大数据解决方案。

Hadoop使用分布式文件系统,用于存储大数据,并使用MapReduce来处理。Hadoop擅长于存储各种格式的庞大的数据,任意的格式甚至非结构化的处理。

2)Hadoop的限制

Hadoop非常适合批量处理任务,但它只以顺序方式访问数据。这意味着如果要查询,必须搜索整个数据集,即使是最简单的搜索工作。

当处理结果在另一个庞大的数据集,也是按顺序处理一个巨大的数据集。在这一点上,一个新的解决方案,需要访问数据中的任何点(随机访问)单元。

3)HBase与大数据数据库

HBase是建立在Hadoop文件系统之上的分布式面向列的数据库

HBase是一个数据模型,类似于谷歌的Bigtable设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。

它是Hadoop的生态系统,提供对数据的随机实时读/写访问,是Hadoop文件系统的一部分。我们可以直接或通过HBase的存储HDFS数据。使用HBase在HDFS读取消费/随机访问数据。 HBase在Hadoop的文件系统之上,并提供了读写访问。

2.BigTable与HBase

要提到HBase,就要顺带提到google的BigtableHBase是在谷歌BigTable的基础之上进行开源实现的,是一个高可靠、高性能、面向列、可伸缩的分布式数据库,可以用来存储非结构化和半结构化的稀疏数据。

1)结构化数据和非结构化数据

BigTable和HBase存储的都是非结构化数据。

海量数据库与查询; Hive与HBase详解; BigTable与HBase; 结构化数据&非结构化数据; 6-1

2)BigTable简介

BigTable是一个用于管理结构化数据的分布式存储系统,构建在GFS、Chubby、SSTable等google技术之上。本质上说,BigTable是一个稀疏的、分布式的、持久化的、多维的、排序的键值(key-value)映射。

海量数据库与查询; Hive与HBase详解; BigTable与HBase; BigTable简介; 6-2

3)HBase简介

  • HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是谷歌BigTable的开源实现。
  • HBase主要用来存储非结构化和半结构化的松散数据,目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表。

海量数据库与查询; Hive与HBase详解; BigTable与HBase; HBase简介; 6-3

4)HBase在大数据生态环境中的位置

HBase在大数据生态环境中的位置如下图所示,它建立在Hadoop HDFS之上的分布式面向列的数据库。

海量数据库与查询; Hive与HBase详解; BigTable与HBase; HBase在大数据生态环境中的位置; 6-4

5)HBase的特点

如下图所示,HBase有以下特点:

海量数据库与查询; Hive与HBase详解; BigTable与HBase; HBase的特点; 6-5

  • :一个表可以有上亿行,上百万列。
  • 面向列:面向列表(簇)的存储和权限控制,列(簇)独立检索。
  • 稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
  • 无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。
  • 数据多版本:每个单元的数据有多个版本,默认情况下,版本号是单元格插入时的时间戳。
  • 数据类型单一:HBase中的数据都是字符串,没有类型。 

6)HBase的访问接口

类型 特点 场合
Native Java API 最常规和高效的访问方式 适合Hadoop MapReduce作业并行批处理HBase表数据
HBase Shell HBase的命令行工具 最简单的接口 适合HBase管理使用
Thrift Gateway 利用Thrift序列化技术 支持C++、PHP、Python等 适合其他异构系统在线访问HBase表数据
REST Gateway 解除了语言限制 支持REST风格的Http API访问HBase
Pig 使用Pig Latin流式编程语言来处理HBase中的数据 适合做数据统计
Hive 简单 当需要以类似SQL语言方式来访问HBase的时候

3.HBase数据模型

1)逻辑存储模型

组件 描述
表 Table HBase采用表来组织数据,表由行和列组成,列划分为若干个列族
行 Row 每个HBase表都由若干行组成,每个行由行键(row key)来标识
列族 Column Family 一个HBase表被分组成许多“列族”(Column Family)的集合
列限定符Column Qualifier 列族里的数据通过列限定符(或列)来定位
单元格 Cell 通过行、列族和列限定符确定一个单元格,单元格中存储的数据都视为byte
时间戳 Times tamp 同一份数据的多个版本,时间戳用于索引数据版本

HBase中需要根据行键、列族、列限定符和时间戳来确定一个单元格。因此,可以视为一个“四维坐标”,即 [行键, 列族, 列限定符, 时间戳]

海量数据库与查询; Hive与HBase详解; HBase数据模型; 逻辑存储模型; 6-6

2)物理存储模型

Table在行的方向上分割为多个Region,每个Region分散在不同的RegionServer中。

海量数据库与查询; Hive与HBase详解; HBase数据模型; 物理存储模型; 6-7

每个HRegion由多个Store构成,每个Store由一个MemStore和0或多个StoreFile组成,每个Store保存一个Columns Family。StoreFile以HFile格式存储在HDFS中。

海量数据库与查询; Hive与HBase详解; HBase数据模型; 物理存储模型; 6-8

4.HBase系统架构

1)HBase架构组件

HBase包含以下三个组件:

  • Region Server:提供数据的读写服务,当客户端访问数据时,直接和Region Server通信。
  • HBase Master:Region的分配,DDL操作(创建表,删除表)。
  • ZooKeeper:是HDFS的一部分,维护一个活跃的集群状态。

海量数据库与查询; Hive与HBase详解; HBase系统架构; HBase架构组件; 6-9

2)Region组件

HBase Tables 通过行健的范围(row key range)被水平切分成多个Region。一个Region包含了所有的在Region开始键(startKey)和结束键(endKey)之内的行。
Regions被分配到集群的节点上,成为Region Servers,提供数据的读写服务;一个Region Server可以服务1000个Region。

海量数据库与查询; Hive与HBase详解; HBase系统架构; HBase架构组件; Region; 6-10

3)HMaster组件

海量数据库与查询; Hive与HBase详解; HBase系统架构; HBase架构组件; HMaster; 6-11

  • 分配Region,DDL操作(创建表, 删除表)。
  • 协调各个Reion Server:在启动时分配Region、在恢复或是负载均衡时重新分配Region;监控所有集群当中的Region Server实例,从ZooKeeper中监听通知。
  • 提供创建、删除、更新表的接口。

4)ZooKeeper组件

海量数据库与查询; Hive与HBase详解; HBase系统架构; HBase架构组件; ZooKeeper; 6-12

  • HBase使用ZooKeeper作为分布式协调服务,来维护集群中的Server状态。
  • ZooKeeper维护着哪些Server是活跃或是可用的,提供Server 失败时的通知。
  • Zookeeper使用一致性机制来保证公共的共享状态,注意,需要使用奇数的三台或五台机器,保证一致。

5.Hive介绍

1)Hive简介

Hive是基于Hadoop的一个数据仓库工具,用于结构化数据的查询、分析和汇总。Hive提供类SQL查询功能,它将SQL转换为MapReduce程序。

Hive不支持OLTP,Hive无法提供实时查询。

2)Hive在大数据生态环境中的位置

海量数据库与查询; Hive与HBase详解; Hive介绍; Hive在大数据; 生态环境中的位置; 6-13

3)Hive特点

Hive的优点

  • 简单容易上手:提供了类SQL查询语言HQL。
  • 可扩展:一般情况下不需要重启服务Hive可以自由的扩展集群的规模。
  • 提供统一的元数据管理。
  • 延展性:Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
  • 容错:良好的容错性,节点出现问题SQL仍可完成执行。

海量数据库与查询; Hive与HBase详解; Hive介绍; Hive特点; 6-14

Hive的缺点(局限性)

  • Hive的HQL表达能力有限:迭代式算法无法表达,比如pagerank;数据挖掘方面,比如kmeans。
  • Hive的效率比较低:Hive自动生成的MapReduce作业,不够智能化;Hive调优比较困难,粒度较粗;Hive可控性差。

4)Hive与传统数据库对比

海量数据库与查询; Hive与HBase详解; Hive介绍; Hive VS 传统数据库; 6-15

5)Hive的体系架构

海量数据库与查询; Hive与HBase详解; Hive介绍; Hive的体系架构; 6-16

  • client 三种访问方式:CLI、JDBC/ODBC、WEBUI。
  • Meta store 元数据:表名、表所属数据库、表拥有者、列、分区字段、表类型、表数据所在的目录等,默认存储在自带的derby数据库中。
  • Driver:解析器、编译器、优化器、执行器。

6)Hive中的数据模型

海量数据库与查询; Hive与HBase详解; Hive介绍; Hive中的数据模型; 6-17

Hive 中所有的数据都存储在 HDFS 中Hive 中包含以下数据模型:

  • 表(Table)
  • 外部表(External Table)
  • 分区(Partition)
  • 桶(Bucket)

6.SQL介绍与Hive应用场景

1)数据库操作和表操作

作用 HiveQL
查看所有数据库 SHOW DATABASES;
使用指定的数据库 USE database_name;
创建指定名称的数据库 CREATE DATABASE database_name;
删除数据库 DROP DATABASE database_name;
创建表 CREATE TABLE pokes (foo INT, bar STRING)
查看所有的表 SHOW TABLES
支持模糊查询 SHOW TABLES 'TMP'
查看表有哪些分区 SHOW PARTITIONS TMP_TABLE
查看表结构 DESCRIBE TMP_TABLE
创建表并创建索引ds CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING)
复制一个空表 CREATE TABLE empty_key_value_store LIKE key_value_store
表添加一列 ALTER TABLE pokes ADD COLUMNS (new_col INT)
更改表名 ALTER TABLE events RENAME TO 3koobecaf

2)查询语句

作用 HiveQL
检索信息 SELECT from_columns FROM table WHERE conditions;
选择所有的数据 SELECT * FROM table;
行筛选 SELECT * FROM table WHERE rec_name = "value";
多个限制条件 SELECT * FROM TABLE WHERE rec1 = "value1" AND rec2 = "value2";
选择多个特定的列 SELECT column_name FROM table;
检索unique输出记录 SELECT DISTINCT column_name FROM table;
排序 SELECT col1, col2 FROM table ORDER BY col2;
逆序 SELECT col1, col2 FROM table ORDER BY col2 DESC;
统计行数 SELECT COUNT(*) FROM table;
分组统计 SELECT owner, COUNT(*) FROM table GROUP BY owner;
求某一列最大值 SELECT MAX(col_name) AS label FROM table;
从多个表中检索信息 SELECT pet.name, comment FROM pet JOIN event ON (pet.name = event.name);

3)Hive的应用场景

Hive并不适合需要低延迟的应用,适合于大数据集的批处理作业:

  • 日志分析:大部分互联网公司使用hive进行日志分析,包括百度、淘宝等。例如,统计网站一个时间段内的pv、uv,多维度数据分析等。
  • 海量结构化数据离线分析。

4)Hive和HBase的区别与联系

海量数据库与查询; Hive与HBase详解; SQL介绍&Hive应用; Hive VS HBase; 6-18

参考资料

【大数据技术与处理】推荐阅读

ShowMeAI 系列教程推荐

ShowMeAI用知识加速每一次技术成长

目录
相关文章
|
存储 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL 数据库课程设计:开启数据宇宙的传奇之旅
本文全面剖析数据库课程设计 MySQL,展现其奇幻魅力与严峻挑战。通过实际案例凸显数据库设计重要性,详述数据安全要点及学习目标。深入阐述备份与恢复方法,并分享优秀实践项目案例。为开发者提供 MySQL 数据库课程设计的全面指南,助力提升数据库设计与管理能力,保障数据安全稳定。
大数据新视界--大数据大厂之MySQL 数据库课程设计:开启数据宇宙的传奇之旅
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
存储 关系型数据库 MySQL
大数据新视界 --面向数据分析师的大数据大厂之 MySQL 基础秘籍:轻松创建数据库与表,踏入大数据殿堂
本文详细介绍了在 MySQL 中创建数据库和表的方法。包括安装 MySQL、用命令行和图形化工具创建数据库、选择数据库、创建表(含数据类型介绍与选择建议、案例分析、最佳实践与注意事项)以及查看数据库和表的内容。文章专业、严谨且具可操作性,对数据管理有实际帮助。
大数据新视界 --面向数据分析师的大数据大厂之 MySQL 基础秘籍:轻松创建数据库与表,踏入大数据殿堂
|
11月前
|
存储 缓存 分布式计算
OSS大数据分析集成:MaxCompute直读OSS外部表优化查询性能(减少数据迁移的ETL成本)
MaxCompute直读OSS外部表优化方案,解决传统ETL架构中数据同步延迟高、传输成本大、维护复杂等问题。通过存储格式优化(ORC/Parquet)、分区剪枝、谓词下推与元数据缓存等技术,显著提升查询性能并降低成本。结合冷热数据分层与并发控制策略,实现高效数据分析。
326 2
|
关系型数据库 MySQL 数据安全/隐私保护
大数据新视界--大数据大厂之MySQL 数据库课程设计:数据安全深度剖析与未来展望
本文深入探讨数据库课程设计 MySQL 的数据安全。以医疗、电商、企业案例,详述用户管理、数据加密、备份恢复及网络安全等措施,结合数据安全技术发展趋势,与《大数据新视界 -- 大数据大厂之 MySQL 数据库课程设计》紧密关联,为 MySQL 数据安全提供全面指南。
大数据新视界--大数据大厂之MySQL 数据库课程设计:数据安全深度剖析与未来展望
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
SQL 大数据 数据挖掘
玩转大数据:从零开始掌握SQL查询基础
玩转大数据:从零开始掌握SQL查询基础
479 35
|
SQL 存储 分布式数据库
分布式存储数据恢复—hbase和hive数据库数据恢复案例
分布式存储数据恢复环境: 16台某品牌R730xd服务器节点,每台服务器节点上有数台虚拟机。 虚拟机上部署Hbase和Hive数据库。 分布式存储故障: 数据库底层文件被误删除,数据库不能使用。要求恢复hbase和hive数据库。
520 12
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。