Hadoop生态下的HBase及Hive数据存储层

一. Hadoop

1. 特性

Hadoop是Apache开源分布式计算平台.
擅长存储任意的,半结构化的数据,甚至非结构化的数据,用于存储大容量数据,支持在恰当时间存储和获取数据,并对大文件的存储,批量访问和流式访问做了优化.

3. Hadoop与SQL的区别

  • 由向外扩展代替向上扩展
  • 用键值对代替关系表
    大型数据集往往都是非结构化或半结构化的,键值对更灵活的表述这种关系
  • 用函数式编程(MapReduce)代替声明式查询(SQL)
    SQL使用查询语句.MapReduce使用脚本和代码.
  • 用离线批量处理代替在线处理
    Hadoop是专为离线处理和大规模数据分析而设计的

2. Hadoop2.0版本的主要组件

  • Hadoop Distributed File System (HDFS) for data storage.
    HDFS作为底层存储层,它的机制包含了冗余,容错性和可扩展性.
  • Yet Another Resource Negotiator (YARN), introduced in Hadoop 2, a general-
    purpose scheduler and resource manager. Any YARN application can run on a
    Hadoop cluster.
  • MapReduce, a batch-based, distributed computational engine after Google's paper on MapReduce. In Hadoop 2, MapReduce is
    implemented as a YARN application.


    master_slave architecture.png

2. Hadoop的计算及存储架构

Hadoop程序主要是关于数据处理的,运行在一组分布的计算机上.
,分布式计算和分布式存储都采用主从架构.在开发过程中,应该从非分布式的(即本地)模式到单点伪分布式模式,最后到全分布式模式.

  • NameNode位于HDFS的主端,指导从端的DataNode执行底层的IO任务.
    NameNode跟踪文件的元数据-描述系统中所包含的文件以及每个文件如何被分割成数据块.
  • DataNode提供数据块的备份存储,并持续不断的向NameNode报告,以保持元数据为最新状态.
  • JobTracker会确定代码的执行计划,作为主节点,监控MapReduce作业的整个执行过程,每个TaskTracker负责执行由JobTracker分配的单项任务.
  • SecondeNameNode是一个用于监控HDFS集群状态的辅助守护进程.
    Hadoop专用的序列文件适用于存储键值对的可压缩的二进制文件格式,保持可拆分性并支持二进制的键和值.


    Hadoop计算机存储架构

4. MapReduce

MapperReduce分两个阶段,mapper将输入进行过滤和转换,reducer负责聚合.中间可能还包括data splitting(数据分割)和shuffling(洗牌),也可定制Partitioning(分组)和Combining(合并).

两个阶段的数据变化情况:
Map:(K1, V1) -> list(K2, V2)
Reduce:(K2, List(V2)) -> List(K3, V3)
Hadoop的RPC框架要求远程方法中的参数都实现Writable接口,进而能够序列化对象并进行远程传输.

各阶段流程图:


mapReduce工作.png
  • Partitioning:
    Partitioning is to club the data which should go to the same reducer based on keys. One common partitioning approach is hash based partitioning in which partition number is calculated using hash(key) % number_of_reducers.
  • Shuffle:
    Shuffling is basically transferring map output partitions to the corresponding reduce tasks.
  • Combiner:
    Reducing the data on map node from map output so that reduce task can be operated on less data.
    以降低网络和reducer上的压力.
  • Sorting:
    It is just sorting the data based on keys.
  • Merging:
    This happens on reducer side. Reducer can get data from multiple map tasks and through merging it merges the data of different map tasks in one single unit, maintaining the sorting order.

重分区连接时,mapper首先用组键和标签封装每个记录,组键为连接属性,标记为记录的数据源(在SQL术语中为table),在分区和洗牌阶段,相同组键的所有记录被分配到一组,最后,在具有相同组键的数据集上调用Reducer.

Combine()的作用是将所有值都连接成一个单个记录来输出.

BoomFilter是一种集合的紧凑表示法,是一个数据集的摘要,仅支持特定的查询,查询答案存在小概率的误报,但不会漏报.

为了让键值对可以在集群上移动,MapReduce框架提供一种序列化键值对的方法.

4. Streaming

hadoop Streaming API允许通过Unix命令或可执行脚本编程.

Streaming擅长于快速生成一个用于特性分析的MapReduce作业,优势在于处理一次性的查询,不擅于处理频繁执行的任务.

二. Hive

1. 特性

