准备工作:采用的HBase版本是:CDH4.5,其中的Hadoop版本是:hadoop-2.0.0-cdh4.5.0;HBase版本是:hbase-0.94.6-cdh4.5.0;

Hbase的配置文件的最基本设置
conf/hbase-env.sh文件,需明确定义: export JAVA_HOME=/usr/local/jdk1.6.0_31
conf/hbase-site.xml文件,需明确定义:
<configuration>
<property>
    <name>hbase.rootdir</name>
    <value>hdfs://localhost:9000/hbase</value>   //表明Hbase的文件存储在哪里?这里需要提前在hadoop中创建hbase文件夹
</property>
<property>
    <name>hbase.cluster.distributed</name>  //表明使用完全分布的模式进行安装
    <value>true</value>
</property>
<property>
    <name>hbase.tmp.dir</name>
    <value>/home/hadoop/CDH4Dev/tmp</value>
</property>
<property>
    <name>hbase.zookeeper.property.clientPort</name>  //用于客户端与Zookeeper通信的端口设置,即客户端通过访问此端口来与Zookeeper通信
    <value>2181</value>
</property>
<property>
    <name>hbase.zookeeper.quorum</name>  //指定了用于协调HBase集群的ZooKeeper集群结点,必须配置奇数个结点。这里就一个,就是本机
    <value>localhost</value>
</property>
</configuration>

1.  Hbase提供用户的操作途径有多种,最基本的是 shell方式以及Java API。当然,今后用得更多的,应该是JAVA API。所以我的学习也是重点关注JAVA API方面
2.  基于Eclipse(推荐用Indigo版本,兼容性较好)编写Hbase程序,需要引入Hbase目录中的JAR包(位置:CDH4Dev/hbase/hbase-0.94.6-cdh4.5.0-security.jar 以及 CDH4Dev/hbase/lib目录中的jar包 )
3.  HBase中一个表的基本构成
     HBase是数据库,数据库自然由各个表构成。单个表的基本构成如下:
     TableName --- 表名
     Rowkey --- 行健
     Column Family --- 列族
     Column qualifier --- 列限定符,一个列族可以包括任意多个列限定符
     cell --- 单元
     time version ---- 时间版本  一个单元可以存储多个时间版本的具体数据
     Data  --- 最终真正存储的一个数据,Hbase中是以byte[]形式记录数据的
     此书中对HBase表结构最形象的定义,就是2.5.1章节所写的:HBase的表,可以理解为一个多层嵌套的映射结构。即:
      MAP<RowKey, Map<ColumnFamily, Map<ColumnQualifier, Map<TimeVersion, Data>>>>  
4.  存储HBase数据的物理结构包括:
     写的时候,用到WAL和MemStore。其中,WAL是预写式日志,是存储在硬盘里的,一般基于HDFS文件系统;MemStore是记录在内存中的。这两个机制用于确保Hbase写数据的持久性(即不会由于服务器宕机等异常而导致数据丢失)
     真正存储数据的是HFile。HFile是基于列族的(即一个列族的数据可以存储在1个或者多个HFile中;但一个HFile不能存储多个列族的数据)。HFile同样位于硬盘中,基于HDFS文件系统。HFile的物理存放形式是一个Block的序列外加这些Block的索引。
     读取数据时,用到BlockCache。BlockCache设计用来保存从HFile里读入内存的频繁访问的数据,避免硬盘读。每个列族都有自己的BlockCache。BlockCache中的Block是HBase从硬盘完成一次读取的数据单位。Block大小按照列族设定,默认是64KB。从HBase中读出一行,首先会检查MemStore等待修改的队列,然后检查BlockCache看包含该行的Block是否最近被访问过,最后访问硬盘上的对应HFile。
 
5.HBase程序的基本部件
   1.得到HBase的配置文件:Configuration conf = HBaseConfiguration.create(); --- 这样获得的配置内容,来自hbase-default.xml和hbase-site.xml
   2.控制HBase表的方法有多种:
      A.HTableInterface usersTable = new HTable(conf, "users");  ---- 基于HBase的配置信息(conf),创建一个名字叫users的表.HTable用于控制某个具体的表。
      B.HTablePool pool = new HTbalePool();
         HTableInterface usersTable = pool.getTable("users");
      C.HBaseAdmin admin = new HBaseAdmin(conf);   --- 这是对整个HBase的控制,不仅仅针对某个Table
   3.Put(代表表中的一行,用于写数据);Get(代表表的一行,用于读数据),Delete(代表表的一行,用于删除数据)
      注意:删除操作不是真正的删除数据,而是给要删除的数据打上一个删除标记;真正删除数据需要等到“大合并”。
   4.Scan(扫描,而且是以行健范围为入参的扫描),扫描范围的结果(包括起始键,但不包括停止键)存储在 ResultsScanner rs对象中。然后可以通过
      for(Result r : rs) 来依次获得每行的具体内容
   5.Filter(过滤器),是帮助Scan获得更精确扫描结果的利器。Filter是可以自定义的,而且其过滤的处理是在Server端进行的(从而降低从Server传递到Client的数据量,进而降低对网络IO的负担)

6. 要运行JAVA API编写的HBase代码,需要:

