首页 文章 精选 留言 我的

精选列表

搜索[hadoop],共8432篇文章
优秀的个人博客,低调大师

Hadoop-No.7之行键

和哈希表类比,HBase中的行键类似于哈希表中的键.要构造一个良好的HBase模式,关键之一就是选择一个合适的行键. 1 记录检索 行键是HBase中检索记录所使用的键.HBase记录含有的列在数量上没有限制,但是只能有一个行键.这一点同关系型数据库有所不同,后者的主键可以有多个列组合.既然要为一个记录创建唯一的行键,那么单一的行键就需要包含多种信息.例如,如果一行标识一个订单,那么customer_id,order_id,timestamp可以作为该行的行键.在关系型数据库中,customer_id,order_id,timestamp是三个分开的列,而HBase中三者需要组合形成一个独特的标识符. 在选择行键时需要记住的另外一个点是,但已记录中的get操作是HBase中最快的操作.因此,在设计HBase模式时,用get操作解决大多数常见的数据使用问题,这样会提高处理性能.这可能意味着将大量数据放到单一记录中,比关系型数据库中存放的数据多.这样的设计被称作反向规范化,不同于关系型数据库中常见的规范化设计.比如,关系型数据库可能会将消费者存在一个表中,将其联系方式存在另外一张表中,又将订单存在第三个表中,而订单详情则在另外一个表中.HBase则会设计非常宽的表,即每一个订单记录都包含该订单的所有信息,也包含消费者及其联系方式.单一的get操作就可以检索所有的数据. 2 分布 对于一个给定的表,记录在HBase集群多个Region中的分布方式是由行键决定的.HBase中所有的行键都进行了排序,经过排序的行键按照范围存储在不同的Region中.每个Tegion都固定在一个Region服务器(即集群中的一个节点)上. 行键有一个著名的反模式设计 ,那就是时间戳的使用.在行键中使用时间戳可以将大多数的put和get请求几种在单一的Region上,进而集中在单一的Region服务器上.于是,在某种程度上,HBase不再是一个分布式系统.一般来说,选择行键的最合理标准是让集群的负载分布均匀 3 数据块缓存 数据块缓存是一种最近最少使用的(Lease Recently Used, LRU)缓存,能将数据块缓存到内存中.默认情况下,按照64KB的块大小从磁盘中读取记录,每一个这样的数据块都是一个HBase数据块(HBase Block). 从磁盘中读取的时候,HBase数据块会防止在数据块缓存中.但是,你也可以不讲HBase数据块放到数据块缓存中.之所以要进行缓存,是因为最近访问的数据(以及与这些数据同在一个HBase数据块中的数据)很有可能在不久之后再次被请求访问.但是由于数据块缓存的大小有限制,所以应当谨慎明智的使用它 4 支持扫描 选择合适的行键能够使相关的记录位于同一个Region.这有助于进行范围扫描,因为HBase只需扫描一定数目的Region就可以获取结果.另外,如果行键选择不合适,范围扫描在获取数据时可能需要扫描多个Region服务器,随后还要过滤掉不相关的记录.这样一来,同样的请求就增加了额外的I/O.另外,要记得HBase的扫描速度大约是HDFS的八分之一,减低I/O要求能显著提高性能.与HDFS上的数据存储相比.HBase在这一点上更为明显 5 行键大小 行键的大小将决定工作负载的性能,通常来说.行键越短越好,因为这样可以降低存储消耗,提高读写性能.但是,行键较长时,get和scan的性能更好.因此 在选择时,需要权衡行键的长短.行键越长,压缩编解码在存储行键时需要处理的I/O就越多.同理,列名称越长,需要处理的I/O也越多.所以一般来说,保持列的名称短一些比较好 Tips:可以使用Snappy配置HBase,压缩行键.因为行键按照排序进行存储,所以行键之间的排列比较紧密时.压缩效果较好,这就是不宜将某个属性的哈希作为行键的另一个原因,因为行键的排序是任意的 6 可读性 从开始就接触可读性比较好的行键,如果你不习惯HBase,哪就更应该去这样做.这能让你更为轻松发现和调试问题,也更容易使用HBase操作台. 7 唯一性 因为行键等同于哈希表类比中的键,所以确保行键的唯一性非常重要.如果你选择了一个基于非独特属性的行键,那么应用应该处理这种情况,而且只能通过唯一的行键把数据存入HBase中.

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册