Hive是建立在Hadoop大规模可扩展系统结构之上的数据仓库层,是一种类SQL(HiveQL)数据仓库基础设置.

2. 存储结构

Hive将表作为基本的数据模型.Hive将元数据存储在标准关系数据库中,Hive自带Derby这个开源,轻量,嵌入式的SQL数据库.

不同于关系型数据库在列上使用索引来加速对这些列的查询,Hive使用分区列(partition column)的概念,根据列的值将表划分为多个分区.分区列和常规的数据列是不同的.

Hive使用桶(Bucket)提供对随机样本数据的高效查询,基于对桶列(bucket column)的散列,桶将分区的数据进一步划分为特定数目的文件.

3. 支持的数据类型

TINYINT 单字节整数
SMALLINT 双字节整数
INT 四字节整数
BIGINT 八字节整数
DOUBLE 双精度浮点数
STRING 字符序列

三. HBase

1. 特性

HBase是建立在Hadoop文件系统之上的分布式面向列的,分布式的,持久的,强一致性的数据库.

HBase是一个仿照谷歌的大表结构的数据模型,使用Java编写,可以快速随机访问海量结构化数据,利用了Hadoop的文件系统(HDFS)作为底层存储系统以提供容错能力,达到完全分布式和高可用性.

HBase是一个可扩展的数据存储系统,旨在用于随机读写(访问)结构化数据.
Hadoop只能进行批处理,按照顺序存储的行为访问数据.

只考虑单一的索引,保证行原子性和"读-修改-写"操作.

在进行负载均衡和故障恢复时对客户端是透明的.

2. 存储结构

2.1 列式存储

HBase是按照BigTable模型实现的是一个稀疏的,分布式的,持久的多维排序映射,有行键,列键和时间戳索引.HBase以列式存储的格式在磁盘上存储数据,属于非关系型数据库Not-Only-SQL(NoSQL).

列式存储数据库

以列为单位聚合数据,然后将列值顺序的存入磁盘.
列式存储的出现主要基于这样一种假设:对于特定的查询,不是所有的值都是必须的,尤其在分析型数据库里,
优点是减少I/O,由于列的数据类型相似所以压缩率更高.

2.2 存储单元

最基本的单位是列,一列或多列形成一行,并由唯一的行键(row key)来确定存储.一个表有若干行,
行数据的存取操作是原子的,可以读写任意数目的列.
一行由若干列组成,若干列又构成一个列族(Column Family).一个列族的所有列存储在一个底层的存储文件HFile里.
每一列的值或单元格的值都具有时间戳.

以下为HBase的表结构示例:


HBase的Table结构.png
2.3 存储文件

HFile存储的是经过排序的键值映射结构,文件内部由连续的块组成,块的索引信息存储在文件的尾部.当把HFile打开并加载到内存中时,索引信息会优先加载到内存中,每个块的默认大小是64KB.
每个HFile都有一个块索引,通过一个磁盘查找就可以实现查询.
存储文件通常保存在Hadoop分布式文件系统(HDFS)中,HDFS提供了一个可扩展的,持久的,冗余的HBase存储层.

2.4 存储过程

每次更新数据时,先预写日志(write-ahead log),将数据记录在提交日志(commit log)中,然后才会将这些数据写入内存中的memstore中,一旦内存数据达到最大值,会将这些数据移除内存作为HFile文件刷写到磁盘中.

3. 架构

3.1. Region

HBase中扩展和负载均衡的基本单元称为region.
region本质上以行键排序的连续存储的区间.表中每行数据只由一台服务器所服务,因此具有强一致性.
Region等同于数据库分区中用的范围划分(range partition)

3.2. 架构

HBase中有三个主要组件:客户端库,一台主服务器,多台region服务器,可动态增加和移除region服务器.主服务器主要负责利用Apache ZooKeeper为region服务器分配region.

master服务器负责跨region服务器,对全局region进行负载均衡和集群管理,还提供了元数据的管理操作(例如建表和创建列族).

region服务器负责为他们服务的region提供读写请求,客户端直接与region服务器通信,处理所有数据相关的操作.


Hbase结构.png
3.2. 分区

HBase支持自动分区,分区(Sharding),主要描述了逻辑上水平划分数据的方案.这个方案的特点是将数据份文件或分服务器存储,而不是连续存储.

数据库分区的方式:
范围分区,散列分区,列表分区,符合分区(范围-散列分区,范围-列表分区)

HBase有单机,伪单机,全分布式运行模式.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容