先启动hdfs(./start-dfs.sh),以及hbase(./start-hbase.sh);然后运行编写的Class即可。

《HBase in Action》 第二章节的学习总结 ---- HBase基本组成的更多相关文章

  1. 《Lucene in Action》(第二版) 第二章节的学习总结 ---- IndexWriter+Document+Field

    这一章节的学习,主要是学会如何创建索引,使用索引 一.创建索引 1.从原始文件中提取内容.这里的文件,可以是文本文件,也可以是二进制文件.文本文件(txt),lucene可以直接处理:而二进制文件(w ...

  2. 《HBase in Action》 第一章节的学习总结 ---- HBase是个啥

    1.HBase模仿了Google的BigTable,是一种开源的,面向列族的数据库.它基于行键(rowkey),列键(column key)和时间戳(TimeStamp)来建立索引.HBase是建立在 ...

  3. 《Lucene in Action第二版》学习总结---如何在Windows下编译luceneinAction2Edition源码包

    1. 下载此源码包,位置是: www.manning.com/hatcher3,得到:lia2e.tar.gz,然后解压缩得到目录:lia2e,为了以后能辨识,我将此目录改名为:luceneinAct ...

  4. 《Lucene in Action 第二版》第三章节的学习总结----IndexSearcher以及Term和QueryParser

    本章节告诉我们怎么用搜索.通过这章节的学习,虽然搜索的内部原理不清楚,但是至少应该学会简单的编写搜索程序了本章节,需要掌握如下几个主要API1.IndexSearcher类:搜索索引的门户,发起者. ...

  5. 《Lucene in Action》(第二版) 第一章节的学习总结 ---- 用最少的代码创建索引和搜索

    第一章节是介绍性质,但是通过这一章节的学习,我理解到如下概念: 1.Lucene由两部分组成:索引和搜索.索引是通过对原始数据的解析,形成索引的过程:而搜索则是针对用户输入的查找要求,从索引中找到匹配 ...

  6. 《TomCat与Java Web开发技术详解》(第二版) 第四章节的学习总结--常用Servlet API

    要开发Servlet,自然要掌握常用的servlet的相关API.通过此章节的学习,了解到如下常用API 1.Servlet接口--->GenericServlet抽象类(实现Servlet接口 ...

  7. 0.HBase In Action(HBase实战,翻译)

    1.HBase In Action 第一章-HBase简介(后续翻译中) 2.HBase In Action 第一章-HBase简介(1.1数据管理系统:快速学习) 3.HBase In Action ...

  8. 最近学习了HBase

    HBase是什么 最近学习了HBase,正常来说写这篇文章,应该从DB有什么缺点,HBase如何弥补DB的缺点开始讲会更有体感,但是本文这些暂时不讲,只讲HBase,把HBase相关原理和使用讲清楚, ...

  9. 4.HBase In Action 第一章-HBase简介(1.1.2 数据创新)

    As we now know, many prominent internet companies, most notably Google, Amazon, Yahoo!, and Facebook ...

随机推荐

  1. Find the Duplicate Number -- LeetCode

    Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), pro ...

  2. Bluetooth篇 开发实例之六 蓝牙RSSI计算距离

    计算公式: d = 10^((abs(RSSI) - A) / (10 * n)) 其中: d - 计算所得距离 RSSI - 接收信号强度(负值) A - 发射端和接收端相隔1米时的信号强度 n - ...

  3. Ubuntu 16.04使用“从互联网自动获取”时间无法写入硬件BIOS的奇怪问题

    目前发现的就是这个问题,只能手动同步到BIOS. 如果是手动设置过时间,那么可以正常同步到BIOS. 而如果切换到从互联网自动获取时间时,是不能同步到BIOS的,但是界面上的时间确实最新的. 并且这个 ...

  4. VMware Server中虚拟机随宿主机自动启动

    在options页面, 开启 Start Up and Shut Down Virtual Machines 这个选项. 保存退出. 打开 VMWare Server Console, 打开需要自动启 ...

  5. android intent 跳转

    转自:http://blog.sina.com.cn/s/blog_7309444701014u2d.html 一.不需要返回值的跳转 Intent intent=new Intent(); inte ...

  6. jstl <fmt:formatDate>标签

    <fmt:formatDate>标记用于在各种不同的方式来格式化日期 属性: <fmt:formatDate>标签具有以下属性: 属性 描述 必需 默认值 value 要显示的 ...

  7. ElasticSearch 结构化搜索

    1.介绍 结构化搜索(Structured search) 是指有关探询那些具有内在结构数据的过程.比如日期.时间和数字都是结构化的:它们有精确的格式,我们可以对这些格式进行逻辑操作. 比较常见的操作 ...

  8. Android服务之bindService源代码分析

    上一篇分析startService时没有画出调用ActivityManagerService之前的时序图,这里画出bindService的时序图.它们的调用流程是一致的. 先看ContextWrapp ...

  9. bash: /bin/bash^M: bad interpreter: No such file or directory

    在windows下编写shell脚本在linux下运行会出报错: [hadoop@master data]$ ./load_ods_table.sh -bash: ./load_ods_table.s ...

  10. [Functional Programming] Compose Simple State ADT Transitions into One Complex Transaction

    State is a lazy datatype and as such we can combine many simple transitions into one very complex on ...