Composable tools are fine if simple and scriptable. If you read the thread I think my complaint justifiable. It is not that they are lacking. It is that they are lacking and the response to the concern is breezy “oh just do this <thing that requires dev with deep knowledge>”. Just so we are clear what I am criticizing. Someone needs to call out in no uncertain terms how operator unfriendly this position is whether intentional or not.
Thanks for the consideration. > On May 30, 2019, at 2:00 PM, Josh Elser <els...@apache.org> wrote: > > It sounds to me like you're saying: "No, I don't think compose-able tools are > a sufficient substitute in HBCK2 for what HBCK1 did". > > I'm going to just delete everything else I want to write because it's going > to turn into a massive argument and de-rail this further. For a second time, > please stop the complaints about things that don't exist on this thread. We > all know this already. > >> On 5/30/19 12:58 PM, Andrew Purtell wrote: >> I did a both barrels type response to a suggestion Wellington made that I >> hope communicates the right level of dismay at the prevailing line of >> thought in this thread. >> Let me say I agree hbck 1 was sometimes oversold as a magic tool. >> However if you analyze all of its options and then look to branch 2, where >> are the gaps. In branch 1 there is a command line tool that can be executed >> by operations and first level support. Its options can be described in a >> runbook with cut and paste examples. In branch 2 ... ? >> There appears no ready solution for detecting and deploying undeployed >> “missing” regions. >> There appears no ready solution for fixing a failed split or merge or other >> corruption producing a hole or overlap in the region chain. >> There appears no tool capable of rebuilding meta from scratch from HDFS >> level metadata; a last but crucial resort as this is what holds the line >> against a complete and time intensive restore from backup. >> I may have an incorrect impression of some of this. If so that would be a >> big relief. If not these are suggested areas of focus. >> I’m not saying that 2 needs Hbck exactly as it is in 1. However the lack of >> simple recovery tools or actions that can be taken by a non expert guided by >> a runbook means the risk to operations when there is the inevitable problem >> is higher. And I don’t mean theoretical problems. I mean the commonly >> occurring issues Hbck 1 was coded up to address in a mostly automated way, >> like failed splits or failed deployments or simple HDFS level corruptions >> like loss of meta region hfiles. Lacking simple tooling our operations will >> have to do <something> more complex, labor intensive, and or risky. This >> factors in to the major version upgrade risk analysis. >> What I would advise is an analysis that enumerates all of the risks and >> specific conditions Hbck 1 addresses, then excludes those not relevant for >> the 2 code base, then excludes those which have easy and simple tools >> existing right now to solve. What you have left is a list of action items. >> Then there should be an analysis of the new risks in 2 given AMv2s theory of >> operation, for example for each procedure based action if the procedure is >> always failing how can the operator recover the prerequisites for successful >> completion, and provide a simple tool or option for applying a fix or >> remediation to cluster state. >>> On May 30, 2019, at 7:16 AM, Josh Elser <els...@apache.org> wrote: >>> >>> Right, this discuss isn't meant to be implying that any of this exists -- >>> instead, I wanted to make sure we're focused on building tooling which both >>> devs and users will find usable and effective. >>> >>> What's your gut-reaction to what I suggested? I think you're saying you see >>> operators having to apply more understanding/insight to fix a "complex >>> problem" as taking on more risk which you'd have to weigh. In other words, >>> anything less than the verbatim "fix these problems" flags you mentioned >>> earlier would require you to do the risk-analysis math if moving to HBase2? >>> >>> Thanks for your insights. >>> >>>> On 5/29/19 4:45 PM, Andrew Purtell wrote: >>>> I have yet to see essential HBCK functions in 1 replaced by anything - >>>> documentation, script, hbck2, whatever. >>>> Do we have a tool or script in HBase 2 that can rebuild meta from HDFS >>>> state? This would be faster than a complete restore from backup. It would >>>> be useful and important to offer this option to operators, but not >>>> essential, because it could be valid to say if meta is screwed so are you >>>> and you have to restore completely from backup. Meta is small, a fraction >>>> of total data footprint. Seems a real shame to impose such a high cost when >>>> there could be an alternative. I'd have to think for a while about >>>> accepting this kind of operational risk when HBase 1 has such tooling. >>>> What I am more worried about is this: Do we have a tool or script in HBase >>>> 2 that can fix errors in the region chain caused by failed splits, failed >>>> merges, or double assignment? It seems not, and the implications for >>>> service availability are not good when compared with HBase 1. With HBase 1, >>>> hbck is an option. Sure, it has a lot of problematic aspects, but I have >>>> seen it recover a cluster's total availability with fairly fast execution. >>>> It could be valid, not saying I agree with this point, to clearly document >>>> that all aspects of recovery from corrupted metadata is the responsibility >>>> of the operator, at least this is full disclosure. We can then weigh the >>>> cost and risk associated with this policy when deciding if ever to upgrade. >>>>> On Wed, May 29, 2019 at 1:13 PM Josh Elser <els...@apache.org> wrote: >>>>> My understanding was that recreating sweeping "fix it" flags was an >>>>> anti-goal of HBCK2, but I'm surprised a grey-beard hasn't come in to say >>>>> confirm/dispute that :). I could be taking that out of context or my dog >>>>> remembers things better than I do. >>>>> >>>>> The reasoning behind this line of thinking for HBCK2 is: >>>>> >>>>> * Smaller actions are easier to implement correctly and be well-tested >>>>> * The more complex the action, the more likely it is for something we >>>>> (as devs) didn't expect to happen which results in a bug. >>>>> >>>>> The "stretch" in my mind is that we can string together small actions to >>>>> recreate the bigger ones (the fix* type commands from hbck1), *but* >>>>> teach operators to apply knowledge about their cluster instead of >>>>> treating hbck like a black box. >>>>> >>>>> For example, if we try to decompose something like fixAssignments into >>>>> something like: `for region in $(list non-open regions); do assign >>>>> $region; end`. As developers, we don't have to catch every edge case of >>>>> _something_ that might be specific to the admin's actual situation (e.g. >>>>> what if a table is disabled and we don't want to assign those regions) >>>>> and it lets us write better test cases. >>>>> >>>>> Again, this is what I have floating around in my head -- nothing more >>>>> than that at present. >>>>> >>>>>> On 5/29/19 11:54 AM, Andrew Purtell wrote: >>>>>> To me this is a succinct specification of minimum functionality for a >>>>>> recovery tool: using on disk bits, rebuild meta table, with end result a >>>>>> working cluster that did not miss any data during the reconstruction. >>>>>> >>>>>> Of course focusing on root causes of metadata mismanagement is >>>>> appropriate >>>>>> when investigating a specific incident, but this is orthogonal from the >>>>>> question of whether or not recovery is possible after a bug corrupts >>>>>> metadata. It is customary for filesystems and databases to ship with a >>>>> tool >>>>>> that attempts recovery after corruption, on the (correct, IMHO) >>>>> assumption >>>>>> that corruption is inevitable, either due to logic bug, hardware >>>>> problems, >>>>>> or operator error. >>>>>> >>>>>> The features of hbck in HBase 1 that have resolved availability problems >>>>>> where I work are: fixMeta, fixAssignments, fixHdfsHoles, fixHdfsOverlaps. >>>>>> In HBaseFsck.java in branch-2 these are all in the unsupported options >>>>> set. >>>>>> Because these are all lacking in HBase 2 I will not certify it ready for >>>>>> production to my employer. If there is some other tool which offers these >>>>>> recovery options I'm not aware of it nor documentation for it and would >>>>>> appreciate a pointer if you have one. >>>>>> >>>>>> >>>>>> On Wed, May 29, 2019 at 7:11 AM Toshihiro Suzuki <brfrn...@apache.org> >>>>>> wrote: >>>>>> >>>>>>> Thanks Wellington. >>>>>>> >>>>>>>> I guess those can still be fixed with some combinations of commands >>>>>>> today, >>>>>>>> such as merge/assign. >>>>>>> >>>>>>> Let me explain the situation I faced in the customer's cluster a little >>>>> bit >>>>>>> more. >>>>>>> It seemed like the table data in HDFS was intact but they lost some meta >>>>>>> data >>>>>>> (in hbase:meta) of the table. So I needed to rebuild the meta from HDFS >>>>>>> data. >>>>>>> In this case, we can still fix with some combinations of commands >>>>> today? If >>>>>>> so, >>>>>>> I would appreciate it if you could suggest the steps to me. >>>>>>> >>>>>>>> And focus on fixing the main root cause of such problems, as a mean to >>>>>>>> soften the need of use such commands. >>>>>>> >>>>>>> Yes, correct. Actually I usually do that. But I didn't do that in that >>>>>>> case.. >>>>>>> >>>>>>> >>>>>>> On Wed, May 29, 2019 at 5:47 AM Wellington Chevreuil < >>>>>>> wellington.chevre...@gmail.com> wrote: >>>>>>> >>>>>>>> Thanks Toshihiro! I guess those can still be fixed with some >>>>> combinations >>>>>>>> of commands today, such as merge/assign. Of course, it requires some >>>>>>> extra >>>>>>>> scripting and log reading on cases where many regions are in an >>>>>>>> inconsistent state, maybe we should work on provide a one liner command >>>>>>>> that relies on the current existing ones. And focus on fixing the main >>>>>>> root >>>>>>>> cause of such problems, as a mean to soften the need of use such >>>>>>> commands. >>>>>>>> >>>>>>>> I'm not really a fan of offlinemetarepair, nor hbck1 fix >>>>> holes/overlaps, >>>>>>>> would rather not have those back. Sure those are easy and convenient to >>>>>>>> trigger, but hbck1 reports are sometimes misleading (for instance, it >>>>>>>> reports holes when region(s) on the chain is/are simply not online), >>>>> and >>>>>>>> that, combined with availability of such heavy hammers had led >>>>>>>> unexperienced operators to fall into running it and getting into a >>>>> worse >>>>>>>> state. >>>>>>>> >>>>>>>> Em qua, 29 de mai de 2019 às 13:22, Toshihiro Suzuki < >>>>>>> brfrn...@apache.org> >>>>>>>> escreveu: >>>>>>>> >>>>>>>>> Hi Wellington, >>>>>>>>> >>>>>>>>> I saw table holes in a customer's cluster actually, and I just fixed >>>>>>> the >>>>>>>>> issues >>>>>>>>> by the workaround I mentioned in HBASE-21665 >>>>>>>>> <https://issues.apache.org/jira/browse/HBASE-21665> and I didn't dig >>>>>>> the >>>>>>>>> reason >>>>>>>>> why the table holes happened at that time because the customer didn't >>>>>>>> want. >>>>>>>>> >>>>>>>>> However, IMO, whatever the reason I think we should have a direct way >>>>>>> to >>>>>>>>> fix >>>>>>>>> holes and overlaps. >>>>>>>>> >>>>>>>>> On Wed, May 29, 2019 at 4:57 AM Wellington Chevreuil < >>>>>>>>> wellington.chevre...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> So JMS, Toshihiro, seems like upgrading from some 1.x to 2.x >>>>>>>> consistently >>>>>>>>>> triggers this problem? Do you guys know if there are any bug jiras >>>>>>> open >>>>>>>>>> that would cover these scenarios? If not, and if you guys have enough >>>>>>>>>> resources for investigating it, maybe worth open a specific jira? >>>>>>>>>> >>>>>>>>>> Em qua, 29 de mai de 2019 às 11:40, Jean-Marc Spaggiari < >>>>>>>>>> jean-m...@spaggiari.org> escreveu: >>>>>>>>>> >>>>>>>>>>> Personnaly, when I tried to upgrade from 1.4.x to 2.2.x I end up >>>>>>> in a >>>>>>>>>>> situation where my meta was empty and had to get it repaired, but >>>>>>>>> lacked >>>>>>>>>>> OfflineMetaRepair for 2.2.x so I just had to delete all my tables, >>>>>>>> get >>>>>>>>> a >>>>>>>>>>> brand new installation, recreate the tables and bulkload back the >>>>>>>> data >>>>>>>>>> into >>>>>>>>>>> them. Would have been happy to have a OfflineMetaRepair. >>>>>>>>>>> >>>>>>>>>>> But it's more like an experimental cluster than a production one... >>>>>>>>>>> >>>>>>>>>>> JMS >>>>>>>>>>> >>>>>>>>>>> Le mer. 29 mai 2019 à 06:36, Wellington Chevreuil < >>>>>>>>>>> wellington.chevre...@gmail.com> a écrit : >>>>>>>>>>> >>>>>>>>>>>> Interesting, I haven't seen any cases where OfflineMetaRepair was >>>>>>>>>> really >>>>>>>>>>>> required, among our customer base (running cdh6.1.x/hbase2.1.1, >>>>>>>>>>>> cdh6.2/hbase2.1.2). Majority of RITs issue I had came with on >>>>>>> hbase >>>>>>>>> 2.x >>>>>>>>>>>> were related to APs/SCPs failures, most of which could be sorted >>>>>>>> with >>>>>>>>>>> hbck2 >>>>>>>>>>>> commands available by then (in some cases, required some CLI >>>>>>>>> scripting >>>>>>>>>> to >>>>>>>>>>>> build up a "bulk" assign command). >>>>>>>>>>>> >>>>>>>>>>>> Em qua, 29 de mai de 2019 às 00:55, Toshihiro Suzuki < >>>>>>>>>>> brfrn...@apache.org> >>>>>>>>>>>> escreveu: >>>>>>>>>>>> >>>>>>>>>>>>> Hi Josh, >>>>>>>>>>>>> >>>>>>>>>>>>> Thank you for the explanation. I agree with the direction for >>>>>>>>> HBCK2. >>>>>>>>>>>>> >>>>>>>>>>>>> The problem I wanted to tell you in the Jira is that until we >>>>>>>>>> implement >>>>>>>>>>>> the >>>>>>>>>>>>> features >>>>>>>>>>>>> you mentioned, we don't have any direct way how to fix holes >>>>>>> and >>>>>>>>>>>> overlaps. >>>>>>>>>>>>> The holes and overlaps can be created by bugs or operation >>>>>>>> errors, >>>>>>>>>> so I >>>>>>>>>>>>> think we >>>>>>>>>>>>> should be able to fix these issues. >>>>>>>>>>>>> >>>>>>>>>>>>> I thought OfflineMetaRepair could be a workaround for the >>>>>>> issues >>>>>>>>>> until >>>>>>>>>>> we >>>>>>>>>>>>> implement >>>>>>>>>>>>> the features of HBCK2. >>>>>>>>>>>>> >>>>>>>>>>>>> Regards, >>>>>>>>>>>>> Toshi >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Tue, May 28, 2019 at 9:12 AM Josh Elser <els...@apache.org> >>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Context: https://issues.apache.org/jira/browse/HBASE-21665 >>>>>>>>>>>>>> >>>>>>>>>>>>>> I left a comment on the above issue about what I thought good >>>>>>>>>> things >>>>>>>>>>> to >>>>>>>>>>>>>> build into HBCK2 would be -- a focus on specific "primitive" >>>>>>>>>>> operations >>>>>>>>>>>>>> that an admin/operator could use to help repair an otherwise >>>>>>>>> broken >>>>>>>>>>>>>> HBase installation. Some examples I had in my head were: >>>>>>>>>>>>>> >>>>>>>>>>>>>> * Create an empty region (to plug a hole) >>>>>>>>>>>>>> * Report holes in a region chain >>>>>>>>>>>>>> >>>>>>>>>>>>>> In my head, the difference for HBCK2 was that we want to give >>>>>>>>> folks >>>>>>>>>>> the >>>>>>>>>>>>>> tools to fix their cluster, but we did not want to own the >>>>>>>> "just >>>>>>>>>> fix >>>>>>>>>>>>>> everything" kind of tool that HBCK1 had become. That problem >>>>>>>> with >>>>>>>>>>> HBCK1 >>>>>>>>>>>>>> was that it was often difficult/problematic for us to know >>>>>>> how >>>>>>>> to >>>>>>>>>>>>>> correctly fix a problem (the same problem could be corrected >>>>>>> in >>>>>>>>>>>>>> different ways). >>>>>>>>>>>>>> >>>>>>>>>>>>>> Andrew had some confusion about this, so I'm not sure if I'm >>>>>>>>>> off-base >>>>>>>>>>>> or >>>>>>>>>>>>>> if we're all in agreement on direction and we just need to >>>>>>> do a >>>>>>>>>>> better >>>>>>>>>>>>>> job documenting things. Thanks for keeping me honest either >>>>>>> way >>>>>>>>> :) >>>>>>>>>>>>>> >>>>>>>>>>>>>> And just in case it doesn't go without saying, HBCK2 would be >>>>>>>>>>> something >>>>>>>>>>>>>> that helps fix a system, while we want to always understand >>>>>>> the >>>>>>>>>> root >>>>>>>>>>>>>> cause of how/why we got into a situation where we needed >>>>>>> HBCK2 >>>>>>>>> and >>>>>>>>>>> also >>>>>>>>>>>>>> address that. >>>>>>>>>>>>>> >>>>>>>>>>>>>> - Josh >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>