[ 
https://issues.apache.org/jira/browse/HIVE-3413?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13443753#comment-13443753
 ] 

Zhenxiao Luo commented on HIVE-3413:
------------------------------------

There are two problems with this bug:

#1. Missing Dependency:
The compile and test classpath in pdk/scripts/build-plugin.xml is based on 
build/ivy/lib/default, the following dependencies are missing when building 
hive-exec*.jar:

hadoop-mapreduce-client-jobclient
hadoop-minicluster

This dependency should be added to ql/ivy.xml, which is the place for hive-exec 
dependencies.

Note that hadoop-mapreduce-client-jobclient dependency should be updated by 
just changing the jar placement. putting the jar in build/ivy/lib/test/ would 
not be included in pdk PluginTest classpath.

#2. After fixing #1, the following log4j warning message appears in the output 
stream, which fails the testcase(pdk PluginTest diffs expected output with the 
output stream):

test:
    [junit] Running org.apache.hive.pdk.PluginTest
    [junit] 2012-08-28 19:05:20,679 WARN  [main] conf.Configuration 
(Configuration.java:loadProperty(1621)) - 
file:/tmp/cloudera/hive_2012-08-28_19-05-17_531_4347419252405007581/-local-10002/jobconf.xml:an
 attempt to override final parameter: 
mapreduce.job.end-notification.max.retry.interval;  Ignoring.
    [junit] 2012-08-28 19:05:20,680 WARN  [main] conf.Configuration 
(Configuration.java:loadProperty(1621)) - 
file:/tmp/cloudera/hive_2012-08-28_19-05-17_531_4347419252405007581/-local-10002/jobconf.xml:an
 attempt to override final parameter: 
mapreduce.job.end-notification.max.attempts;  Ignoring.
    [junit] 2]3>)
    [junit] Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 42.318 sec


And the details in: ./build/builtins/TEST-org.apache.hive.pdk.PluginTest.txt

Testsuite: org.apache.hive.pdk.PluginTest
Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 42.318 sec
------------- Standard Error -----------------
GLOBAL SETUP:  Copying file: 
file:/home/cloudera/Code/hive2/builtins/test/onerow.txt
Deleted /home/cloudera/Code/hive2/build/builtins/warehouse/onerow
Copying file: file:/home/cloudera/Code/hive2/builtins/test/iris.txt
Deleted /home/cloudera/Code/hive2/build/builtins/warehouse/iris
org.apache.hive.builtins.UDAFUnionMap TEARDOWN:
Hive history file=/tmp/cloudera/hive_job_log_cloudera_201208281905_427044653.txt
GLOBAL TEARDOWN:
Hive history file=/tmp/cloudera/hive_job_log_cloudera_201208281905_95794698.txt
OK
Time taken: 6.585 seconds
OK
Time taken: 0.415 seconds
------------- ---------------- ---------------

Testcase: SELECT size(UNION_MAP(MAP(sepal_width, sepal_length))) FROM iris took 
9.435 sec
    FAILED
expected:<2[]3> but was:<2[012-08-28 19:05:20,464 WARN  [main] conf.HiveConf 
(HiveConf.java:<clinit>(75)) - hive-site.xml not found on CLASSPATH
2012-08-28 19:05:20,679 WARN  [main] conf.Configuration 
(Configuration.java:loadProperty(1621)) - 
file:/tmp/cloudera/hive_2012-08-28_19-05-17_531_4347419252405007581/-local-10002/jobconf.xml:an
 attempt to override final parameter: 
mapreduce.job.end-notification.max.retry.interval;  Ignoring.
2012-08-28 19:05:20,680 WARN  [main] conf.Configuration 
(Configuration.java:loadProperty(1621)) - 
file:/tmp/cloudera/hive_2012-08-28_19-05-17_531_4347419252405007581/-local-10002/jobconf.xml:an
 attempt to override final parameter: 
mapreduce.job.end-notification.max.attempts;  Ignoring.
2]3>
junit.framework.ComparisonFailure: expected:<2[]3> but was:<2[012-08-28 
19:05:20,464 WARN  [main] conf.HiveConf (HiveConf.java:<clinit>(75)) - 
hive-site.xml not found on CLASSPATH
2012-08-28 19:05:20,679 WARN  [main] conf.Configuration 
(Configuration.java:loadProperty(1621)) - 
file:/tmp/cloudera/hive_2012-08-28_19-05-17_531_4347419252405007581/-local-10002/jobconf.xml:an
 attempt to override final parameter: 
mapreduce.job.end-notification.max.retry.interval;  Ignoring.
2012-08-28 19:05:20,680 WARN  [main] conf.Configuration 
(Configuration.java:loadProperty(1621)) - 
file:/tmp/cloudera/hive_2012-08-28_19-05-17_531_4347419252405007581/-local-10002/jobconf.xml:an
 attempt to override final parameter: 
mapreduce.job.end-notification.max.attempts;  Ignoring.
2]3>
    at org.apache.hive.pdk.PluginTest.runTest(PluginTest.java:59)
    at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
    at junit.extensions.TestSetup$1.protect(TestSetup.java:23)
    at junit.extensions.TestSetup.run(TestSetup.java:27)
    at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
    at junit.extensions.TestSetup$1.protect(TestSetup.java:23)
    at junit.extensions.TestSetup.run(TestSetup.java:27)

