Minimally an Hadoop application would have following components.
Input location of data
Output location of processed data.
A map task.
A reduced task.
Job configuration
The Hadoop job client then submits the job (jar/executable etc.) and configuration to the JobTracker which then assumes the responsibility of distributing the software/configuration to the slaves, scheduling tasks and monitoring them, providing status and diagnostic information to the job-client.