PS another idea that i have is that it is possible to use multiple files for
the input of course, such as output from another job. But again, if there
are any that contain less than k+p rows, they of course would generate
individual splits and must be pre-aggregated (it is similar to pig
optimization where it concatenates files too small into single split). But
we don't do it on the fly in Mahout so if there are too many small files in
input, they must be pre-aggregated by some other means.

Bottom line, please control your mapper input count to make sure it is no
less than k+p in each case.

-d



On Tue, Aug 16, 2011 at 12:15 PM, Dmitriy Lyubimov <dlie...@gmail.com>wrote:

> Hm. This is not common at all.
>
> This error would surface if map split can't accumulate at least k+p rows.
>
> That's another requirement which usually is non-issue -- any precomputed
> split must contain at least k+p rows, which normally would not be the case
> only if matrix is extra wide and dense, in which case --minSplitSize must be
> used to avoid this.
>
> But in your case, the matrix is so small it must fit in one split. Can you
> please verify how many mappers the job generates?
>
> if it's more than 1 than something is going fishy with hadoop. Otherwise,
> something is fishy with input (it's either not 293 rows, or k+p is more than
> 293).
>
> -d
>
>
> On Tue, Aug 16, 2011 at 11:39 AM, Eshwaran Vijaya Kumar <
> evijayaku...@mozilla.com> wrote:
>
>>
>> On Aug 16, 2011, at 10:35 AM, Dmitriy Lyubimov wrote:
>>
>> > This is unusually small input. What's the block size? Use large blocks
>> (such
>> > as 30,000). Block size can't be less than k+p.
>> >
>>
>> I did set blockSize to 30,000 (as recommended in the PDF that you wrote
>> up). As far as input size, the reason to do that is because it is easier to
>> test and verify the map-reduce pipeline with my in-memory implementation of
>> the algorithm.
>>
>> > Can you please cut and paste actual log of qjob tasks that failed? This
>> is
>> > front end error, but the actual problem is actually in the backend
>> ranging
>> > anywhere from hadoop problems to algorithm problems.
>> Sure. Refer http://esh.pastebin.mozilla.org/1302059
>> Input is a DistributedRowMatrix 293 X 236, k = 4, p = 40,  numReduceTasks
>> = 1, blockHeight = 30,000. Reducing p = 20 ensures job goes through...
>>
>> Thanks again
>> Esh
>>
>>
>> > On Aug 16, 2011 9:44 AM, "Eshwaran Vijaya Kumar" <
>> evijayaku...@mozilla.com>
>> > wrote:
>> >> Thanks again. I am using 0.5 right now. We will try to patch it up and
>> see
>> > how it performs. In the mean time, I am having another (possibly user?)
>> > error: I have a 260 X 230 matrix. I set k+p = 40, it fails with
>> >>
>> >> Exception in thread "main" java.io.IOException: Q job unsuccessful.
>> >> at org.apache.mahout.math.hadoop.stochasticsvd.QJob.run(QJob.java:349)
>> >> at
>> >
>> org.apache.mahout.math.hadoop.stochasticsvd.SSVDSolver.run(SSVDSolver.java:262)
>> >> at
>> > org.apache.mahout.math.hadoop.stochasticsvd.SSVDCli.run(SSVDCli.java:91)
>> >> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
>> >> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
>> >> at
>> >
>> org.apache.mahout.math.hadoop.stochasticsvd.SSVDCli.main(SSVDCli.java:131)
>> >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> >> at
>> >
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>> >> at
>> >
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>> >> at java.lang.reflect.Method.invoke(Method.java:597)
>> >> at
>> >
>> org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:68)
>> >> at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:139)
>> >> at org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:187)
>> >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> >> at
>> >
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>> >> at
>> >
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>> >> at java.lang.reflect.Method.invoke(Method.java:597)
>> >> at org.apache.hadoop.util.RunJar.main(RunJar.java:186)
>> >>
>> >>
>> >> Suppose I set k+p to be much lesser say around 20, it works fine. Is it
>> > just that my dataset is of low rank or is there something else going on
>> > here?
>> >>
>> >> Thanks
>> >> Esh
>> >>
>> >>
>> >>
>> >> On Aug 14, 2011, at 1:47 PM, Dmitriy Lyubimov wrote:
>> >>
>> >>> ... i need to let some time for review before pushing to ASF repo )..
>> >>>
>> >>>
>> >>> On Sun, Aug 14, 2011 at 1:47 PM, Dmitriy Lyubimov <dlie...@gmail.com>
>> > wrote:
>> >>>
>> >>>> patch is posted as MAHOUT -786.
>> >>>>
>> >>>> also 0.6 trunk with patch applied is here :
>> >>>> https://github.com/dlyubimov/mahout-commits/tree/MAHOUT-786
>> >>>>
>> >>>> <https://github.com/dlyubimov/mahout-commits/tree/MAHOUT-786>I will
>> > commit
>> >>>> to ASF repo tomorrow night (even that it is extremely simple, i need
>> >>>>
>> >>>>
>> >>>> On Sat, Aug 13, 2011 at 1:48 PM, Eshwaran Vijaya Kumar <
>> >>>> evijayaku...@mozilla.com> wrote:
>> >>>>
>> >>>>> Dmitriy,
>> >>>>> That sounds great. I eagerly await the patch.
>> >>>>> Thanks
>> >>>>> Esh
>> >>>>> On Aug 13, 2011, at 1:37 PM, Dmitriy Lyubimov wrote:
>> >>>>>
>> >>>>>> Ok, i got u0 working.
>> >>>>>>
>> >>>>>> The problem is of course that something called BBt job is to be
>> > coerced
>> >>>>> to
>> >>>>>> have 1 reducer (it's fine, every mapper won't yeld more than
>> >>>>>> upper-triangular matrix of k+p x k+p geometry, so even if you end
>> up
>> >>>>> having
>> >>>>>> thousands of them, reducer would sum them up just fine.
>> >>>>>>
>> >>>>>> it worked before apparently because configuration hold 1 reducer by
>> >>>>> default
>> >>>>>> if not set explicitly, i am not quite sure if that's something in
>> > hadoop
>> >>>>> mr
>> >>>>>> client or mahout change that now precludes it from working.
>> >>>>>>
>> >>>>>> anyway, i got a patch (really a one-liner) and an example
>> equivalent
>> > to
>> >>>>>> yours worked fine for me with 3 reducers.
>> >>>>>>
>> >>>>>> Also, in the tests, it also requests 3 reducers, but the reason it
>> > works
>> >>>>> in
>> >>>>>> tests and not in distributed mapred is because local mapred doesn't
>> >>>>> support
>> >>>>>> multiple reducers. I investigated this issue before and apparently
>> > there
>> >>>>>> were a couple of patches floating around but for some reason those
>> >>>>> changes
>> >>>>>> did not take hold in cdh3u0.
>> >>>>>>
>> >>>>>> I will publish patch in a jira shortly and will commit it
>> Sunday-ish.
>> >>>>>>
>> >>>>>> Thanks.
>> >>>>>> -d
>> >>>>>>
>> >>>>>>
>> >>>>>> On Fri, Aug 5, 2011 at 7:06 PM, Eshwaran Vijaya Kumar <
>> >>>>>> evijayaku...@mozilla.com> wrote:
>> >>>>>>
>> >>>>>>> OK. So to add more info to this, I tried setting the number of
>> > reducers
>> >>>>> to
>> >>>>>>> 1 and now I don't get that particular error. The singular values
>> and
>> >>>>> left
>> >>>>>>> and right singular vectors appear to be correct though (verified
>> > using
>> >>>>>>> Matlab).
>> >>>>>>>
>> >>>>>>> On Aug 5, 2011, at 1:55 PM, Eshwaran Vijaya Kumar wrote:
>> >>>>>>>
>> >>>>>>>> All,
>> >>>>>>>> I am trying to test Stochastic SVD and am facing some errors
>> where
>> > it
>> >>>>>>> would be great if someone could clarifying what is going on. I am
>> >>>>> trying to
>> >>>>>>> feed the solver a DistributedRowMatrix with the exact same
>> parameters
>> >>>>> that
>> >>>>>>> the test in LocalSSVDSolverSparseSequentialTest uses, i.e,
>> Generate a
>> >>>>> 1000
>> >>>>>>> X 100 DRM with SequentialSparseVectors and then ask for
>> blockHeight
>> >>>>> 251, p
>> >>>>>>> (oversampling) = 60, k (rank) = 40. I get the following error:
>> >>>>>>>>
>> >>>>>>>> Exception in thread "main" java.io.IOException: Unexpected
>> overrun
>> > in
>> >>>>>>> upper triangular matrix files
>> >>>>>>>> at
>> >>>>>>>
>> >>>>>
>> >
>> org.apache.mahout.math.hadoop.stochasticsvd.SSVDSolver.loadUpperTriangularMatrix(SSVDSolver.java:471)
>> >>>>>>>> at
>> >>>>>>>
>> >>>>>
>> >
>> org.apache.mahout.math.hadoop.stochasticsvd.SSVDSolver.run(SSVDSolver.java:268)
>> >>>>>>>> at com.mozilla.SSVDCli.run(SSVDCli.java:89)
>> >>>>>>>> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
>> >>>>>>>> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
>> >>>>>>>> at com.mozilla.SSVDCli.main(SSVDCli.java:129)
>> >>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> >>>>>>>> at
>> >>>>>>>
>> >>>>>
>> >
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>> >>>>>>>> at
>> >>>>>>>
>> >>>>>
>> >
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>> >>>>>>>> at java.lang.reflect.Method.invoke(Method.java:597)
>> >>>>>>>> at org.apache.hadoop.util.RunJar.main(RunJar.java:186)
>> >>>>>>>>
>> >>>>>>>> Also, I am using CDH3 with Mahout recompiled to work with CDH3
>> jars.
>> >>>>>>>>
>> >>>>>>>> Thanks
>> >>>>>>>> Esh
>> >>>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>
>> >>>>>
>> >>>>
>> >>
>>
>>
>

Reply via email to