This paper introduces a parallel and distributed algorithm for solving the following minimization problem with linear constraints: minimize f(1)(x(1))+ . . . + f(N) (x(N)) subject to A(1)x(1) + . . . + A(N)x(N) = c, x(1) is an element of chi(1), . . . , x(N) is an element of chi(N), where , are convex functions, are matrices, and are feasible sets for variable . Our algorithm extends the alternating direction method of multipliers (ADMM) and decomposes the original problem into N smaller subproblems and solves them in parallel at each iteration. This paper shows that the classic ADMM can be extended to the N-block Jacobi fashion and preserve convergence in the following two cases: (i) matrices are mutually near-orthogonal and have full column-rank, or (ii) proximal terms are added to the N subproblems (but without any assumption on matrices ). In the latter case, certain proximal terms can let the subproblem be solved in more flexible and efficient ways. We show that converges at a rate of o(1 / k) where M is a symmetric positive semi-definte matrix. Since the parameters used in the convergence analysis are conservative, we introduce a strategy for automatically tuning the parameters to substantially accelerate our algorithm in practice. We implemented our algorithm (for the case ii above) on Amazon EC2 and tested it on basis pursuit problems with >300 GB of distributed data. This is the first time that successfully solving a compressive sensing problem of such a large scale is reported.