hive-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jörn Franke <jornfra...@gmail.com>
Subject Re: Hive 0.12 MAPJOIN hangs sometimes
Date Fri, 11 Mar 2016 14:55:42 GMT
Honestly 0.12 is a no go - you miss a lot of performance improvements. Probably your query
would execute in less than a minute. If your Hadoop vendor does not support smooth upgrades
then change it. Hive 1.2.1 is the absolute minimum including using Orc or parquet as a table
format and tez (preferred) or spark as an execution engine.

To your questions: 
It seems that the logger is configured wrongly that is why you may miss some messages.

What is the exact join query. Hive on older version needed a special syntax if you wanted
to benefit from partition pruning.

Which Hadoop version are you using.



> On 11 Mar 2016, at 15:43, Yong Zhang <java8964@hotmail.com> wrote:
> 
> Hi, Hive users:
> 
> Currently our Hadoop vendor comes with Hive 0.12. I know it is a kind of old version,
but upgrade still has some long path to go.
> 
> Right now, we are facing an issue in the Hive 0.12.
> 
> We have one ETL kind of steps implemented in Hive, and due to the data volume in this
step, we know that MAPJOIN is the right way to go, as one side of data is very small, but
the other size is much larger.
> 
> So below is the query example:
> 
> set hive.exec.compress.output=true;
> set parquet.compression=snappy;
> set mapred.reduce.tasks=1;
> set mapred.reduce.child.java.opts=-Xms1560m -Xmx4096m;
> set mapred.task.timeout=7200000;
> set mapred.map.tasks.speculative.execution=false;
> set hive.ignore.mapjoin.hint=false;
> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
> 
> insert overwrite table a(dt='${hiveconf:run_date}', source='ip')
> select
>   /*+ MAPJOIN(trial_event) */
> xxxx
> 
> The above query can be finished daily around 10 minutes, which we are very happy about
it. But sometimes, the query will be hang hours in the ETL, until we manually kill it.
> 
> I add the debug info in the Hive, and found the following message:
> 
> 2016-03-11 09:11:52 Starting to launch local task to process map join;  maximum memory
= 536870912
> SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
> SLF4J: Defaulting to no-operation (NOP) logger implementation
> SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
> 16/03/11 09:11:55 DEBUG ipc.Client: IPC Client (-1284813870) connection to namenode/10.20.95.130:9000
from etl: closed
> 16/03/11 09:11:55 DEBUG ipc.Client: IPC Client (-1284813870) connection to namenode/10.20.95.130:9000
from etl: stopped, remaining connections 0
> 
> Then there is no more log after that for hours.
> 
> If we don't use MAPJOIN, we won't face this issue, but the query will take 2.5 hours.
> 
> When this happens, I can see the NameNode works fine, I can run all kinds of "HDFS" operation
without any issue, while this query is hanging. What does this "IPC Client remaining connections
0" mean? If we cannot upgrade our Hive version as now, any workaround do we have?
> 
> Thanks
> 
> Yong

Mime
View raw message