HBase.Coprocessor优化与实验课件_第1页
HBase.Coprocessor优化与实验课件_第2页
HBase.Coprocessor优化与实验课件_第3页
HBase.Coprocessor优化与实验课件_第4页
HBase.Coprocessor优化与实验课件_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1HBase Coprocessor优化与实验2HBase 元数据信息ZookeeperfileHBase 简介HBase 是在 Hadoop 之上构建的非关系型、面向列存储的开源分布式结构化数据存储系统HBase 表分区与索引管理将 Table 中的数据根据 rowKey 字段划分为多个 HRegionHRegion 分配给 RegionServer 管理三级元数据:-MetaTable : Region 与 RegionServer 的映射信息RootTable : MetaTable 与 RegionServer-的映射信息Zookeeper file : RootTable 的存储位置

2、HBase 系统架构HBase 的所有数据 (Hlog 和 Hfile) 均存储到 HDFS 上HDFS 将文件划分为 64MB 3 的 block ,并存储多个副本通过 client 读写数据Hmaster 管理元数据(表分区,管理该分区的 RegionServer )RegionServer 负责 Region数据的存储和读取4HBase Coprocessor 简介HBase Coprocessor 受启发于 Google 的 Jeff Dean 在LADIS09 上的报告 Google BigTable 的 Coprocessor 特点在每个表服务器的任何 tablet 上均可执行用户

3、代码提供客户端调用接口 ( coprocessor 客户端 lib 将可定位每个 row/range 的位置;多行读写将自动分片为多个并行的 RPC 调用)提供可构建分布式服务的灵活的编程模型可以自动扩展,负载均衡等 与 Google Bigtable Coprocessor 相比Bigtable coprocessor 以独立的进程执行,可以更好的控制 CP 计算所需资源HBase coprocessor 是一个在 Master/RegionServer 进程内的框架,通过在运行时执行用户的代码,在 HBase 内实现灵活的分布式数据处理功能HBase Coprocessor 的主要应用场景

4、 secondary indexing complex filtering access controlCoprocessor 在以下将简称为 CPHBase Coprocessor 的实现类型HBase Coprocessor 的实现分为 Observer 和 Endpoint 两种 Observer 类似于触发器,工作在服务器端。可以实现权限管理、监控等 Endpoint 类似于存储过程,工作在服务器端和客户端。可以实现 min/max 等计算Coprocessor 的作用范围 System coprocessor: 对所有 table 的所有 region Table coprocess

5、or :对某个 table 的所有 region该图参考了 HBase Coprocessor 的分析 /?p=77 5RegionObserver :提供表数据操作事件的钩子函数: Get 、Put 、 Scan 等的 pre/post 处理。WALObserver :提供 WAL 相关操作钩子。MasterObserver :提供 DDL 类型的操作钩子。如创建、删除、修改数据表等。Endpoint :只适用于RegionServer, 对应于每个 table的 Region 的处理。6HBase Coprocessor Observer 示例RegionObservers 与 HBase

6、 的交互流程:该页参考了 CoprocessorIntroduction,/hbase/entry/coprocessor_introduction使用 RegionObserver ,在preGet() 中判断用户是否具有数据读权限:HBase Coprocessor Endpoint 示例Client 通过 API 调用对某行 / 行范围的处理, CP 框架自动将行范围映射到 Region ,并将计算请求发送给每个 Region 并行执行AggregateProtocolAggregateProtocolAggregateProtocolAggregateProtocolBatch.Cal

7、lLong call (AggregateProtocol p) return p.getRowNum();Batch.Callbackvoid update ()rowCountL.addAndGet(); public interface AggregateProtocol extends CoprocessorProtocol public class AggregateImplementation extends BaseEndpointCoprocessorimplements AggregateProtocol public class AggregationClient78HBa

8、se Coprocessor 配置 在 hbase-site.xml 中配置 CP class ( System coprocessor )hbase.coprocessor.region.classesorg.apache.hadoop.hbase.coprocessor.AggregateImplementation为所有 table 加载了一个 cp class ,可以用”,”分割加载多个 class 从 hbase shell 中加载 CP class ( Table coprocessor ) alter testTable, METHOD = table_att,coprocess

9、or=hdfs:/ foo.jar|com.foo.FooRegionObserver|1001|arg1=1,arg2=2 enable testTable 为 testTable 加载一个 RegionObserver alter testTable , METHOD = table_att_unset, NAME = coprocessor$1为 testTable 卸载一个 cp class9我们的应用场景 - 网络日志分析查询大云数据仓库分布式文件系统大云数据仓库分布式文件系统访问接口大云数据仓库分布式文件系统用户感知分析网络质量考核网络质量优化LOG 统计查询LOG 统计查询:se

10、lect intProtocol, callingIMSI,calledIMSI, intDelayAltering,intDelayConnect,intTermEvent , fromvwXDRQuery_1350619391458 twhere (t.dtStime and ) andProtocol in (32,97)order by callingIMSI ASClimit 1000010利用 CP 实现对 LOG 数据的查询在应用开发中遇到的主要问题 加载 CP class ,造成 region 分布错乱,性能降低 客户端的网络成为瓶颈 在较复杂应用逻辑下, CP 不够稳定RSL

11、OG 数据查询Web 前端Thrift Server应用中间件HMasterRSRSRS数据加载11HBase Coprocessor 优化 Region 数据本地化 测试和实验环境 LOG 数据 2 亿条,预分为 720 个 Region ,平均每节点 48 个 Region 1 Master + 15 RegionServer ( 32GB RAM , 千兆以太网) 利用 CP 在每个 region 查询符合条件的记录,并在 CP 客户端汇总结果 每个 region 返回 1w 条记录,每条记录 1KB ,即每个 region 返回 10MB 数据 执行结果(平均值): 127.7 秒 原

12、因分析: Region 数据非本地化存储 CP 客户端网络成为瓶颈 客户端需要处理 10MB*720 =7GB 数据HBase Coprocessor 优化 Region 数据本地化HBase 支持的默认 Region 分配策略 ( AssignmentManager ) retainAssignment ( default: true ) roundRobinAssignment randomAssignment当集群较为稳定时,默认 Region 策略即可实现 Region 数据本地读写。当节点退出 / 上线,或者 table dis/enable 时,会造成 Region 数据非本节点存

13、储 在对 table 增加 CP 时,需要 dis/enable table 在 enable table 时,会对 region 采用 randomAssignment ( default: true ) 或roundRobinAssignment 分配策略我们的改进:对 Region 可以通过配置采用 toplocalizedAssignment 策略 在制定 Region 分配计划时,通过 HRputeHDFSBlocksDistribution()计算其数据在 RegionServer 的分布情况,将 Region 调度至具有最多数据的RegionServer12total-cpu-u

14、sagenet/total13HBase Coprocessor 优化 Region 数据本地化采用 toplocalizedAssignment 的 Region 分配策略后, LOG 查询的执行结果为: 59.95 秒 ,性能提升了 113%但是,客户端节点的网络仍然是瓶颈, CPU 和内存占用也较高ClientHConnectionManager1,定位所有region2,异步分发CallRegionServerRegionRegionRegionServerRegionRegionRegion14RegionServerRegionRegion异步 IPC 调用(走网络)本地调用Pro

15、tocolHandlerProtocolHandlerProtocolHandlerProtocolHandlerProtocolHandler发送请求返回结果ProtocolHandlerProtocolHandlerHBase Coprocessor 优化 CP 本地汇聚 目前 Apache Hbase 社区的实现机制是以 Region 为单位执行请求,每个请求直接发送到 Region 上,每个Region 执行处理后将结果直接返回给 Client 存在的问题 所有汇总计算集中在 client ,其 CPU 和内存成为瓶颈 当返回数据量大时,客户端网络成为瓶颈ClientHConnecti

16、onManager1,定位所有region2,异步分发CallRegionServer内部异步调用RegionRegionRegionServerRegionRegionHBase Coprocessor 优化 CP 本地汇聚CP 本地汇聚 以 RS 为单位发出 CP 计算请求 每个 RS 对其管理的 Region 并行扫描,扫描结果在 RS 节点先做一次汇总 当 RS 上所有 Region 均计算完毕,则 RS 将其本地汇聚结果返回给RegionRegionServerRegionRegion发送请 求返回结果本地调用ProtocolHandlerRS 级别结果汇聚线程池管理异步 IPC 调

17、用(走网络)Client Client 将各 RS 返回结果进行汇总优点 计算分摊: Client 端的计算被分布到每个 RS 上 减轻网络负载: 减轻 Client 端的网络负载 Client 只需要接收 10MB*15 = 150MB 的数据 编程灵活:可以分别定义 RS 和 Region 级别的处理函数15采用 CP 本地汇聚 后,LOG 查询的执行结果为:34.86 秒 ,性能提升了 72%net/total16HBase Coprocessor 优化 CP 本地汇聚 API :原有 CP API 没有变动,增加了新的接口可使用 CP本地汇聚 Client 端采用 Htable.cop

18、rocessorExecRS() 接口定义与原 CP 相同 接口实现需做判断,以便在 Region 上调用对 Region 的处理函数,在 RegionServer 上调用对整个 RegionServer 数据的处理函数if(result=null&oneRegionValue=null&serverName=null)return getRegionTop(ci,scan);elsereturn getRSTop(ci,scan,serverName,result,oneRegionValue);serverName : RS 的名称result, 要返回的结果oneRegionValue :一个 region 上的结果,用这个值去更新 result17总结 经验总结 HBase Coprocessor 提供 Observer 和 Endpoint 两种实现方式, Endpoint 方式可用于在 HBase 内部实现分布式并行计算 Region 的本地化调度策略,可以很好的提高 HBase 数据读写效率 Coprocesso

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论