[
https://issues.apache.org/jira/browse/IGNITE-3167?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15435180#comment-15435180
]
Taras Ledkov commented on IGNITE-3167:
--------------------------------------
The found problems:
- incorrect deserialization of the *HadoopJobInfoUpdateRequest*;
- useless assert at the *HadoopV2Job* that checks the classloader is
*HadoopClassLoader* - it is not true for external execution;
- the test *HadoopExternalTaskExecutionSelfTest.testMapperException* checks the
class of exception that is throw form hadoop job but now only string with the
printed stacktrace is available;
- unstable execution. The future is not completed sometimes.
The remote executor process is failed with:
{code}
[19:04:16,605][ERROR][pool-1-thread-3][HadoopChildProcessRunner] Failed to
initialize process: HadoopPrepareForJobRequest
[jobId=357a0ecc-6d67-4e40-8e13-574dbe43f8e3_1,
jobInfo=o.a.i.i.processors.hadoop.HadoopDefaultJobInfo@71a7f9f0,
totalReducersCnt=1, locR
class org.apache.ignite.IgniteCheckedException: Local job directory already
exists:
/tmp/ignite/work/hadoop/node-808b5711-7877-40e5-8c8b-1419b3f34c2b/job_357a0ecc-6d67-4e40-8e13-574dbe43f8e3_1
at
org.apache.ignite.internal.processors.hadoop.v2.HadoopV2JobResourceManager.prepareJobEnvironment(HadoopV2JobResourceManager.java:120)
at
org.apache.ignite.internal.processors.hadoop.v2.HadoopV2Job.initialize(HadoopV2Job.java:305)
at
org.apache.ignite.internal.processors.hadoop.taskexecutor.external.child.HadoopChildProcessRunner.prepareProcess(HadoopChildProcessRunner.java:139)
at
org.apache.ignite.internal.processors.hadoop.taskexecutor.external.child.HadoopChildProcessRunner.access$1600(HadoopChildProcessRunner.java:62)
at
org.apache.ignite.internal.processors.hadoop.taskexecutor.external.child.HadoopChildProcessRunner$MessageListener.onMessageReceived(HadoopChildProcessRunner.java:420)
at
org.apache.ignite.internal.processors.hadoop.taskexecutor.external.communication.HadoopExternalCommunication.notifyListener(HadoopExternalCommunication.java:1105)
at
org.apache.ignite.internal.processors.hadoop.taskexecutor.external.communication.HadoopExternalCommunication$1.onMessage(HadoopExternalCommunication.java:153)
at
org.apache.ignite.internal.processors.hadoop.taskexecutor.external.communication.HadoopExternalCommunication$1.onMessage(HadoopExternalCommunication.java:120)
at
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:270)
at
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:107)
at
org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:95)
at
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:110)
at
org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
[19:04:16,649][ERROR][pool-1-thread-3][HadoopExternalCommunication] Runtime
error caught during grid runnable execution: GridWorker
[name=message-received-notify, gridName=external, finished=false,
isCancelled=false, hashCode=9105195, interrupted=false, runn
java.lang.NullPointerException
at
org.apache.ignite.internal.processors.hadoop.taskexecutor.external.child.HadoopChildProcessRunner$2.apply(HadoopChildProcessRunner.java:248)
at
org.apache.ignite.internal.processors.hadoop.taskexecutor.external.child.HadoopChildProcessRunner$2.apply(HadoopChildProcessRunner.java:241)
at
org.apache.ignite.internal.util.future.GridFutureAdapter$ArrayListener.apply(GridFutureAdapter.java:441)
at
org.apache.ignite.internal.util.future.GridFutureAdapter$ArrayListener.apply(GridFutureAdapter.java:424)
at
org.apache.ignite.internal.util.future.GridFutureAdapter.notifyListener(GridFutureAdapter.java:263)
at
org.apache.ignite.internal.util.future.GridFutureAdapter.notifyListeners(GridFutureAdapter.java:251)
at
org.apache.ignite.internal.util.future.GridFutureAdapter.onDone(GridFutureAdapter.java:381)
at
org.apache.ignite.internal.util.future.GridFutureAdapter.onDone(GridFutureAdapter.java:347)
at
org.apache.ignite.internal.util.future.GridFutureAdapter.onDone(GridFutureAdapter.java:335)
at
org.apache.ignite.internal.processors.hadoop.taskexecutor.external.child.HadoopChildProcessRunner.prepareProcess(HadoopChildProcessRunner.java:155)
at
org.apache.ignite.internal.processors.hadoop.taskexecutor.external.child.HadoopChildProcessRunner.access$1600(HadoopChildProcessRunner.java:62)
at
org.apache.ignite.internal.processors.hadoop.taskexecutor.external.child.HadoopChildProcessRunner$MessageListener.onMessageReceived(HadoopChildProcessRunner.java:420)
at
org.apache.ignite.internal.processors.hadoop.taskexecutor.external.communication.HadoopExternalCommunication.notifyListener(HadoopExternalCommunication.java:1105)
at
org.apache.ignite.internal.processors.hadoop.taskexecutor.external.communication.HadoopExternalCommunication$1.onMessage(HadoopExternalCommunication.java:153)
at
org.apache.ignite.internal.processors.hadoop.taskexecutor.external.communication.HadoopExternalCommunication$1.onMessage(HadoopExternalCommunication.java:120)
at
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:270)
at
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:107)
at
org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:95)
at
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:110)
at
org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
{code}
> Hadoop: restore external execution.
> -----------------------------------
>
> Key: IGNITE-3167
> URL: https://issues.apache.org/jira/browse/IGNITE-3167
> Project: Ignite
> Issue Type: Task
> Components: hadoop
> Affects Versions: 1.5.0.final
> Reporter: Vladimir Ozerov
> Assignee: Taras Ledkov
> Priority: Critical
> Labels: roadmap
>
> Some time ago we decided to get rid external execution mode. It appears to be
> a wrong decision.
> Hadoop users rely on its process-per-job nature in lot's places. One of such
> case could be observed in HiBench Bayes benchmark:
> 1) Job creates something in the local file system through Hadoop FileSystem
> API.
> 2) Then it tries to get this data using regular java.io.FileReader and
> relative paths.
> This doesn't work in embedded mode because our LocalFileSystem wrapper
> assigns different work dirs for jobs, but process-wide working directory is
> always the same. As a result, aforementioned benchmark doesn't work in
> Ignite, but work with standard Hadoop job tracker.
> It seems that we must return external execution back.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)