Return-Path: X-Original-To: apmail-hbase-user-archive@www.apache.org Delivered-To: apmail-hbase-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 7991D18DDC for ; Thu, 9 Jul 2015 07:49:23 +0000 (UTC) Received: (qmail 9148 invoked by uid 500); 9 Jul 2015 07:49:21 -0000 Delivered-To: apmail-hbase-user-archive@hbase.apache.org Received: (qmail 9077 invoked by uid 500); 9 Jul 2015 07:49:21 -0000 Mailing-List: contact user-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@hbase.apache.org Delivered-To: mailing list user@hbase.apache.org Received: (qmail 9065 invoked by uid 99); 9 Jul 2015 07:49:21 -0000 Received: from Unknown (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 Jul 2015 07:49:21 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id A10E4D335F for ; Thu, 9 Jul 2015 07:49:20 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.902 X-Spam-Level: ** X-Spam-Status: No, score=2.902 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=3, KAM_BODY_MARKETINGBL_PCCC=0.001, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd1-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-us-west.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id fUKNclIVeHtg for ; Thu, 9 Jul 2015 07:49:10 +0000 (UTC) Received: from mail-wi0-f179.google.com (mail-wi0-f179.google.com [209.85.212.179]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with ESMTPS id 2DE7E20F78 for ; Thu, 9 Jul 2015 07:49:09 +0000 (UTC) Received: by wiclp1 with SMTP id lp1so101493556wic.0 for ; Thu, 09 Jul 2015 00:48:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :content-type; bh=xqgfPNr9/kx0eXm8UVVOoYO9v3DZu24StOtGXvtvj2w=; b=hLnAH5xuAoeetqOO0/69j8hGkIH8pwUXSXXubyIVa7wfmbuSCJ8aNlNHHCHGw37rf/ /2jb+BjEcoTbkRWXaKPmQmL/KbY21UAKWKebbv4AAQBzRrmMd9EYlGzfpc4m8zKpDVSN GZN4NBNkrM2OBDf6TzJWRlSL26UcTw3QMQcACnfkzawx96wGtQukMZ5jELgWeDrpYKTi n0+gwYsF/8sdwh3FeOh7JD6WajBUl2PUsfE9DctiGdHdHKozeHG6usIkF+KZyC10Gafh xz5HEKebdHWlUpFrrfdcSmSmWmwGkvbdWjrT4K93VqQQgBMR6JGlBXR0wSMOato7SBkR 3jNg== X-Received: by 10.194.10.165 with SMTP id j5mr29150509wjb.147.1436428099877; Thu, 09 Jul 2015 00:48:19 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Dejan Menges Date: Thu, 09 Jul 2015 07:48:10 +0000 Message-ID: Subject: Re: Automating major compactions To: user Content-Type: multipart/alternative; boundary=e89a8f642b06a38398051a6c7a11 --e89a8f642b06a38398051a6c7a11 Content-Type: text/plain; charset=UTF-8 Thanks a lot to everyone - very nice point about looking for oldest file and taking locality into consideration. Going to implement it now :) On Wed, Jul 8, 2015 at 10:57 PM Bryan Beaudreault wrote: > Our automation uses a combination of the following to determine what to > compact: > > - Which regions have bad locality (% of blocks are local vs remote, using > HDFS getBlockLocations APIs) > - Which regions have the most number of HFiles (most files per region/cf > directory) > - Which regions have gone the longest since a compaction (oldest file) > > The order here is the priority we have given each, but YMMV. We run in > EC2, so value locality over almost everything, to avoid network latencies > on reads. > > On Wed, Jul 8, 2015 at 4:48 PM Jean-Marc Spaggiari < > jean-marc@spaggiari.org> > wrote: > > > Just missing the ColumnFamiliy at the end of the path. Your memory is > > pretty good. > > > > JM > > > > 2015-07-08 16:39 GMT-04:00 Vladimir Rodionov : > > > > > You can find this info yourself, Dejan > > > > > > 1. Locate table dir on HDFS > > > 2. List all regions (directories) > > > 3. Iterate files in each directory and find the oldest one (creation > > time) > > > 4. The region with the oldest file is your candidate for major > compaction > > > > > > /HBASE_ROOT/data/namespace/table/region (If my memory serves me right > :)) > > > > > > -Vlad > > > > > > On Wed, Jul 8, 2015 at 1:07 PM, Dejan Menges > > > wrote: > > > > > > > Hi Mikhail, > > > > > > > > Actually, reason is quite stupid on my side - to avoid compacting one > > > > region over and over again while others are waiting in line (reading > > HTML > > > > and sorting only on number of store files gets you at some point > having > > > > bunch of regions having exactly the same number of store files). > > > > > > > > Thanks for this hint - this is exactly something I was looking for. > Was > > > > trying previously to figure out if it's possible to query meta for > this > > > > information (using currently 0.98.0, 0.98.4 and waiting for HDP 2.3 > > from > > > > Hortonworks to upgrade immediately) but for our current version > didn't > > > > found that possible, that's why I decided going this way. > > > > > > > > On Wed, Jul 8, 2015 at 10:02 PM Mikhail Antonov < > olorinbant@gmail.com> > > > > wrote: > > > > > > > > > I totally understand the reasoning behind compacting regions with > > > > > biggest number of store files, but didn't follow why it's best to > > > > > compact regions which have biggest store files, maybe I'm missing > > > > > something? I'd maybe compact regions which have the smallest avg > > > > > storefile size? > > > > > > > > > > You may also want to take a look at > > > > > https://issues.apache.org/jira/browse/HBASE-12859, and compact > > regions > > > > > for which MC was last run longer time ago. > > > > > > > > > > -Mikhail > > > > > > > > > > On Wed, Jul 8, 2015 at 10:30 AM, Dejan Menges < > > dejan.menges@gmail.com> > > > > > wrote: > > > > > > Hi Behdad, > > > > > > > > > > > > Thanks a lot, but this part I do already. My question was more > what > > > to > > > > > use > > > > > > to most intelligently (what exposed or not exposed metrics) > figure > > > out > > > > > > where major compaction is needed the most. > > > > > > > > > > > > Currently, choosing the region which has biggest number of store > > > files > > > > + > > > > > > the biggest amount of store files is doing the job, but wasn't > sure > > > if > > > > > > there's maybe something better so far to choose from. > > > > > > > > > > > > Cheers, > > > > > > Dejan > > > > > > > > > > > > On Wed, Jul 8, 2015 at 7:19 PM Behdad Forghani < > > > behdad@exapackets.com> > > > > > > wrote: > > > > > > > > > > > >> To start major compaction for tablename from cli, you need to > run: > > > > > >> echo major_compact tablename | hbase shell > > > > > >> > > > > > >> I do this after bulk loading to the table. > > > > > >> > > > > > >> FYI, to avoid surprises, I also turn off load balancer and > > rebalance > > > > > >> regions manually. > > > > > >> > > > > > >> The cli command to turn off balancer is: > > > > > >> echo balance_switch false | hbase shell > > > > > >> > > > > > >> To rebalance regions after a bulk load or other changes, run: > > > > > >> echo balance | hbase shell > > > > > >> > > > > > >> You can run these two command using ssh. I use Ansible to do > > these. > > > > > >> Assuming you have defined hbase_master in your hosts file, you > can > > > > run: > > > > > >> ansible -i hosts hbase_master -a "echo major_compact tablename | > > > hbase > > > > > >> shell" > > > > > >> > > > > > >> Behdad Forghani > > > > > >> > > > > > >> On Wed, Jul 8, 2015 at 8:03 AM, Dejan Menges < > > > dejan.menges@gmail.com> > > > > > >> wrote: > > > > > >> > > > > > >> > Hi, > > > > > >> > > > > > > >> > What's the best way to automate major compactions without > > enabling > > > > it > > > > > >> > during off peak period? > > > > > >> > > > > > > >> > What I was testing is simple script which runs on every node > in > > > > > cluster, > > > > > >> > checks if there is major compaction already running on that > > node, > > > if > > > > > not > > > > > >> > picks one region for compaction and run compaction on that one > > > > region. > > > > > >> > > > > > > >> > It's running for some time and it helped us get our data to > much > > > > > better > > > > > >> > shape, but now I'm not quite sure how to choose anymore which > > > region > > > > > to > > > > > >> > compact. So far I was reading for that node > > > > rs-status#regionStoreStats > > > > > >> and > > > > > >> > first choosing the one with biggest amount of storefiles, and > > then > > > > > those > > > > > >> > with biggest storefile sizes. > > > > > >> > > > > > > >> > Is there maybe something more intelligent I could/should do? > > > > > >> > > > > > > >> > Thanks a lot! > > > > > >> > > > > > > >> > > > > > > > > > > > > > > > > > > > > -- > > > > > Thanks, > > > > > Michael Antonov > > > > > > > > > > > > > > > --e89a8f642b06a38398051a6c7a11--