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:离线计算框架,多用于前期的离线计算

浙公网安备 33010602011771号