作者:韩信子 @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 的 Bigtable。HBase 是在谷歌 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 数学根底:从入门到精通系列教程
- 图解大数据技术:从入门到精通系列教程