Hi Hitesh,

- "When you say run a trace of a map-reduce job against SLS+Tez, could you clarify what that means?"

Well, I have some "job profiles", where each job profile tells statistics about a particular map-reduce application, such as: minimum and maximum Map and Reduce execution time, number of Map tasks, number of Reduce tasks. As a part of a bigger project, some artificial traces have been created starting from these job profiles and then provided as an input to SLS (see http://goo.gl/ueuXzr for a sample trace) to analyze the jobs execution time in condition of heavy load. I know these profiles have been made for sure without using Tez (plain MR application), I also know Tez can run "old" MR application (let's say the yarn wordcount example) by setting it as the default framework. Of course if a MR application is rewritten, it can take many advantages from Tez, but even just running it on top of Tez I guess at least the container reuse is taken into account. So I wanted to take those same artificial traces and give them as input to SLS first (plain yarn architecture), and possibly to SLS while simulating Tez to see the different behavior. Actually I could see the different behavior of single jobs even with a single machine, but the idea here was to launch hundreds of concurrent jobs and see how Tez influence the overall execution.

- "I have not yet had a chance to look at SLS or the MR AM simulator in detail. What does writing a Tez-specific simulator entail? "

I honestly have no idea, and considering both the relative complexity of the already implemented class and the lack of documentation for developers, I assume it's not a few minutes job (not for me, for sure). I'm not even sure it's a job it is worth doing, since I wasn't able to find any information about the reliability of SLS as a Yarn simulator. Officially, it is just used to test the scheduler behavior, and as far as I remember it doesn't consider network simulation, nor the shuffle phase.

Best regards

Fabio

On 11/15/2014 04:20 AM, Hitesh Shah wrote:
Hi Fabio

The behavior that Tez induces on a cluster for a MapReduce-like job may be 
vastly different to what MapReduce does today:
    - Tez can do splits calculation on the cluster and makes use of information 
such as available cluster resources to decide how many tasks to run
    - Tez does container reuse across tasks. There are multiple factors that 
can affect reuse. The kind of workload, where tasks run, how long the task ran, 
how much common locality do the different tasks have. At this point, depending 
on the locality-scheduling related flags, Tez waits for a certain delay before 
assigning a task to a rack-local container or an off-rack container. This is 
assuming that the RM has not provided a matching container within the timeframe 
and even then, a newly allocated container may not be used as there is a 
penalty for launching a new JVM.
    - Tez also keeps containers around (configurable) so as to use them later 
for tasks that have not yet been scheduled or future DAGs to be run within the 
same Application Master.
    - Lastly, Tez in case of Hive/Pig, has vastly complex and dynamic DAGs. 
Unlike MapReduce, the resource needs are not known completely upfront. Also, 
resource asks may also change depending on how much data is actually being 
processed.

Had a couple of questions to ask:

   - When you say run a trace of a map-reduce job against SLS+Tez, could you 
clarify what that means?
   - I have not yet had a chance to look at SLS or the MR AM simulator in 
detail. What does writing a Tez-specific simulator entail?
Let us know if you are planning to look at implementing some of the missing simulation pieces for Tez.

thanks
— Hitesh


On Nov 14, 2014, at 5:46 PM, Fabio <[email protected]> wrote:

Thanks for the reply, actually what I was planning to do is to generate 
artificial traces of map-reduce jobs and run them against SLS and SLS+Tez to 
analyze the differences.
I asked here directly since I am pretty sure that in the Hadoop mailing list 
they were going to tell me to ask you about it since that class is 
app-specific, so I thought someone here may have already written an AM 
simulator class for Tez. I doubt the SLS developers will do it any soon (unless 
Tez will become part of the Hadoop code).
Anyway, no problem. Some tests in a small cluster will do the job ;)

Thanks again

Fabio

On 11/14/2014 07:54 PM, Hitesh Shah wrote:
Hello Fabio

We do not have a job trace file generated by Tez and therefore no simulator 
that can re-run the trace. We do store some historical data for the job but the 
level of tooling around it is pretty minimal.

— Hitesh

On Nov 14, 2014, at 3:29 AM, Fabio <[email protected]> wrote:

With SLS (Yarn Scheduler Load Simulator) I can test a MR job trace against different schedulers, 
but to do so I see one has to specify "yarn.sls.am.type.mapreduce" that is "The 
AMSimulator implementation for MapReduce-like applications. Users can specify implementations for 
other type of applications.". As far as I understand this class is a simulator of the AM, so I 
suppose that if I want to execute a job trace as if it is run on top of Tez, I should implement 
this class in order to simulate a Tez AM.
Is this correct? A of today is there already some implementation of this?

Thanks in advance

Fabio


Reply via email to