教程地址:http://www.showmeai.tech/tutorials/84
本文地址:http://www.showmeai.tech/article-detail/172
声明:版权所有,转载请联系平台与作者并注明出处
大家知道在计算机领域,关系数据库大量用于数据存储和维护的场景。大数据的出现后,很多公司转而选择像 Hadoop/Spark 的大数据解决方案。
Hadoop使用分布式文件系统,用于存储大数据,并使用MapReduce来处理。Hadoop擅长于存储各种格式的庞大的数据,任意的格式甚至非结构化的处理。
Hadoop非常适合批量处理任务,但它只以顺序方式访问数据。这意味着如果要查询,必须搜索整个数据集,即使是最简单的搜索工作。
当处理结果在另一个庞大的数据集,也是按顺序处理一个巨大的数据集。在这一点上,一个新的解决方案,需要访问数据中的任何点(随机访问)单元。
HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。
HBase是一个数据模型,类似于谷歌的Bigtable设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。
它是Hadoop的生态系统,提供对数据的随机实时读/写访问,是Hadoop文件系统的一部分。我们可以直接或通过HBase的存储HDFS数据。使用HBase在HDFS读取消费/随机访问数据。 HBase在Hadoop的文件系统之上,并提供了读写访问。
要提到HBase,就要顺带提到google的Bigtable。HBase是在谷歌BigTable的基础之上进行开源实现的,是一个高可靠、高性能、面向列、可伸缩的分布式数据库,可以用来存储非结构化和半结构化的稀疏数据。
BigTable和HBase存储的都是非结构化数据。
BigTable是一个用于管理结构化数据的分布式存储系统,构建在GFS、Chubby、SSTable等google技术之上。本质上说,BigTable是一个稀疏的、分布式的、持久化的、多维的、排序的键值(key-value)映射。
HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是谷歌BigTable的开源实现。
HBase主要用来存储非结构化和半结构化的松散数据,目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表。
HBase在大数据生态环境中的位置如下图所示,它建立在Hadoop HDFS之上的分布式面向列的数据库。
如下图所示,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的时候
组件
描述
表 Table
HBase采用表来组织数据,表由行和列组成,列划分为若干个列族
行 Row
每个HBase表都由若干行组成,每个行由行键(row key)来标识
列族 Column Family
一个HBase表被分组成许多“列族”(Column Family)的集合
列限定符Column Qualifier
列族里的数据通过列限定符(或列)来定位
单元格 Cell
通过行、列族和列限定符确定一个单元格,单元格中存储的数据都视为byte
时间戳 Times tamp
同一份数据的多个版本,时间戳用于索引数据版本
HBase中需要根据行键、列族、列限定符和时间戳来确定一个单元格。因此,可以视为一个“四维坐标”,即 [行键, 列族, 列限定符, 时间戳]
。
Table在行的方向上分割为多个Region,每个Region分散在不同的RegionServer中。
每个HRegion由多个Store构成,每个Store由一个MemStore和0或多个StoreFile组成,每个Store保存一个Columns Family。StoreFile以HFile格式存储在HDFS中。
HBase包含以下三个组件:
HBase Tables 通过行健的范围(row key range)被水平切分成多个Region。一个Region包含了所有的在Region开始键(startKey)和结束键(endKey)之内的行。
Regions被分配到集群的节点上,成为Region Servers,提供数据的读写服务;一个Region Server可以服务1000个Region。
Hive是基于Hadoop的一个数据仓库工具,用于结构化数据的查询、分析和汇总。Hive提供类SQL查询功能,它将SQL转换为MapReduce程序。
Hive不支持OLTP,Hive无法提供实时查询。
Hive的优点
Hive的缺点(局限性)
Hive 中所有的数据都存储在 HDFS 中Hive 中包含以下数据模型:
作用
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
作用
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);
Hive并不适合需要低延迟的应用,适合于大数据集的批处理作业:
手机扫一扫
移动阅读更方便
你可能感兴趣的文章