Least-squares (LS) estimator is the most commonly used uplink channel estimator for massive multiple-input multiple-output (MIMO) systems, but its performance depends critically on the choice of the training pilots and is also sensitive to outlier measurements. In this paper, we exploit the channel sparsity to significantly improve the uplink channel estimation performance for any pilot pattern in the presence of impulsive noise. The key to the success of the proposed method is the independent variational Bayesian inference (VBI) factorization imposed in the sparse Bayesian learning (SBL) framework, which can efficiently separate the sparse signal-of-interest and the sparse representation of the impulsive noise, as well as decoupling sparse signals from the pilots automatically. Moreover, we demonstrate that the proposed method can be extended to a general array geometry by introducing a coarse non-uniform sampling 2D-grid into the SBL framework. Simulation results verify the superiority of the developed method.