paulwong

HBASE读书笔记-基础功能

  1. HBASE的SHELL命令使用

  2. HBASE的JAVA CLIENT的使用

    新增和修改记录用PUT。

    PUT的执行流程:
    首先会在内存中增加MEMSTORE,如果这个表有N个COLOUMN FAMILY,则会产生N个MEMSTORE,记录中的值属于不同的COLOUMN FAMILY的,会保存到不同的MEMSTORE中。MEMSTORE中的值不会马上FLUSH到文件中,而是到MEMSTORE满的时候再FLUSH,且FLUSH的时候不会写入已存在的HFILE中,而是新增一个HFILE去保存。另外会写WRITE AHEAD LOG,这是由于新增记录时不是马上写入HFILE的,如果中途出现DOWN机时,则HBASE重启时会根据这个LOG来恢复数据。

    删除记录用DELETE。

    删除时并不会将在HFILE中的内容删除,而是作一标记,然后在查询的时候可以不取这些记录。

    读取单条记录用GET。

    读取的时候会将记录保存到CAHE中,同样如果这个表有N个COLOUMN FAMILY,则会产生N个CAHE
    ,记录中的值属于不同的COLOUMN FAMILY的,会保存到不同的CAHE中。这样下次客户端再取记录时会综合CAHE和MEMSTORE来返回数据。

    新增表用HADMIN。

    查询多条记录用SCAN和FILTER。

  3. HBASE的分布式计算

    为什么会有分布式计算
    前面的API是针对ONLINE的应用,即要求低延时的,相当于OLTP。而针对大量数据时这些API就不适用了。
    如要针对全表数据进行分析时用SCAN,这样会将全表数据取回本地,如果数据量在100G时会耗几个小时,为了节省时间,引入多线程做法,但要引入多线程时,需遵从新算法:将全表数据分成N个段,每段用一个线程处理,处理完后,交结果合成,然后进行分析。

    如果数据量在200G或以上时间就加倍了,多线程的方式不能满足了,因此引入多进程方式,即将计算放在不同的物理机上处理,这时就要考虑每个物理机DOWN机时的处理方式等情况了,HADOOP的MAPREDUCE则是这种分布式计算的框架了,对于应用者而言,只须处理分散和聚合的算法,其他的无须考虑。

    HBASE的MAPREDUCE
    使用TABLEMAP和TABLEREDUCE。

    HBASE的部署架构和组成的组件
    架构在HADOOP和ZOOPKEEPER之上。

    HBASE的查询记录和保存记录的流程
    说见前一编博文。

    HBASE作为数据来源地、保存地和共享数据源的处理方式
    即相当于数据库中JOIN的算法:REDUCE SIDE JOIN、MAP SIDE JOIN。

posted on 2013-02-06 09:53 paulwong 阅读(606) 评论(0)  编辑  收藏 所属分类: HADOOP云计算HBASE


只有注册用户登录后才能发表评论。


网站导航: