ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:1.04MB ,
资源ID:8468638      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8468638.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Hbase运维手册.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Hbase运维手册.docx

1、Hbase运维手册Hbase运维手册D注意,其中InMemory队列用于保存HBase Meta表元数据信息,因此如果将数据量很大的用户表设置为InMemory的话,可能会导致Meta表缓存失效,进而对整个集群的性能产生影响。3.读写请求数通过读写请求数可以大概看出每台regionServer的压力,如果压力分布不均匀,应该检查regionServer上的region以及其它指标 4.压缩队列压缩队列存放的是正在压缩的storefile,compact操作对hbase的读写影响较大通过cdh的hbase图表库可以看到集群总的压缩队列大小:可以通过CDH的hbase主页查询compact日志:点

2、击“压缩”进入:5.刷新队列单个region的memstore写满(128M)或regionServer上所有region的memstore大小总合达到门限时会进行flush操作,flush操作会产生新的storeFile同样可以通过CDH的hbase前台查看flush日志:6.rpc调用队列没有及时处理的rpc操作会放入rpc操作队列,从rpc队列可以看出服务器处理请求的情况 7.文件块保存在本地的百分比datanode和regionserver一般都部署在同一台机器上,所以region server管理的region会优先存储在本地,以节省网络开销。如果block locality较低有可

3、能是刚做过balance或刚重启,经过compact之后region的数据都会写到当前机器的datanode,block locality也会慢慢达到接近100:8.内存使用情况内存使用情况,主要可以看used Heap和memstore的大小,如果usedHeadp一直超过80-85%以上是比较危险的memstore很小或很大也不正常从region Server的前台可以看到: 9.检查数据一致性以及修复方法数据一致性是指:1. 每个region都被正确的分配到一台regionserver上,并且region的位置信息及状态都是正确的。2. 每个table都是完整的,每一个可能的rowkey

4、都可以对应到唯一的一个regionhbase hbck注:有时集群正在启动或region正在做split操作,会造成数据不一致hbase hbck -details加上details会列出更详细的检查信息,包括所以正在进行的split任务hbase hbck Table1 Table2如果只想检查指定的表,可以在命令后面加上表名,这样可以节省操作时间CDH通过CDH提供的检查报告也可以看到hbck的结果,日常只需要看CDH hbck的报告即可: 选择“最近的Hbck结果”: 1)局部的修复如果出现数据不一致,修复时要最大限度的降低可能出现的风险,使用以下命令对region进行修复风险较低: h

5、base hbck -fixAssignments 修复region没有分配(unassigned),错误分配(incorrectly assigned)以及多次分配(multiply assigned)的问题 hbase hbck -fixMeta 删除META表里有记录但HDFS里没有数据记录的region 添加HDFS里有数据但是META表里没有记录的region到META表 hbase hbck -repairHoles 等价于:hbase hbck -fixAssignments -fixMeta -fixHdfsHoles - fixHdfsHoles的作用: 如果rowkey出现

6、空洞,即相邻的两个region的rowkey不连续,则使用这个参数会在HDFS里面创建一个新的region。创建新的region之后要使用-fixMeta和-fixAssignments参数来使用挂载这个region,所以一般和前两个参数一起使用 2)Region重叠修复 进行以下操作非常危险,因为这些操作会修改文件系统,需要谨慎操作! 进行以下操作前先使用hbck details查看详细问题,如果需要进行修复先停掉应用,如果执行以下命令时同时有数据操作可能会造成不可期的异常。 hbase hbck -fixHdfsOrphans 将文件系统中的没有metadata文件(.regioninfo

7、)的region目录加入到hbase中,即创建.regioninfo目录并将region分配到regionser hbase hbck -fixHdfsOverlaps 通过两种方式可以将rowkey有重叠的region合并: 1. merge:将重叠的region合并成一个大的region 2. sideline:将region重叠的部分去掉,并将重叠的数据先写入到临时文件,然后再导入进来。 如果重叠的数据很大,直接合并成一个大的region会产生大量的split和compact操作,可以通过以下参数控制region过大: -maxMerge 合并重叠region的最大数量 -sidelin

8、eBigOverlaps 假如有大于maxMerge个数的region重叠,则采用sideline方式处理与其它region的重叠. -maxOverlapsToSideline 如果用sideline方式处理重叠region,最多sideline n个region . hbase hbck -repair 以下命令的缩写:hba hbase hbck -fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans -fixHdfsOverlaps -fixVersionFile sidelineBigOverlaps 可以指定表名:hba hba

9、se hbck -repair Table1 Table2 hbase hbck -fixMetaOnly fixAssignments 如果只有META表的region不一致,则可以使用这个命令修复 hbase hbck fixVersionFile Hbase的数据文件启动时需要一个version file,如果这个文件丢失,可以用这个命令来新建一个,但是要保证hbck的版本和Hbase集群的版本是一样的 hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair 如果ROOT表和META表都出问题了Hbase无法启动,可以用这个命令

10、来创建新的ROOT和META表。 这个命令的前提是Hbase已经关闭,执行时它会从hbase的home目录加载hbase的相关信息(.regioninfo),如果表的信息是完整的就会创建新的root和meta目录及数据 hbase hbck fixSplitParents 当region做split操作的时候,父region会被自动清除掉。但是有时候子region在父region被清除之前又做了split。造成有些延迟离线的父region存在于META表和HDFS中,但是没有部署,HBASE又不能清除他们。这种情况下可以 使用此命令重置这些在META表中的region为在线状态并且没有spli

11、t。然后就可以使用之前的修复命令把这个region修复 10.手动merge region进行操作前先将balancer关闭,操作完成后再打开balancer经过一段时间的运行之后有可能会产生一些很小的region,需要定期检查这些region并将它们和相邻的region合并以减少系统的总region数,减少管理开销 合并方法:1. 找到需要合并的region的encoded name2. 进入hbase shell3. 执行merge_region region1,region2 手动分配region如果发现台regionServer资源占用特别高,可以检查这台regionserver上的r

12、egion是否存在过多比较大的region,通过hbase shell将部分比较大的region分配给其他不是很忙的regions server:move encodeRegionName, ServerName #encodeRegionName指的regioName后面的编码,ServerName指的是master-status的Region Servers列表例:move 24d9eef6ba5616b1a60180503e62bae7,DN1,60020,1429840460046手动major_compact进行操作前先将balancer关闭,操作完成后再打开balancer选择一个

13、系统比较空闲的时间手工major_compact,如果hbase更新不是太频繁,可以一个星期对所有表做一次 major_compact,这个可以在做完一次major_compact后,观看所有的storefile数量,如果storefile数量增加到 major_compact后的storefile的近二倍时,可以对所有表做一次major_compact,时间比较长,操作尽量避免高锋期注:fms现在生产上开启了自动major_compact,不需要做手动major compactbalance_switchbalance_switch true 打开balancerbalance_switch

14、 flase 关闭balancer配置master是否执行平衡各个regionserver的region数量,当我们需要维护或者重启一个regionserver时,会关闭balancer,这样就使得region在regionserver上的分布不均,这个时候需要手工的开启balance。regionserver重启 graceful_stop.sh -restart -reload -debugnodename进行操作前先将balancer关闭,操作完成后再打开balancer这个操作是平滑的重启regionserver进程,对服务不会有影响,他会先将需要重启的regionserver上面的所

15、有region迁移到其它的服务器,然后重启,最后又会将之前的region迁移回来,但我们修改一个配置时,可以用这种方式重启每一台机 子,对于hbase regionserver重启,不要直接kill进程,这样会造成在zookeeper.session.timeout这个时间长的中断,也不要通过bin/hbase-daemon.sh stop regionserver去重启,如果运气不太好,-ROOT-或者.META.表在上面的话,所有的 请求会全部失败regionserver关闭下线bin/graceful_stop.sh nodename进行操作前先将balancer关闭,操作完成后再打开b

16、alancer和上面一样,系统会在关闭之前迁移所有region,然后stop进程。flush表所有memstore刷新到hdfs,通常如果发现regionserver的内存使用过大,造成该机的 regionserver很多线程block,可以执行一下flush操作,这个操作会造成hbase的storefile数量剧增,应尽量避免这个操 作,还有一种情况,在hbase进行迁移的时候,如果选择拷贝文件方式,可以先停写入,然后flush所有表,拷贝文件强制splitHbase 允许客户端强制执行split,在hbase shell中执行以下命令: split forced_table, b /其中f

17、orced_table 为要split的table , b 为split 点region splits执行过程:region server处理写请求的时候,会先写入memstore,当memstore 达到一定大小的时候,会写入磁盘成为一个store file。这个过程叫做 memstore flush。当store files 堆积到一定大小的时候,region server 会 执行compact操作,把他们合成一个大的文件。 当每次执行完flush 或者compact操作,都会判断是否需要split。当发生split的时候,会生成两个region A 和 region B但是parent

18、 region数据file并不会发生复制等操作,而是region A 和region B 会有这些file的引用。这些引用文件会在下次发生compact操作的时候清理掉,并且当region中有引用文件的时候是不会再进行split操作的。这个地方需要注意一下:(大量的写入会刷大量的HFile,一个region就会对这大量的hfile进行compact操作。如果这时候触发了split操作,这个region会成为父region,而两个子region会保留父region的引用文件。而在这其间,子region会继续写入数据。那么又可能触发子region的compact,这里的关键点来了子region如果

19、做compact的文件都是新写入的文件,而迟迟不去compact父region 引用的文件,会导致一个问题就是这个子region无法被split掉了(因为含有父region引用的region是不能被split的)。那么子region越来越大,由于写入文件数量急剧增长,父region的ref文件总也得不到机会compact,就形成了大region的恶性循环情况由于region太大,compact无法完成,但是由于compact无法完成导致region无法split,无法分摊compact的压力给其他regionserver。)虽然split region操作是region server单独确定的

20、,但是split过程必须和很多其他部件合作。region server 在split开始前和结束前通知master,并且需要更新.META.表,这样,客户端就能知道有新的region。在hdfs中重新排列目录结构和数据文件。split是一个复杂的操作。在split region的时候会记录当前执行的状态,当出错的时候,会根据状态进行回滚。下图表示split中,执行的过程。(红色线表示region server 或者master的操作,绿色线表示client的操作。)1.region server 决定split region,第一步,region server在zookeeper中创建在/hb

21、ase/region-in-transition/region-name 目录下,创建一个znode,状态为SPLITTING.2.因为master有对region-in-transition 的znode做监听,所以,mater的得知parent region需要split3.region server 在hdfs的parent region的目录下创建一个名为“.splits”的子目录4.region server 关闭parent region。强制flush缓存,并且在本地数据结构中标记region为下线状态。如果这个时候客户端刚好请求到parent region,会抛出NotServ

22、ingRegionException。这时客户端会进行补偿性重试。5.region server在.split 目录下分别为两个daughter region创建目录和必要的数据结构。然后创建两个引用文件指向parent regions的文件。6.region server 在HDFS中,创建真正的region目录,并且把引用文件移到对应的目录下。7.region server 发送一个put的请求到.META.表中,并且在.META.表中设置parent region为下线状态,并且在parent region对应的row中两个daughter region的信息。但是这个时候在.META.

23、表中daughter region 还不是独立的row。这个时候如果client scan .META.表,会发现parent region正在split,但是client还看不到daughter region的信息。当这个put 成功之后,parent region split会被正在的执行。如果在 RPC 成功之前 region server 就失败了,master和下次打开parent region的region server 会清除关于这次split的脏状态。但是当RPC返回结果给到parent region ,即.META.成功更新之后,region split的流程还会继续进行下去

24、。相当于是个补偿机制,下次在打开这个parent region的时候会进行相应的清理操作。8.region server 打开两个daughter region接受写操作。9.region server 在.META.表中增加daughters A 和 B region的相关信息,在这以后,client就能发现这两个新的regions并且能发送请求到这两个新的region了。client本地具体有.META.表的缓存,当他们访问到parent region的时候,发现parent region下线了,就会重新访问.META.表获取最新的信息,并且更新本地缓存。10.region server

25、更新 znode 的状态为SPLIT。master就能知道状态更新了,master的平衡机制会判断是否需要把daughter regions 分配到其他region server 中。11.在split之后,meta和HDFS依然会有引用指向parent region. 当compact 操作发生在daughter regions中,会重写数据file,这个时候引用就会被逐渐的去掉。垃圾回收任务会定时检测daughter regions是否还有引用指向parent files,如果没有引用指向parent files的话,parent region 就会被删除。0.96版本中去掉了root表,

26、因为觉的目的是根据root表获取meta地址,过程是通过zookeeper获取root表地址,在根据root表记录meta表地址进行访问,还不如和zookeeper通讯一次。meta表信息存放在zookeeper的/hbase/meta-region-server文件中。新版本中还添加了hbase:namespace 命名空间表,系统表放在hbase空间下,用户表如果没有指定命名空间则放在default空间下。重新生成META表:./hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair宽表好处: 行数变少,bolck index索引

27、减少。布隆过滤器meta index索引减少。 减少空间占用和内存占用。宽表劣处:hbase的split是基于行的,会影响split机制 :HBase的split操作只会在行的边界上发生,所以更倾向于长窄表:宽表情况下, 单独一行大小超过hbase.hregion.max.filesize值, 也不会做分割相同rowkey下插入很多不同版本的记录,即使大小超过hbase.hregion.max.filesize值,也不会做分割窄表好处:将列放入rowkey查询更加灵活方便。利于split机制窄表劣处:索引空间占用比宽表要大。MR统计行数:$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter tablename

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1