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