Hadoop生态系统

HDFS:分布式文件系统

HBase:实时、分布式、高维数据库。可以进行简单的实时查询,例如通话记录、聊天记录。数据量较大 并且可以实时查询的

利用HDFS作为文件存储系统,利用MapReduce处理HaBase的数据,利用Zookeeper作为分布式协同服务。

主要用来存储非结构化和半结构化的松散数据(列存NoSQL 数据库)

数据逻辑模型

Row Key Time Stamp CF1 CF2 CF3
  t4 CF1:q2=val2    
t5      

Rowkey用来表示是不是属于一个列。

为了解决修改问题,使用时间戳创建新的版本。时间戳为一个64位整数。

Coulumn Family(列族)和qualifier列

HBase表中,每个列都属于一个列族,列族必须作为表模式(schema)定义的一部分预先给出

列名使用列族作为前缀,每个列族都可以有多个列成员(column);新的列族成员可以随后按需、动态进行加入。

权限控制、存储以及调优都是在列族层面进行的

一个单元格由rowkey、时间戳 、列族三个部分进行组成。单元格内容是为未解析的字节数组。

全部是没有类型的字节码。  b

HBase同一个列族里面的数据存储在同一个目录下,由几个文件进行保存。

HLog时候一个普通的Hadoop Sequence File,Sequence File 的Key是HLogkey对象,HLogKey中记录了写入数据的归属信息,除了Table和region名字之外,同时还包括Sequence number 和timestramp,timestamp是”写入时间“,sequence number的起始值是0,或者是最近一次存入文件系统中的sequence number。

Hlog SequenceFIle 的value是Hbase中可以value对象,对应HFile中的KeyValue。

HBase的体系结构

HRegionServer是HBase的从节点

一个region是由多个store组成的,一个store对应一个CF

store包括位于内存中的memstore和位于磁盘的storefile,写操作首先会写入memstore,当memstore中的数据达到某个阈值,Hregionserver会启动flashcache进程写入storefile,每次写入形成一个单独的storefile

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

的那个一个region的所有storefile的大小和超过一定的阈值后,会吧当前的region分割为两个并且由hmaster分配到响应的regionserver服务器面试线负载均衡。

客户端进行数据的检索的时候,首先在memstore进行寻找,找不到再找storefile。

Sqoop:关系数据库的工具

Mahout :数据挖掘

Hive:数据仓库

查询语句的优化和关系化数据库的查询语句的相一致

增加MapReduce的数量

Zookeeper:分布式协作服务

目的是做HA

保证任何时候集群中只有一个master,

存储所有的Region的寻址入口

实时监控Region server的上线和下线信息,并且实时通知给master

存储Hbase中的schema和table元数据

master 为region server分配region

负责region server的负载均衡

发现失效的regionserver 并且重新分配其上的region

管理用户对table的增删改操作。

region server维护region,处理对region的IO请求

region server负责切分在运行过程中变大的region

增加Hbase的并发只需要增加region server的数量。

HBase会自动把表水平划分为多个region,每个region会保存一个表里面某段连续的数据;每个表一开始只有一个region,随着数据不断插入表,region会不断变大,增大到一个阈值的时候么region会等分为两个新的region

table的行不断增多时候,会有更多的region。这样一张表就会被保存在多个regionserver上。

 进行合并的操作是最消耗时间的,会导致数据的读写操作的请求

hadoop的优化就是任何一张表不可以超过三个列族。

Flume:日志收集工具

MapReduce:离线计算框架,多用于前期的离线计算

 

posted @ 2016-05-09 11:13  haibit  阅读(123)  评论(0)    收藏  举报