thanks.

re #1.  we need to find that Hiveserver2 process. For all i know the one
you reported is hiveserver1 (which works.) chances are they use the same
-Xmx value but we really shouldn't make any assumptions.

try wide format on the ps command (eg. ps -efw | grep -i Hiveserver2)

re.#2.  okay.  so that tells us is not the number of columns blowing the
heap but rather the combination of rows + columns.  There's no way it
stores the full result set on the heap even under normal circumstances so
my guess is there's an internal number of rows it buffers.  sorta like how
unix buffers stdout.  How and where that's set is out of my league.
However, maybe you get around it by upping your heapsize again if you have
the available memory of course.


On Tue, Feb 18, 2014 at 8:39 AM, David Gayou <david.ga...@kxen.com> wrote:

>
> 1. I have no process with hiveserver2 ...
>
> "ps -ef | grep -i hive"  return some pretty long command with a -Xmx8192
> and that's the value set in hive-env.sh
>
>
> 2. The "select * from table limit 1" or even 100 is working correctly.
>
>
> David.
>
>
> On Tue, Feb 18, 2014 at 4:16 PM, Stephen Sprague <sprag...@gmail.com>wrote:
>
>> He lives on after all! and thanks for the continued feedback.
>>
>> We need the answers to these questions using HS2:
>>
>>
>>
>>    1. what is the output of "ps -ef | grep -i hiveserver2" on your
>> system? in particular what is the value of -Xmx ?
>>
>>    2. does "select * from table limit 1" work?
>>
>> Thanks,
>> Stephen.
>>
>>
>>
>> On Tue, Feb 18, 2014 at 6:32 AM, David Gayou <david.ga...@kxen.com>wrote:
>>
>>> I'm so sorry, i wrote an answer, and i forgot to sent it....
>>> And i haven't been able to work on this for a few days.
>>>
>>>
>>> So far :
>>>
>>> I have a 15k columns table and 50k rows.
>>>
>>> I do not see any changes if i change the storage.
>>>
>>>
>>> *Hive 12.0*
>>>
>>> My test query is "select * from bigtable"
>>>
>>>
>>> If i use the hive cli, it works fine.
>>>
>>> If i use hiveserver1 + ODBC : it works fine
>>>
>>> If i use hiverserver2 + odbc or hiverserver2 + beeline,i have this java
>>> exception :
>>>
>>> 2014-02-18 13:22:22,571 ERROR thrift.ProcessFunction
>>> (ProcessFunction.java:process(41)) - Internal error processing FetchResults
>>>
>>> java.lang.OutOfMemoryError: Java heap space
>>>         at java.util.Arrays.copyOf(Arrays.java:2734)
>>>         at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
>>>         at java.util.ArrayList.add(ArrayList.java:351)
>>>          at
>>> org.apache.hive.service.cli.thrift.TRow.addToColVals(TRow.java:160)
>>>         at
>>> org.apache.hive.service.cli.RowBasedSet.addRow(RowBasedSet.java:60)
>>>         at
>>> org.apache.hive.service.cli.RowBasedSet.addRow(RowBasedSet.java:32)
>>>         at
>>> org.apache.hive.service.cli.operation.SQLOperation.prepareFromRow(SQLOperation.java:270)
>>>         at
>>> org.apache.hive.service.cli.operation.SQLOperation.decode(SQLOperation.java:262)
>>>         at
>>> org.apache.hive.service.cli.operation.SQLOperation.getNextRowSet(SQLOperation.java:246)
>>>         at
>>> org.apache.hive.service.cli.operation.OperationManager.getOperationNextRowSet(OperationManager.java:171)
>>>         at
>>> org.apache.hive.service.cli.session.HiveSessionImpl.fetchResults(HiveSessionImpl.java:438)
>>>         at
>>> org.apache.hive.service.cli.CLIService.fetchResults(CLIService.java:346)
>>>         at
>>> org.apache.hive.service.cli.thrift.ThriftCLIService.FetchResults(ThriftCLIService.java:407)
>>>         at
>>> org.apache.hive.service.cli.thrift.TCLIService$Processor$FetchResults.getResult(TCLIService.java:1373)
>>>
>>>
>>>
>>>
>>> *From the SVN trunk* : (for the HIVE-3746)
>>>
>>> With the maven change, most of the documentation and wiki are out of
>>> date.
>>> Compiling from trunk was not that easy and i may have failed some steps
>>> but :
>>>
>>> It has the same behavior. It works in CLI and hiveserver1.
>>> It fails with hiveserver 2.
>>>
>>>
>>> Regards
>>>
>>> David Gayou
>>>
>>>
>>>
>>>
>>>
>>> On Thu, Feb 13, 2014 at 3:11 AM, Navis류승우 <navis....@nexr.com> wrote:
>>>
>>>> With HIVE-3746, which will be included in hive-0.13, HiveServer2 takes
>>>> less memory than before.
>>>>
>>>> Could you try it with the version in trunk?
>>>>
>>>>
>>>> 2014-02-13 10:49 GMT+09:00 Stephen Sprague <sprag...@gmail.com>:
>>>>
>>>> question to the original poster.  closure appreciated!
>>>>>
>>>>>
>>>>> On Fri, Jan 31, 2014 at 12:22 PM, Stephen Sprague 
>>>>> <sprag...@gmail.com>wrote:
>>>>>
>>>>>> thanks Ed. And on a separate tact lets look at Hiveserver2.
>>>>>>
>>>>>>
>>>>>> @OP>
>>>>>>
>>>>>> *I've tried to look around on how i can change the thrift heap size
>>>>>> but haven't found anything.*
>>>>>>
>>>>>>
>>>>>> looking at my hiveserver2 i find this:
>>>>>>
>>>>>>    $ ps -ef | grep -i hiveserver2
>>>>>>    dwr       9824 20479  0 12:11 pts/1    00:00:00 grep -i hiveserver2
>>>>>>    dwr      28410     1  0 00:05 ?        00:01:04
>>>>>> /usr/lib/jvm/java-6-sun/jre/bin/java 
>>>>>> *-Xmx256m*-Dhadoop.log.dir=/usr/lib/hadoop/logs 
>>>>>> -Dhadoop.log.file=hadoop.log
>>>>>> -Dhadoop.home.dir=/usr/lib/hadoop -Dhadoop.id.str=
>>>>>> -Dhadoop.root.logger=INFO,console
>>>>>> -Djava.library.path=/usr/lib/hadoop/lib/native
>>>>>> -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true
>>>>>> -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar
>>>>>> /usr/lib/hive/lib/hive-service-0.12.0.jar
>>>>>> org.apache.hive.service.server.HiveServer2
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> questions:
>>>>>>
>>>>>>    1. what is the output of "ps -ef | grep -i hiveserver2" on your
>>>>>> system? in particular what is the value of -Xmx ?
>>>>>>
>>>>>>    2. can you restart your hiveserver with -Xmx1g? or some value that
>>>>>> makes sense to your system?
>>>>>>
>>>>>>
>>>>>>
>>>>>> Lots of questions now.  we await your answers! :)
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Fri, Jan 31, 2014 at 11:51 AM, Edward Capriolo <
>>>>>> edlinuxg...@gmail.com> wrote:
>>>>>>
>>>>>>> Final table compression should not effect the de serialized size of
>>>>>>> the data over the wire.
>>>>>>>
>>>>>>>
>>>>>>> On Fri, Jan 31, 2014 at 2:49 PM, Stephen Sprague <sprag...@gmail.com
>>>>>>> > wrote:
>>>>>>>
>>>>>>>> Excellent progress David.   So.  What the most important thing here
>>>>>>>> we learned was that it works (!) by running hive in local mode and that
>>>>>>>> this error is a limitation in the HiveServer2.  That's important.
>>>>>>>>
>>>>>>>> so textfile storage handler and having issues converting it to ORC.
>>>>>>>> hmmm.
>>>>>>>>
>>>>>>>> follow-ups.
>>>>>>>>
>>>>>>>> 1. what is your query that fails?
>>>>>>>>
>>>>>>>> 2. can you add a "limit 1" to the end of your query and tell us if
>>>>>>>> that works? this'll tell us if it's column or row bound.
>>>>>>>>
>>>>>>>> 3. bonus points. run these in local mode:
>>>>>>>>       > set hive.exec.compress.output=true;
>>>>>>>>       > set mapred.output.compression.type=BLOCK;
>>>>>>>>       > set
>>>>>>>> mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
>>>>>>>>       > create table blah stored as ORC as select * from <your
>>>>>>>> table>;   #i'm curious if this'll work.
>>>>>>>>       > show create table blah;  #send output back if previous step
>>>>>>>> worked.
>>>>>>>>
>>>>>>>> 4. extra bonus.  change ORC to SEQUENCEFILE in #3 see if that works
>>>>>>>> any differently.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> I'm wondering if compression would have any effect on the size of
>>>>>>>> the internal ArrayList the thrift server uses.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Fri, Jan 31, 2014 at 9:21 AM, David Gayou 
>>>>>>>> <david.ga...@kxen.com>wrote:
>>>>>>>>
>>>>>>>>> Ok, so here are some news :
>>>>>>>>>
>>>>>>>>> I tried to boost the HADOOP_HEAPSIZE to 8192,
>>>>>>>>> I also setted the mapred.child.java.opts to 512M
>>>>>>>>>
>>>>>>>>> And it doesn't seem's to have any effect.
>>>>>>>>>  ------
>>>>>>>>>
>>>>>>>>> I tried it using an ODBC driver => fail after few minutes.
>>>>>>>>> Using a local JDBC (beeline) => running forever without any error.
>>>>>>>>>
>>>>>>>>> Both through hiveserver 2
>>>>>>>>>
>>>>>>>>> If i use the local mode : it works!   (but that not really what i
>>>>>>>>> need, as i don't really how to access it with my software)
>>>>>>>>>
>>>>>>>>> ------
>>>>>>>>> I use a text file as storage.
>>>>>>>>> I tried to use ORC, but i can't populate it with a load data  (it
>>>>>>>>> return an error of file format).
>>>>>>>>>
>>>>>>>>> Using an "ALTER TABLE orange_large_train_3 SET FILEFORMAT ORC"
>>>>>>>>> after populating the table, i have a file format error on select.
>>>>>>>>>
>>>>>>>>> ------
>>>>>>>>>
>>>>>>>>> @Edward :
>>>>>>>>>
>>>>>>>>> I've tried to look around on how i can change the thrift heap size
>>>>>>>>> but haven't found anything.
>>>>>>>>> Same thing for my client (haven't found how to change the heap
>>>>>>>>> size)
>>>>>>>>>
>>>>>>>>> My usecase is really to have the most possible columns.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks a lot for your help
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Regards
>>>>>>>>>
>>>>>>>>> David
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Fri, Jan 31, 2014 at 1:12 AM, Edward Capriolo <
>>>>>>>>> edlinuxg...@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Ok here are the problem(s). Thrift has frame size limits, thrift
>>>>>>>>>> has to buffer rows into memory.
>>>>>>>>>>
>>>>>>>>>> Hove thrift has a heap size, it needs to big in this case.
>>>>>>>>>>
>>>>>>>>>> Your client needs a big heap size as well.
>>>>>>>>>>
>>>>>>>>>> The way to do this query if it is possible may be turning row
>>>>>>>>>> lateral, potwntially by treating it as a list, it will make queries 
>>>>>>>>>> on it
>>>>>>>>>> awkward.
>>>>>>>>>>
>>>>>>>>>> Good luck
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Thursday, January 30, 2014, Stephen Sprague <
>>>>>>>>>> sprag...@gmail.com> wrote:
>>>>>>>>>> > oh. thinking some more about this i forgot to ask some other
>>>>>>>>>> basic questions.
>>>>>>>>>> >
>>>>>>>>>> > a) what storage format are you using for the table (text,
>>>>>>>>>> sequence, rcfile, orc or custom)?   "show create table <table>" 
>>>>>>>>>> would yield
>>>>>>>>>> that.
>>>>>>>>>> >
>>>>>>>>>> > b) what command is causing the stack trace?
>>>>>>>>>> >
>>>>>>>>>> > my thinking here is rcfile and orc are column based (i think)
>>>>>>>>>> and if you don't select all the columns that could very well limit 
>>>>>>>>>> the size
>>>>>>>>>> of the "row" being returned and hence the size of the internal 
>>>>>>>>>> ArrayList.
>>>>>>>>>> OTOH, if you're using "select *", um, you have my sympathies. :)
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> > On Thu, Jan 30, 2014 at 11:33 AM, Stephen Sprague <
>>>>>>>>>> sprag...@gmail.com> wrote:
>>>>>>>>>> >
>>>>>>>>>> > thanks for the information. Up-to-date hive. Cluster on the
>>>>>>>>>> smallish side. And, well, sure looks like a memory issue. :)  rather 
>>>>>>>>>> than
>>>>>>>>>> an inherent hive limitation that is.
>>>>>>>>>> >
>>>>>>>>>> > So.  I can only speak as a user (ie. not a hive developer) but
>>>>>>>>>> what i'd be interested in knowing next is is this via running hive 
>>>>>>>>>> in local
>>>>>>>>>> mode, correct? (eg. not through hiveserver1/2).  And it looks like it
>>>>>>>>>> boinks on array processing which i assume to be internal code arrays 
>>>>>>>>>> and
>>>>>>>>>> not hive data arrays - your 15K columns are all scalar/simple types,
>>>>>>>>>> correct?  Its clearly fetching results and looks be trying to store 
>>>>>>>>>> them in
>>>>>>>>>> a java array  - and not just one row but a *set* of rows (ArrayList)
>>>>>>>>>> >
>>>>>>>>>> > two things to try.
>>>>>>>>>> >
>>>>>>>>>> > 1. boost the heap-size. try 8192. And I don't know if
>>>>>>>>>> HADOOP_HEAPSIZE is the controller of that. I woulda hoped it was 
>>>>>>>>>> called
>>>>>>>>>> something like "HIVE_HEAPSIZE". :)  Anyway, can't hurt to try.
>>>>>>>>>> >
>>>>>>>>>> > 2. trim down the number of columns and see where the breaking
>>>>>>>>>> point is.  is it 10K? is it 5K?   The idea is to confirm its _the 
>>>>>>>>>> number of
>>>>>>>>>> columns_ that is causing the memory to blow and not some other 
>>>>>>>>>> artifact
>>>>>>>>>> unbeknownst to us.
>>>>>>>>>> >
>>>>>>>>>> > 3. Google around the Hive namespace for something that might
>>>>>>>>>> limit or otherwise control the number of rows stored at once in 
>>>>>>>>>> Hive's
>>>>>>>>>> internal buffer. I snoop around too.
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> > That's all i got for now and maybe we'll get lucky and someone
>>>>>>>>>> on this list will know something or another about this. :)
>>>>>>>>>> >
>>>>>>>>>> > cheers,
>>>>>>>>>> > Stephen.
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> > On Thu, Jan 30, 2014 at 2:32 AM, David Gayou <
>>>>>>>>>> david.ga...@kxen.com> wrote:
>>>>>>>>>> >
>>>>>>>>>> > We are using the Hive 0.12.0, but it doesn't work better on
>>>>>>>>>> hive 0.11.0 or hive 0.10.0
>>>>>>>>>> > Our hadoop version is 1.1.2.
>>>>>>>>>> > Our cluster is 1 master + 4 slaves with 1 dual core xeon CPU
>>>>>>>>>> (with hyperthreading so 4 cores per machine) + 16Gb Ram each
>>>>>>>>>> >
>>>>>>>>>> > The error message i get is :
>>>>>>>>>> >
>>>>>>>>>> > 2014-01-29 12:41:09,086 ERROR thrift.ProcessFunction
>>>>>>>>>> (ProcessFunction.java:process(41)) - Internal error processing 
>>>>>>>>>> FetchResults
>>>>>>>>>> > java.lang.OutOfMemoryError: Java heap space
>>>>>>>>>> >         at java.util.Arrays.copyOf(Arrays.java:2734)
>>>>>>>>>> >         at
>>>>>>>>>> java.util.ArrayList.ensureCapacity(ArrayList.java:167)
>>>>>>>>>> >         at java.util.ArrayList.add(ArrayList.java:351)
>>>>>>>>>> >         at org.apache.hive.service.cli.Row.<init>(Row.java:47)
>>>>>>>>>> >         at
>>>>>>>>>> org.apache.hive.service.cli.RowSet.addRow(RowSet.java:61)
>>>>>>>>>> >         at
>>>>>>>>>> org.apache.hive.service.cli.operation.SQLOperation.getNextRowSet(SQLOperation.java:235)
>>>>>>>>>> >         at
>>>>>>>>>> org.apache.hive.service.cli.operation.OperationManager.getOperationNextRowSet(OperationManager.java:170)
>>>>>>>>>> >         at
>>>>>>>>>> org.apache.hive.service.cli.session.HiveSessionImpl.fetchResults(HiveSessionImpl.java:417)
>>>>>>>>>> >         at
>>>>>>>>>> org.apache.hive.service.cli.CLIService.fetchResults(CLIService.java:306)
>>>>>>>>>> >         at
>>>>>>>>>> org.apache.hive.service.cli.thrift.ThriftCLIService.FetchResults(ThriftCLIService.java:386)
>>>>>>>>>> >         at
>>>>>>>>>> org.apache.hive.service.cli.thrift.TCLIService$Processor$FetchResults.getResult(TCLIService.java:1373)
>>>>>>>>>> >         at
>>>>>>>>>> org.apache.hive.service.cli.thrift.TCLIService$Processor$FetchResults.getResult(TCLIService.java:1358)
>>>>>>>>>> >         at
>>>>>>>>>> org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
>>>>>>>>>> >         at
>>>>>>>>>> org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
>>>>>>>>>> >         at
>>>>>>>>>> org.apache.hive.service.auth.TUGIContainingProcessor$1.run(TUGIContainingProcessor.java:58)
>>>>>>>>>> >         at
>>>>>>>>>> org.apache.hive.service.auth.TUGIContainingProcessor$1.run(TUGIContainingProcessor.java:55)
>>>>>>>>>> >         at java.security.AccessCont
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Sorry this was sent from mobile. Will do less grammar and spell
>>>>>>>>>> check than usual.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Reply via email to