A hazard occurs when a stage in processing an instruction cannot complete for some reason. The instruction is then stalled for one of more clock cycles.
WHY?
The stalled stage required some hardware which is currently in use.
The stalled stage requires some data which is no yet available, or would destroy some data yet to be used.
A branch changed the PC so the next instruction is not yet known.