乐趣区

关于大数据:图解大数据-海量数据库查询Hive与HBase详解

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

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 存储的都是非结构化数据。

2)BigTable 简介

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

3)HBase 简介

  • HBase 是一个高牢靠、高性能、面向列、可伸缩的分布式数据库,是谷歌 BigTable 的开源实现。
  • HBase 次要用来存储非结构化和半结构化的涣散数据,指标是解决十分宏大的表,能够通过程度扩大的形式,利用便宜计算机集群解决由超过 10 亿行数据和数百万列元素组成的数据表。

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

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

5)HBase 的特点

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

  • :一个表能够有上亿行,上百万列。
  • 面向列 :面向列表(簇) 的存储和权限管制,列 (簇) 独立检索。
  • 稠密 :对于为空(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 中须要依据行键、列族、列限定符和工夫戳来确定一个单元格。因而,能够视为一个“四维坐标”,即 [行键, 列族, 列限定符, 工夫戳]

2)物理存储模型

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

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

4.HBase 零碎架构

1)HBase 架构组件

HBase 蕴含以下三个组件:

  • Region Server:提供数据的读写服务,当客户端拜访数据时,间接和 Region Server 通信。
  • HBase Master:Region 的调配,DDL 操作(创立表,删除表)。
  • ZooKeeper:是 HDFS 的一部分,保护一个沉闷的集群状态。

2)Region 组件

HBase Tables 通过行健的范畴 (row key range) 被程度切分成多个 Region。一个 Region 蕴含了所有的在 Region 开始键 (startKey) 和完结键 (endKey) 之内的行。
Regions 被调配到集群的节点上,成为 Region Servers,提供数据的读写服务;一个 Region Server 能够服务 1000 个 Region。

3)HMaster 组件

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

4)ZooKeeper 组件

  • HBase 应用 ZooKeeper 作为分布式协调服务,来保护集群中的 Server 状态。
  • ZooKeeper 保护着哪些 Server 是沉闷或是可用的,提供 Server 失败时的告诉。
  • Zookeeper 应用一致性机制来保障公共的共享状态,留神,须要应用奇数的三台或五台机器,保障统一。

5.Hive 介绍

1)Hive 简介

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

Hive 不反对 OLTP,Hive 无奈提供实时查问。

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

3)Hive 特点

Hive 的长处

  • 简略容易上手:提供了类 SQL 查询语言 HQL。
  • 可扩大:个别状况下不须要重启服务 Hive 能够自在的扩大集群的规模。
  • 提供对立的元数据管理。
  • 延展性:Hive 反对用户自定义函数,用户能够依据本人的需要来实现本人的函数。
  • 容错:良好的容错性,节点呈现问题 SQL 仍可实现执行。

Hive 的毛病(局限性)

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

4)Hive 与传统数据库比照

5)Hive 的体系架构

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

6)Hive 中的数据模型

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 的区别与分割

7. 参考资料

  • Lars George 著,代志远 / 刘佳 / 蒋杰 译,《HBase 权威指南》,东南大学出版社,2012
  • Edward Capriolo / Dean Wampler)/ Jason Rutherglen 著,曹坤 译,《Hive 编程指南》,人民邮电出版社,2013
  • 深刻理解 HBase 架构:https://blog.csdn.net/Lic\_LiveTime/article/details/79818695
  • APACHE HIVE TM:http://hive.apache.org/
  • Apache HBase ™ Reference Guide:http://hbase.apache.org/book.html

ShowMeAI 相干文章举荐

  • 图解大数据 | 导论:大数据生态与利用
  • 图解大数据 | 分布式平台:Hadoop 与 Map-reduce 详解
  • 图解大数据 | 实操案例:Hadoop 零碎搭建与环境配置
  • 图解大数据 | 实操案例:利用 map-reduce 进行大数据统计
  • 图解大数据 | 实操案例:Hive 搭建与利用案例
  • 图解大数据 | 海量数据库与查问:Hive 与 HBase 详解
  • 图解大数据 | 大数据分析开掘框架:Spark 初步
  • 图解大数据 | Spark 操作:基于 RDD 的大数据处理剖析
  • 图解大数据 | Spark 操作:基于 Dataframe 与 SQL 的大数据处理剖析
  • 图解大数据 | 综合案例:应用 spark 剖析美国新冠肺炎疫情数据
  • 图解大数据 | 综合案例:应用 Spark 剖析开掘批发交易数据
  • 图解大数据 | 综合案例:应用 Spark 剖析开掘音乐专辑数据
  • 图解大数据 | 流式数据处理:Spark Streaming
  • 图解大数据 | Spark 机器学习(上)- 工作流与特色工程
  • 图解大数据 | Spark 机器学习(下)- 建模与超参调优
  • 图解大数据 | Spark GraphFrames:基于图的数据分析开掘

ShowMeAI 系列教程举荐

  • 图解 Python 编程:从入门到精通系列教程
  • 图解数据分析:从入门到精通系列教程
  • 图解 AI 数学根底:从入门到精通系列教程
  • 图解大数据技术:从入门到精通系列教程

退出移动版