[
https://issues.apache.org/jira/browse/HIVE-3275?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13417965#comment-13417965
]
Zhenxiao Luo commented on HIVE-3275:
------------------------------------
The reason is:
1. On hadoop0.20 or Hadoop0.23 MR1,
JobClient jc = new JobClient(job);
this line is throwing exception in ExecDriver.java.
It calls into JobClient.java:
public JobClient(JobConf conf) throws IOException {
setConf(conf);
init(conf);
}
/**
* Connect to the default {@link JobTracker}.
* @param conf the job configuration.
* @throws IOException
*/
public void init(JobConf conf) throws IOException {
String tracker = conf.get("mapred.job.tracker", "local");
if ("local".equals(tracker)) {
this.jobSubmitClient = new LocalJobRunner(conf);
} else {
this.jobSubmitClient = createRPCProxy(JobTracker.getAddress(conf), conf);
}
}
When createRPCProxy() is called, jobtracker is trying to getAddress(conf) of
the non-existed host(abracadabra), and throws the expected exception:
java.lang.IllegalArgumentException: Does not contain a valid host:port
authority: abracadabra
Here is the log and stack trace when running in hadoop0.20 to proof the above
observation:
2012-07-18 17:53:38,210 ERROR exec.Task (SessionState.java:printError(400)) -
Job Submission failed with exception 'java.lang.IllegalArgumentException(Does
not contain a valid host:port authority: abracadabra)'
java.lang.IllegalArgumentException: Does not contain a valid host:port
authority: abracadabra
at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:206)
at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:158)
at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:147)
at org.apache.hadoop.mapred.JobTracker.getAddress(JobTracker.java:2119)
at org.apache.hadoop.mapred.JobClient.init(JobClient.java:497)
at org.apache.hadoop.mapred.JobClient.<init>(JobClient.java:469)
at org.apache.hadoop.hive.ql.exec.ExecDriver.execute(ExecDriver.java:418)
at org.apache.hadoop.hive.ql.exec.MapRedTask.execute(MapRedTask.java:136)
at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:134)
at
org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:57)
at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1324)
at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1110)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:944)
at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:258)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:215)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:406)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:341)
at org.apache.hadoop.hive.ql.QTestUtil.executeClient(QTestUtil.java:671)
at
org.apache.hadoop.hive.cli.TestNegativeCliDriver.testNegativeCliDriver_autolocal1(TestNegativeCliDriver.java:117)
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 junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:243)
at junit.framework.TestSuite.run(TestSuite.java:238)
at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:420)
at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:911)
at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:768)
2012-07-18 17:53:38,215 ERROR ql.Driver (SessionState.java:printError(400)) -
FAILED: Execution Error, return code 1 from
org.apache.hadoop.hive.ql.exec.MapRedTask
2. When running in hadoop0.23 MR2. MapReduce2 is using Yarn framework,
JobClient jc = new JobClient(job)
this line in ExecDriver.java is calling into MR2's implementation of JobClient:
public JobClient(Configuration conf) throws IOException {
init(new JobConf(conf));
}
/**
* Connect to the default cluster
* @param conf the job configuration.
* @throws IOException
*/
public void init(JobConf conf) throws IOException {
setConf(conf);
cluster = new Cluster(conf);
clientUgi = UserGroupInformation.getCurrentUser();
}
In MR2's implementation of init(JobConf), it does not try to getAddress(conf)
of the non-existed host(abracadabra). It only tries to initialize the cluster.
This is working OK with a proof of the following log:
2012-07-18 17:34:26,539 INFO exec.ExecDriver
(ExecDriver.java:addInputPaths(860)) - Adding input file
pfile:/home/cloudera/Code/hive/build/ql/test/data/warehouse/src
2012-07-18 17:34:26,539 INFO exec.Utilities (Utilities.java:isEmptyPath(1804))
- Content Summary
pfile:/home/cloudera/Code/hive/build/ql/test/data/warehouse/srclength: 5868 num
files: 2 num directories: 1
2012-07-18 17:34:26,877 DEBUG mapreduce.Cluster (Cluster.java:initialize(91)) -
Trying ClientProtocolProvider :
org.apache.hadoop.mapred.LocalClientProtocolProvider
2012-07-18 17:34:26,877 DEBUG mapreduce.Cluster (Cluster.java:initialize(109))
- Cannot pick org.apache.hadoop.mapred.LocalClientProtocolProvider as the
ClientProtocolProvider - returned null protocol
2012-07-18 17:34:26,879 DEBUG mapreduce.Cluster (Cluster.java:initialize(91)) -
Trying ClientProtocolProvider :
org.apache.hadoop.mapred.YarnClientProtocolProvider
2012-07-18 17:34:26,972 DEBUG ipc.YarnRPC (YarnRPC.java:create(57)) - Creating
YarnRPC for org.apache.hadoop.yarn.ipc.HadoopYarnProtoRPC
2012-07-18 17:34:27,000 DEBUG mapred.ResourceMgrDelegate
(ResourceMgrDelegate.java:<init>(89)) - Connecting to ResourceManager at
/0.0.0.0:8032
2012-07-18 17:34:27,002 DEBUG ipc.HadoopYarnProtoRPC
(HadoopYarnProtoRPC.java:getProxy(45)) - Creating a HadoopYarnProtoRpc proxy
for protocol interface org.apache.hadoop.yarn.api.ClientRMProtocol
2012-07-18 17:34:27,038 DEBUG ipc.Server
(Server.java:registerProtocolEngine(197)) - rpcKind=RPC_PROTOCOL_BUFFER,
rpcRequestWrapperClass=class
org.apache.hadoop.ipc.ProtobufRpcEngine$RpcRequestWritable,
rpcInvoker=org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker@1b34cd7b
2012-07-18 17:34:27,166 DEBUG mapred.ResourceMgrDelegate
(ResourceMgrDelegate.java:<init>(93)) - Connected to ResourceManager at
/0.0.0.0:8032
2012-07-18 17:34:27,172 DEBUG security.UserGroupInformation
(UserGroupInformation.java:logPrivilegedAction(1254)) - PrivilegedAction
as:cloudera (auth:SIMPLE)
from:org.apache.hadoop.fs.FileContext.getAbstractFileSystem(FileContext.java:319)
2012-07-18 17:34:27,186 DEBUG mapreduce.Cluster (Cluster.java:initialize(104))
- Picked org.apache.hadoop.mapred.YarnClientProtocolProvider as the
ClientProtocolProvider
An exception occurs in ExecDriver.java, when it is submitting the job to yarn:
rj = jc.submitJob(job);
Due to the non-existed host(abracadabra), JobClient.submitJob() fails with
exception, with a proof of the following log:
2012-07-18 17:34:27,235 DEBUG mapred.ResourceMgrDelegate
(ResourceMgrDelegate.java:getStagingAreaDir(276)) - getStagingAreaDir:
dir=/tmp/hadoop-yarn/staging/cloudera/.staging
2012-07-18 17:34:27,280 DEBUG ipc.Client (Client.java:<init>(262)) - The ping
interval is 60000 ms.
2012-07-18 17:34:27,287 DEBUG ipc.Client (Client.java:<init>(305)) - Use SIMPLE
authentication for protocol ClientRMProtocolPB
2012-07-18 17:34:27,287 DEBUG ipc.Client (Client.java:setupIOstreams(560)) -
Connecting to /0.0.0.0:8032
2012-07-18 17:34:28,295 INFO ipc.Client
(Client.java:handleConnectionFailure(683)) - Retrying connect to server:
0.0.0.0/0.0.0.0:8032. Already tried 0 time(s).
2012-07-18 17:34:29,297 INFO ipc.Client
(Client.java:handleConnectionFailure(683)) - Retrying connect to server:
0.0.0.0/0.0.0.0:8032. Already tried 1 time(s).
2012-07-18 17:34:30,299 INFO ipc.Client
(Client.java:handleConnectionFailure(683)) - Retrying connect to server:
0.0.0.0/0.0.0.0:8032. Already tried 2 time(s).
2012-07-18 17:34:31,301 INFO ipc.Client
(Client.java:handleConnectionFailure(683)) - Retrying connect to server:
0.0.0.0/0.0.0.0:8032. Already tried 3 time(s).
2012-07-18 17:34:32,303 INFO ipc.Client
(Client.java:handleConnectionFailure(683)) - Retrying connect to server:
0.0.0.0/0.0.0.0:8032. Already tried 4 time(s).
2012-07-18 17:34:33,305 INFO ipc.Client
(Client.java:handleConnectionFailure(683)) - Retrying connect to server:
0.0.0.0/0.0.0.0:8032. Already tried 5 time(s).
2012-07-18 17:34:34,306 INFO ipc.Client
(Client.java:handleConnectionFailure(683)) - Retrying connect to server:
0.0.0.0/0.0.0.0:8032. Already tried 6 time(s).
2012-07-18 17:34:35,308 INFO ipc.Client
(Client.java:handleConnectionFailure(683)) - Retrying connect to server:
0.0.0.0/0.0.0.0:8032. Already tried 7 time(s).
2012-07-18 17:34:36,311 INFO ipc.Client
(Client.java:handleConnectionFailure(683)) - Retrying connect to server:
0.0.0.0/0.0.0.0:8032. Already tried 8 time(s).
2012-07-18 17:34:37,312 INFO ipc.Client
(Client.java:handleConnectionFailure(683)) - Retrying connect to server:
0.0.0.0/0.0.0.0:8032. Already tried 9 time(s).
2012-07-18 17:34:37,314 DEBUG ipc.Client (Client.java:close(917)) - closing ipc
connection to 0.0.0.0/0.0.0.0:8032: Connection refused
java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:592)
at
org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:524)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:489)
at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:472)
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:566)
at org.apache.hadoop.ipc.Client$Connection.access$2000(Client.java:215)
at org.apache.hadoop.ipc.Client.getConnection(Client.java:1271)
at org.apache.hadoop.ipc.Client.call(Client.java:1141)
at
org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:184)
at $Proxy9.getNewApplication(Unknown Source)
at
org.apache.hadoop.yarn.api.impl.pb.client.ClientRMProtocolPBClientImpl.getNewApplication(ClientRMProtocolPBClientImpl.java:132)
at
org.apache.hadoop.mapred.ResourceMgrDelegate.getNewJobID(ResourceMgrDelegate.java:181)
at org.apache.hadoop.mapred.YARNRunner.getNewJobID(YARNRunner.java:214)
at
org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:338)
at org.apache.hadoop.mapreduce.Job$11.run(Job.java:1226)
at org.apache.hadoop.mapreduce.Job$11.run(Job.java:1223)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:416)
at
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1232)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:1223)
at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:617)
at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:612)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:416)
at
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1232)
at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:612)
at org.apache.hadoop.hive.ql.exec.ExecDriver.execute(ExecDriver.java:435)
at org.apache.hadoop.hive.ql.exec.MapRedTask.execute(MapRedTask.java:136)
at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:134)
at
org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:57)
at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1324)
at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1110)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:944)
at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:258)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:215)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:406)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:341)
at org.apache.hadoop.hive.ql.QTestUtil.executeClient(QTestUtil.java:671)
at
org.apache.hadoop.hive.cli.TestNegativeCliDriver.testNegativeCliDriver_autolocal1(TestNegativeCliDriver.java:117)
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 junit.framework.TestCase.runTest(TestCase.java:168)
> Fix autolocal1.q testcase failure when building hive on hadoop0.23 MR2
> ----------------------------------------------------------------------
>
> Key: HIVE-3275
> URL: https://issues.apache.org/jira/browse/HIVE-3275
> Project: Hive
> Issue Type: Bug
> Reporter: Zhenxiao Luo
> Assignee: Zhenxiao Luo
>
> autolocal1.q is failing only on hadoop0.23 MR2, due to cluster initialization
> problem:
> Begin query: autolocal1.q
> diff -a
> /var/lib/jenkins/workspace/zhenxiao-CDH4-Hive-0.9.0/build/ql/test/logs/clientnegative/autolocal1.q.out
>
> /var/lib/jenkins/workspace/zhenxiao-CDH4-Hive-0.9.0/ql/src/test/results/clientnegative/autolocal1.q.out
> 5c5
> < Job Submission failed with exception 'java.io.IOException(Cannot initialize
> Cluster. Please check your configuration for mapreduce.framework.name and the
> correspond server addresses.)'
> —
> > Job Submission failed with exception
> > 'java.lang.IllegalArgumentException(Does not contain a valid host:port
> > authority: abracadabra)'
> Exception: Client execution results failed with error code = 1
> See build/ql/tmp/hive.log, or try "ant test ... -Dtest.silent=false" to get
> more logs.
> Failed query: autolocal1.q
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira