The 31-year-old Manxman beat Team Sky's Elia Viviani and Astana's Andrea Guardini in a sprint finish.
"I'm happy with that," said the Dimension Data rider, who finished second in last Sunday's road race at the Road World Championships.
"We wanted to win. I felt good. It was a very chaotic sprint in which I lost my lead out in the second last corner."
The races continues on Saturday with a 150km stage that finishes with a 10km ascent to the summit finish at Jebel Hafeet, while Sunday's final stage is a 26-lap race around Yas Marina Circuit.
Stage two standings:
1. Mark Cavendish (GB/Dimension Data) 2 hrs 32 mins 21 secs
2. Elia Viviani (Ita/Team Sky) same time
3. Andrea Guardini (Ita/Astana)
4. Jakub Mareczko (Ita/Wilier Triestina)
5. Jean Pierre Drucker (Lux/BMC)
Overall standings:
1. Mark Cavendish (GB/Dimension Data) 5 hrs 48 mins 06 secs
2. Giacomo Nizzolo (Ita/trek Segafredo) +4 secs
3. Jens Keukeleire (Bel/Orica BikeExchange) +5 secs
4.  Elia Viviani (Ita/Team Sky) +8 secs
5. John Degenkolb (Ger/Team Giant-Alpecin) Same time
Mark Cavendish won the second stage of the Abu Dhabi Tour on Friday to take the overall lead.