Hbase与RDBMS的区别在于:HBase的Cell(每条数据记录中的数据项)是具有版本描述的(versioned),行是有序的,列(qualifier)在所属列簇(Column families)存在的情况下,由客户端自由添加.以下的几个因素是Hbase Schema设计需要考虑的问题: 1. Hbase中没有joins的概念 大表的结构可以使得不需要joins,而解决这一问题. 注意:HBase中没有join的概念,但是,大表的结构可以使其不需要Join操作就能解决Join操作所解决的…
HBase里的RowKey设计,分为随机查询的RowKey设计和连续查询的RowKey设计.…
我们通过行键访问HBase.尽管使用扫描过滤器可以一次性指明大量的键,但是HBase仅仅能够根据行键识别出一行. 优秀的行键设计可以保证良好的HBase性能. 1.行键存在于HBase中的每一个单元格中.如果行键越长,用于存储单元格的I/O开销就会越大.通常我们采用MD5加密的定长键来代替行键. 2.对于组合式行键,每个组件的排序顺序取决于访问模式 如果是一个以主机名和事件类型存储的日志数据库,可能的键值选取方法有以下几种: [主机名][事件类型][时间戳] :适用于访问模式使用主机名和事件类型…
在下面这篇博文里,我给各位博客们,分享了创建HBase表,但这远不止打好基础. HBase编程 API入门系列之create(管理端而言)(8) 在关系型数据库里,表的高表和宽表是不存在的.在如HBase这样的NoSQL里,才是存在. HBase里的长表VS宽表VS窄表 在不同场景,结合使用到底是高表还是宽表. 高表有高表的好处,宽表有宽表的优势. 起始行键是1001,结束行键是10010,则可查出如下图框出部分结果. 当然,也可以根据其他的查询条件,来查询.…
在下面这篇博文里,我给各位博客们,分享了创建HBase表,但这远不止打好基础. HBase编程 API入门系列之create(管理端而言)(8) 在关系型数据库里,表的高表和宽表是不存在的.在如HBase这样的NoSQL里,才是存在. HBase里的长表VS宽表VS窄表 HBASE宽表应用很多   比如BBS,可以用帖子的URL地址作为ROWKEY保存,而后面的每一个回复,作为单独的COLUMNS,回复越多,COLUMNS就越多,表就变宽了.COLUMNS的qualifier名称设计很简单 假设…
HBase集群要求每个节点的时间必须同步.HBase对于节点的时间扭曲(time skew)容忍度很低(这和HDFS是不一样的). 这主要是因为HBase需要使用系统时间来产生时间戳.如果系统时间不同步的话,那么每个节点产生的时间戳差异就会比较大,这就违背了时间戳设计的初衷. HBase对于节点间的时间扭曲的容忍度在秒级,即如果HBase发现节点间的时间差异已经有几十秒时会拒绝启动.节点间时间同步的方法是建立NTP服务器,然后让所有的节点和NTP服务器同步. hadoop-2.6.0.tar.g…
有时候啊,HBase表的设计方案通常,还会考虑如下一些因素,当然,这只是考虑范围里的部分呢. 更多的行还是更多的版本?后者使用了HBase自带的功能.但是需要在列簇中定义最大版本数,这样做可能有风险.最好的做法是版本使用多行存储,这需要把时间戳作为行键的一部分,数据检索模式定义了时间戳如何定义为行键的一部分以及应该位于行键的一部分. 更多行或是每行包含更多列?HBase支持每行包含数百万列,并且每一列都可以有列标识. 以行为列的设计?这是一种介于多行和多列的折衷方案.我们可以举一个日志数据库的例…
需要遵循以下步骤: 1.客户端和Zookeeper集群建立连接.在这之前客户端需要获得一些信息(可以从HBase配置文件中读取或是直接指定).客户端从Zookeeper集群中读取-ROOT-表的位置信息.这是客户端发起的第一次查询. 2.客户端连接-ROOT-表,并得到.META.表的位置信息.这是客户端发起的第二次查询. 3.客户端连接.META.表,并下载分区列表和它们的位置.这是客户端发起的第三次查询. 4.客户端使用从.META.表下载的信息直接连接分区服务器中的分区并操作数据.在这个过…
hbase shell中执行java方法(高手必备),务必掌握! 1. 2. 3. 4. 更多命令,见scan help.在实际工作中,多用这个!!! API参考: http://hbase.apache.org/apidocs/index.html…
这部分知识点,是必须要熟练玩转的! 见 5 hbase-shell + hbase的java api 的进入HBase Shell   强烈建议,先看我上面的这篇博文,是实实际际的步骤. 另外,附上一篇很不多的PPT资料.…