Keyword cannibalization occurs when more than one page is targeted with one keyword. As Google will crawl and if it finds more than one page relevant for that keyword than it will keep that page on top which it thinks relevant.
When more than one pages focus on same keywords to rank, the search engine get confused over the authority of the page. And it will rank the most relevant as per their ranking factors.
That page will stay on top until the other pages beat the first page wit more CTR and page dwell time