分享

Hbase 小疑问汇总

Wyy_Ck 发表于 2016-12-24 15:19:03 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 9 9638
     Hbase中,基于列的可以动态增加,并且列为空就不存储数据,节省存储空间的原则:     相同rowkey的数据术语一条记录, 怎么证明确实节省了很多存储空间。  

     我理解是: 当我put数据的时候,可以指定哪些列,可以为这些列设定非NULL值,所以不会浪费空间。
     但是如何证明呢?

     问题比较基础,海涵。

已有(9)人评论

跳转到指定楼层
Wyy_Ck 发表于 2016-12-24 15:19:55

arsenduan 发表于 2016-12-24 18:50:39
楼主思维够严密的。这个还真很难证明。
我理解是: 当我put数据的时候,可以指定哪些列,可以为这些列设定非NULL值,所以不会浪费空间。
     但是如何证明呢?

首先我们需要改变的是传统数据库思维。传统数据库是按照行进行存储的,也就是他的操作对象是。并且必须指定所有的字段,也就是所有的字段都必须有值。当然有的可以指定为null。

我们来看nosql,也就是HBase,他是列式存储,他的操作对象,也就是我们不必对行中的每一个字段都赋值。这就是nosql广泛应用的原因。
对于这些列,就像我们在传统数据库中,添加一行数据一样,他是可以增加和删除的。

所以我们如果不添加列,这个列式不存在的,所以没有null值这么一说。这些列它是动态的,而不是上来就设计好的。至于节省空间,其实这个真的很难证明,因为这个是底层的内容。并且他是一个相对的概念,而且是存储的概念。

对于存储,我们有时候看到磁盘是没有存储任何内容,但是1G的空间,却不是1G的。当然这个只是举例,只要明白这个道理就可以了。现在的很多软件都是这么说的。比如一个block是64M,如果不满64M,他会暂用64M空间吗?不会的。因为这也是节省了空间。
所以楼主可以自己实际查看下。

验证
比如你存储了多少数据,那么表中实际增加了多少数据,如果二者相等,说明是真的省空间,如果比原先的大了,说明没有节省空间


回复

使用道具 举报

Wyy_Ck 发表于 2016-12-25 00:30:17
非常感谢贴心的回复.感谢感谢@


还有一个比较弱的小问题:

问题2: MRAppMaster位于集群的什么位置? 以及Hlog具体在哪呢?  
回复

使用道具 举报

einhep 发表于 2016-12-25 08:15:12
本帖最后由 einhep 于 2016-12-25 08:32 编辑

推荐参考图解Nosql(hbase)与传统数据库的区别
http://www.aboutyun.com/forum.php?mod=viewthread&tid=7804



回复

使用道具 举报

einhep 发表于 2016-12-25 09:12:48
Wyy_Ck 发表于 2016-12-25 00:30
非常感谢贴心的回复.感谢感谢@

MRAppMaster:每个job一个进程,主要跟踪job的运行情况,向RM申请资源等。

1.jpg


其实MRAppMaster网上资料非常多的,只要明白了,MRAppMaster对于每一个job只对应一个MRAppMaster,剩下的就是多多看看就明白了。
至于位置楼主看下上图,他是位于其中一个datanode
回复

使用道具 举报

Wyy_Ck 发表于 2016-12-25 11:08:50
einhep 发表于 2016-12-25 09:12
MRAppMaster:每个job一个进程,主要跟踪job的运行情况,向RM申请资源等。

感谢感谢!

为什么有的datanode 是MRAppmaster  有的datanode没有,只有container呢?  问的比较弱啊  见谅,  其实看的资料不少,总感觉串不起来

点评

这个是规定,MRAppmaster 对于一个job只有一个。  发表于 2016-12-25 14:45
回复

使用道具 举报

Wyy_Ck 发表于 2016-12-25 11:10:45
arsenduan 发表于 2016-12-24 18:50
楼主思维够严密的。这个还真很难证明。
我理解是: 当我put数据的时候,可以指定哪些列,可以为这些列设 ...

非常感谢贴心的回复! 谢谢    问题有点牛角尖
回复

使用道具 举报

Wyy_Ck 发表于 2016-12-25 11:20:06
hadoop集群中主要进程有 master:   NameNode, ResourceManager, slaves:   DataNode, NodeManager,  RunJar, MRAppMaster,YarnChild 其中 RunJar, MRAppMaster,YarnChild与随着某个job的创建而创建,随着job的完成而终止。它们的作用分别是: RunJar:完成job的初始化,包括获取jobID,将jar包上传至hdfs等。 MRAppMaster:每个job一个进程,主要跟踪job的运行情况,向RM申请资源等。 YarnChild:运行具体的map/reduce task。 job启动过程: ResourceManage,NodeManager->RunJar->MRAppMaster->YarnChild job退出过程: YarnChild->MRAppMaster->RunJar 即所有的map/reduce均完成后,MRAppMaster才退出,最后RunJar退出,job完成。
回复

使用道具 举报

Wyy_Ck 发表于 2016-12-29 16:37:53
Wyy_Ck 发表于 2016-12-25 11:08
感谢感谢!

为什么有的datanode 是MRAppmaster  有的datanode没有,只有container呢?  问的比较弱啊  见 ...

一个job应该对应一个MRAppmaster 吧。  如上图所示, 有些datanode 有MRAppmaster ,意味着有job运行。 有些没有。  是不是在哪里指定的 或者说理解有误
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条