博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hadoop Hbase简介(5)
阅读量:6140 次
发布时间:2019-06-21

本文共 2870 字,大约阅读时间需要 9 分钟。

hot3.png

Map-Reduce数据分析之二

1. hadoop家族

(1) Pig

Hadoop客户端

使用类似SQL的面向数据流的语言Pig Latin

Pig Latin可以完成排序,过滤,求和,聚组,关联等操作,可以支持自定义函数

Pig自动把Pig Latin映射为Map-Reduce作业上传到集群运行,减少用户编写Java程序的苦恼

三种运行方式:Grunt shell,脚本方式,嵌入式

(2) Hbase

Google Bigtable的开源实现

列示数据库

可集群化

可以使用shell web api等多种方式访问

适合高速读写(insert)的场景

HQL查询语言(Hbase Query Language)

NoSQL的典型代表产品(not only Sql)

(3) Hive

数据仓库工具,可以把Hadoop下的原始结构化数据变成Hive中的表

支持一种与Sql几乎完全相同的语言HiveQL,除了不支持更新,索引和事务,几乎sql的其他特征都能支持

可以看成是从SQL到Map-Reduce的映射器

提供Shell,JDBC/ODBC ,Thrift,web等接口

(4) Zookeeper

Google chubby的开源实现

用以协调分布式系统上各种服务,例如确认消息是否准确到达,防止单点失效,处理负载均衡等

应用场景:Hbase,实现NameNode自动切换

工作原理:领导者,跟随者以及选举过程

(5) Sqoop

用于在Hadoop和关系型数据库之间的交换数据

通过JDBC接口连入关系数据库

(6) Avro

数据序列化工具,由Hadoop的创始人Doug Cutting主持开发

用于支持大批量数据交换的应用,支持二进制序列化方式,可以便捷,快速的处理大量数据

动态语言友好,Avro提供的机制使动态语言可以方便地处理Avro数据Thrift 接口

(7) ChukWa

架构在Hadoop之上的数据采集与分析框架

主要进行日志采集和分析

通过安装在收集节点的“代理”采集最原始的日志数据,代理将数据发给收集器

收集器定时将数据写入Hadoop集群

指定定时启动的Map-Reduce作业对数据进行加工处理和分析

Hadoop基础管理中心(HICC)最终展示数据

(8) Cassandra

NoSQL,分布式的key-value型数据库,由facebook贡献

与Hbase类似,也是借鉴Google Bigtable 的思想体系

只有顺序写,没有随机写的设计,满足高负荷情形的性能要求

2. Hbase简介

Hbase是一个分布式,面向列的开源数据库,该技术来源于Chang et al所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”

就像Bigtable利用了Google文件系统所提供的分布式数据局存储一样,Hbase在Hadoop之上提供了类似于Bigtable的能力

Hbase是Apache的Hadoop项目的子项目

Hbase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库,另一个不同的是Hbase基于列而不是基于行模式

3. Hbase的逻辑模型

以表的形式存放数据表由行与列组成,每个列属于某个列族,由行和列确定的存储单元为元素

每个元素保存了同一份数据的多个版本,由时间戳来标示区分

(1)行健

行健是数据行在表里的唯一标石,并作为检索记录的主键

访问表里的行只有三种方式:通过单个行健访问,给定行健的范围访问,全表扫描

行健可以是最大长度不超过64kb的任意字符串,并按照字典序存储

对于经常要一起读取的行,要对行健值精心设计,以便他们能放在一起存储

(2)列族与列

列表示为<列族>:<限定符>

Hbase在磁盘上按照列族存储数据,这种列示数据库的设计非常适合于数据分析的情形

列族里的元素最好具有相同的读写方式(例如等长的字符串),以提高性能

(3)时间戳

对应每次数据操作的时间,可由系统自动生成,也可由用户显示复制

Hbase支持两种数据版本的回收方式:每个数据单元,只存储指定个数的最新版本;保存指定时间长度的版本(例如7天)

常见的客户端时间查询:“某个时刻起的最新数据”或“给我全部版本的数据”

元素有 行健,列族:限定符,时间戳唯一决定

元素以字节码形式存放,没有类型之分

4. Hbase物理模型

(1) Region和Region服务器

表在行方向上,按照行健范围划分成若干的Region

每个表最初只有一个Region,当记录数增加到超过某个阈值时,开始分裂成两个region

物理上所有数据存放在HDFS,又region服务器提供的region管理

一台物理节点只能跑一个HRegionServer

一个HregionServer可以管理多个region实例

一个region实例包括Hlog日志和存放数据的store

Hmaster作为总控节点

Zookeeper负责调度

(2) Hlog

用于灾难恢复

预写式日志,记录所有更新操作,操作先记录进日志,数据才会写入

(3)-ROOT-和.META.表

Hbase中有两张特殊的Table,-ROOT-和.META.

.META.记录了用户表的region信息,可以有多个region

-ROOT-记录了.META.表的region信息,只有一个region信息

Zookeeper中记录了-ROOT-表的location

(3) Memstore与storefile

一个region由多个store组成,每个store包含一个列族的所有数据

Store包括位于内存的memstore和位于硬盘的的storefile

写操作先写入memstore,当memstore中数据量达到某个阈值,Hregionserver会启动flashicache进程写入storefile,每次写入形成单独的storefile

当storefile文件的数量增长到一定阈值后,系统会进行合并,在合并过程中会进行版本合并和删除工作,形成更大的storefile

当storefile大小超过一定阈值后,会把当前的region分隔为两个,并由Hmaster分配到相应的region服务器,实现负载均衡

客户端检索数据时,现在memstore找,找不到在找storefile

5. Hbase vs Oracle

索引不同造成行为的差异

Hbase适合大量数据同时又有读的情况

Hbase的瓶颈是硬盘传输速度,Oracle的瓶颈是硬盘寻道时间

Hbase很适合寻找按照时间排序的top n的场景

(1) 传统数据库的行式存储

数据存放在数据文件内

数据文件的基本组成单位:块/页

快内结构:块头,数据区

(2) 行标识访问:B树索引

B树索引原理

(3) Bigtable的LSM索引

转载于:https://my.oschina.net/u/1462191/blog/213825

你可能感兴趣的文章
Rushcrm:如何利用CRM系统的权限设置
查看>>
《Cisco IPv6网络实现技术(修订版)》一2.7 复习题
查看>>
Facebook 开源 Android 调试工具 —— Stetho
查看>>
生活不止有苟且,还有N个免费DevOps开源工具
查看>>
视频直播Android推流SDK初体验
查看>>
第十三天:制定预算
查看>>
java技术团队必须要注意的那几个点
查看>>
Hibernate ORM 5.1.7 发布,数据持久层框架
查看>>
数百万网站因流行 PHP 脚本的安全漏洞而受影响
查看>>
《走进SAP(第2版)》——2.7 SAP对业务流程的支持
查看>>
《C语言解惑》—— 2.9 输出值的操作符
查看>>
Project Volta 让 Android 续航提升了多少?
查看>>
《树莓派实战秘籍》——1.7 技巧07使用过压获得更高的性能
查看>>
《SAS 统计分析与应用从入门到精通(第二版)》一1.4 SAS系统的文件管理
查看>>
《众妙之门——网页设计专业之道》——2.4 总结
查看>>
MySQL sql_mode 说明(及处理一起 sql_mode 引发的问题)
查看>>
Java 注解详解 (annotation)
查看>>
鹰眼跟踪、限流降级,EDAS的微服务解决之道
查看>>
秘籍:程序猿该如何实力撩妹
查看>>
网络编程socket基本API详解
查看>>