Return-Path: Delivered-To: apmail-hadoop-chukwa-dev-archive@minotaur.apache.org Received: (qmail 91654 invoked from network); 26 Apr 2010 17:29:02 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 26 Apr 2010 17:29:02 -0000 Received: (qmail 82185 invoked by uid 500); 26 Apr 2010 17:29:02 -0000 Delivered-To: apmail-hadoop-chukwa-dev-archive@hadoop.apache.org Received: (qmail 82167 invoked by uid 500); 26 Apr 2010 17:29:02 -0000 Mailing-List: contact chukwa-dev-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: chukwa-dev@hadoop.apache.org Delivered-To: mailing list chukwa-dev@hadoop.apache.org Received: (qmail 82159 invoked by uid 99); 26 Apr 2010 17:29:02 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 Apr 2010 17:29:02 +0000 X-ASF-Spam-Status: No, hits=-1.1 required=10.0 tests=AWL,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of jboulon@netflix.com designates 208.75.77.145 as permitted sender) Received: from [208.75.77.145] (HELO mx2.netflix.com) (208.75.77.145) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 Apr 2010 17:28:57 +0000 Received: from message.netflix.com (message [10.64.32.68]) by mx2.netflix.com (8.12.11.20060308/8.12.11) with ESMTP id o3QHSaep010797 for ; Mon, 26 Apr 2010 10:28:36 -0700 Received: from bigmamma.netflix.com ([10.64.32.75]) by message.netflix.com with Microsoft SMTPSVC(6.0.3790.4675); Mon, 26 Apr 2010 10:28:35 -0700 Received: from 10.2.177.150 ([10.2.177.150]) by bigmamma.netflix.com ([10.64.32.75]) with Microsoft Exchange Server HTTP-DAV ; Mon, 26 Apr 2010 17:28:34 +0000 User-Agent: Microsoft-Entourage/12.24.0.100205 Date: Mon, 26 Apr 2010 10:28:33 -0700 Subject: Re: Data partitioning for demux From: Jerome Boulon To: Message-ID: Thread-Topic: Data partitioning for demux Thread-Index: AcrkqrVBNRT7AKXLKE2RmJue5dIAewAuy/C9 In-Reply-To: Mime-version: 1.0 Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit X-OriginalArrivalTime: 26 Apr 2010 17:28:35.0319 (UTC) FILETIME=[E6631070:01CAE565] Hi, The partitionning function should be driven by the user not decide at this level. The Mapper class, the reducer class and the partionner should all be driven by configuration. There's no way for Demux to do the right thing based on static configuration. Even for the same demux but different dataType you may want to use a different partionning function so we need to have a partionnerManager that will select the right partionner based on the reduceType similar to what we are doing to select the right parser/reducer class. The reason I'm saying that is that in Hive world, nobody access the SeqFile itself, just Hive engine is doing that and since there's no index it doesn't make sense to spend time/cpu/memory to have a file that will be globally sorted. So in that case, you want to have the same number of rows per reducer (%reducerCount), your proposal will be better than the current implementation but will not be good for anybody who does not need a file to be globally sorted. Could you open a Jira for this and I will add more comments on it? /Jerome. On 4/25/10 12:08 PM, "Eric Yang" wrote: > Hi all, > > I am working on enhancing the reducer partitioning for demux. It basically > boils down to two main use cases. > > Case #1, demux is responsible for crunching large volumes of the same data > type (dozen of types). It will probably make more sense to partition the > reducer by time grouping + data type (extend TotalOrderPartitioner). I.e. A > user can have evenly distributed workload for each reducer base on time > interval. A distributed hash table like Hbase/voldermort could be the down > stream system to store/cache the data for data serving. This model is great > for collecting fixed time interval logs like hadoop metrics, and ExecAdaptor > which generates repetitive time series summary. > > Case #2, demux is responsible for crunching hundred of different data type, > but small volumn for each data type. The current demux implementation is > using this model, where a single data type is reduced by one reducer slot > (ChukwaRecordPartitioner). One draw back from this model,the data from each > data type must have similar volume. Otherwise, the largest data volume type > becomes the long tail of the mapreduce job. Materialized report is easy to > generate by using this model because the single reducer per data type has > view to all data of the given demux run. This model works great for many > different application and all logging through Chukwa Log4j appender. I.e. > web crawl, or log file indexing / viewing. > > I am thinking to change the default Chukwa demux implementation to case #1, > and restructure the current demux as Archive Organizer. Any suggestion or > objection? > > Regards, > Eric > >