What are the main differences between Hadoop and Apache Spark in big data processing? How do Hadoop and Spark differ in terms of speed, architecture, and data processing methods? What are the strengths and weaknesses of Hadoop MapReduce compared to Spark? In what types of applications is Spark preferred over Hadoop, and vice versa? How do organizations choose between Hadoop and Spark for data engineering projects?