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

72次阅读

共计 5473 个字符,预计需要花费 14 分钟才能阅读完成。

作者:韩信子 @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 ShellHBase 的命令行工具 最简略的接口适宜 HBase 治理应用
Thrift Gateway利用 Thrift 序列化技术 反对 C ++、PHP、Python 等适宜其余异构零碎在线拜访 HBase 表数据
REST Gateway解除了语言限度反对 REST 格调的 Http API 拜访 HBase
Pig应用 Pig Latin 流式编程语言来解决 HBase 中的数据适宜做数据统计
Hive简略当须要以相似 SQL 语言形式来拜访 HBase 的时候

3.HBase 数据模型

1)逻辑存储模型

组件形容
表 TableHBase 采纳表来组织数据,表由行和列组成,列划分为若干个列族
行 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
创立表并创立索引 dsCREATE 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 数学根底:从入门到精通系列教程
  • 图解大数据技术:从入门到精通系列教程

正文完
 0