Hi Yeleixingfeng,
This has been the case since the middle of the 20th century (probably for a lot longer). The north and south of the Malay Peninsula are Hokkien-speaking, and the middle bit is Cantonese-speaking (I mean among the Chinese, obviously).
In my youth, I had the impression (but what does the average 14-year-old know of geography and linguistics!) that Taiping*** was the farthest south large town (in the north) where Hokkien was the lingua franca (among Chinese), and Malacca was the farthest north large town (in the south) where Hokkien was the lingua franca (among Chinese).
So, specifically, Ipoh, KL, and Seremban were the 3 major towns in the middle where Cantonese was the lingua franca - at least, that's the situation for the West Coast of the Peninsular. The "northern band" and the "southern band" stretch across to the East Coast - Kelantan and (at least) northern Trengganu are Hokkien-speaking, and Johore goes all the way across anyway, but I don't really know what happens in the middle bit of the East Coast, i.e. Pahang.
***: Taiping. When speaking Malaysian English or Penang Hokkien, we always pronounced it "tai1_p
eng2", never "tai1_p
ing2" - and in any case never with the aspirated initials - or tones - of the Mandarin "tai4" and "ping2".
PS. Please forgive me if I've done the Hakkas, Teochews, Hainanese, or any other non-Hokkien, non-Cantonese groups an injustice. I remember now that Sitiawan was(?) a (largely) Hockchew-speaking city. This gets quite a lot of mention in
http://en.wikipedia.org/wiki/Sitiawan.
PPS. The speaking of Hokkien was so widely prevalent in Penang that there were (in my youth, some) Indians who could speak (Penang) Hokkien to the extent that you'd never know that they were not Chinese, if you just heard them speaking. These were obviously Indians who were born and bred in Penang. Again, I have no idea whether that still might be the case.