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