This warning is printed to console, since it happens before hive configure its 
log4j(which happens in HiveConf.java static initialization), and hadoop's 
default log4j configuration is INFA,console. This does not happen on previous 
branches, since on hadoop0.23, there are code execution path change, and these 
warnings just appeared when running hive on hadoop0.23.

My proposed solution is to configure hadoop log4j, so that its warning message 
are printed to the log file, instead of printing on the console, 
log4j.properties file is added, which configure hadoop log4j to be DEBUG,DRFA.

A new log4j.properties file is added, not using hive-log4j.properties, because:

##1 this is for hadoop log4j configuration, not for hive log4j 
configuration(which configuration file named hive-log4j.properties), it might 
be possible for us to have different configuration for each

##2 hadoop defaults to find the configuration named log4j.properties(there is 
no such named file existed in hive configuration data)

I still take log file named hive.log, not hadoop.log, since these warning info 
are actually from running hive.

To make the pdk test running OK, without a full hive installation, I put the 
new log4j.properties file in pdk test directory.

                
> Fix pdk.PluginTest on hadoop23
> ------------------------------
>
>                 Key: HIVE-3413
>                 URL: https://issues.apache.org/jira/browse/HIVE-3413
>             Project: Hive
>          Issue Type: Bug
>    Affects Versions: 0.9.0
>            Reporter: Zhenxiao Luo
>            Assignee: Zhenxiao Luo
>
> When running Hive test on Hadoop0.23, pdk.PluginTest is failing:
> test:
>     [junit] Running org.apache.hive.pdk.PluginTest
>     [junit] Hive history 
> file=/tmp/cloudera/hive_job_log_cloudera_201208281845_172375530.txt
>     [junit] Total MapReduce jobs = 1
>     [junit] Launching Job 1 out of 1
>     [junit] Number of reduce tasks determined at compile time: 1
>     [junit] In order to change the average load for a reducer (in bytes):
>     [junit]   set hive.exec.reducers.bytes.per.reducer=<number>
>     [junit] In order to limit the maximum number of reducers:
>     [junit]   set hive.exec.reducers.max=<number>
>     [junit] In order to set a constant number of reducers:
>     [junit]   set mapred.reduce.tasks=<number>
>     [junit] WARNING: org.apache.hadoop.metrics.jvm.EventCounter is 
> deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the 
> log4j.properties files.
>     [junit] Execution log at: 
> /tmp/cloudera/cloudera_20120828184545_6deeb166-7dd4-40d3-9ff7-c5d5277aee39.log
>     [junit] java.io.IOException: Cannot initialize Cluster. Please check your 
> configuration for mapreduce.framework.name and the correspond server 
> addresses.
>     [junit]     at 
> org.apache.hadoop.mapreduce.Cluster.initialize(Cluster.java:123)
>     [junit]     at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:85)
>     [junit]     at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:78)
>     [junit]     at org.apache.hadoop.mapred.JobClient.init(JobClient.java:487)
>     [junit]     at 
> org.apache.hadoop.mapred.JobClient.<init>(JobClient.java:466)
>     [junit]     at 
> org.apache.hadoop.hive.ql.exec.ExecDriver.execute(ExecDriver.java:424)
>     [junit]     at 
> org.apache.hadoop.hive.ql.exec.ExecDriver.main(ExecDriver.java:688)
>     [junit]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     [junit]     at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>     [junit]     at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     [junit]     at java.lang.reflect.Method.invoke(Method.java:616)
>     [junit]     at org.apache.hadoop.util.RunJar.main(RunJar.java:200)
>     [junit] Job Submission failed with exception 'java.io.IOException(Cannot 
> initialize Cluster. Please check your configuration for 
> mapreduce.framework.name and the correspond server addresses.)'
>     [junit] Execution failed with exit status: 1
>     [junit] Obtaining error information
>     [junit]
>     [junit] Task failed!
>     [junit] Task ID:
>     [junit]   Stage-1
>     [junit]
>     [junit] Logs:
>     [junit]
>     [junit] /tmp/cloudera/hive.log
>     [junit] FAILED: Execution Error, return code 1 from 
> org.apache.hadoop.hive.ql.exec.MapRedTask]>)
>     [junit] Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 33.9 sec
> With details in ./build/builtins/TEST-org.apache.hive.pdk.PluginTest.txt:
> Testsuite: org.apache.hive.pdk.PluginTest
> Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 33.9 sec
> ------------- Standard Error -----------------
> GLOBAL SETUP:  Copying file: 
> file:/home/cloudera/Code/hive2/builtins/test/onerow.txt
> Deleted /home/cloudera/Code/hive2/build/builtins/warehouse/onerow
> Copying file: file:/home/cloudera/Code/hive2/builtins/test/iris.txt
> Deleted /home/cloudera/Code/hive2/build/builtins/warehouse/iris
> org.apache.hive.builtins.UDAFUnionMap TEARDOWN:
> Hive history 
> file=/tmp/cloudera/hive_job_log_cloudera_201208281845_840355011.txt
> GLOBAL TEARDOWN:
> Hive history 
> file=/tmp/cloudera/hive_job_log_cloudera_201208281845_252250000.txt
> OK
> Time taken: 6.874 seconds
> OK
> Time taken: 0.512 seconds
> ------------- ---------------- ---------------
> Testcase: SELECT size(UNION_MAP(MAP(sepal_width, sepal_length))) FROM iris 
> took 4.428 sec
>     FAILED
> expected:<[23]> but was:<[
> Hive history 
> file=/tmp/cloudera/hive_job_log_cloudera_201208281845_172375530.txt
> Total MapReduce jobs = 1
> Launching Job 1 out of 1
> Number of reduce tasks determined at compile time: 1
> In order to change the average load for a reducer (in bytes):
>   set hive.exec.reducers.bytes.per.reducer=<number>
> In order to limit the maximum number of reducers:
>   set hive.exec.reducers.max=<number>
> In order to set a constant number of reducers:
>   set mapred.reduce.tasks=<number>
> WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use 
> org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.
> Execution log at: 
> /tmp/cloudera/cloudera_20120828184545_6deeb166-7dd4-40d3-9ff7-c5d5277aee39.log
> java.io.IOException: Cannot initialize Cluster. Please check your 
> configuration for mapreduce.framework.name and the correspond server 
> addresses.
>     at org.apache.hadoop.mapreduce.Cluster.initialize(Cluster.java:123)
>     at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:85)
>     at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:78)
>     at org.apache.hadoop.mapred.JobClient.init(JobClient.java:487)
>     at org.apache.hadoop.mapred.JobClient.<init>(JobClient.java:466)
>     at org.apache.hadoop.hive.ql.exec.ExecDriver.execute(ExecDriver.java:424)
>     at org.apache.hadoop.hive.ql.exec.ExecDriver.main(ExecDriver.java:688)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>     at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:616)
>     at org.apache.hadoop.util.RunJar.main(RunJar.java:200)
> Job Submission failed with exception 'java.io.IOException(Cannot initialize 
> Cluster. Please check your configuration for mapreduce.framework.name and the 
> correspond server addresses.)'
> Execution failed with exit status: 1
> Obtaining error information
> Task failed!
> Task ID:
>   Stage-1
> Logs:
> /tmp/cloudera/hive.log

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to