This document describes algorithms for computing the QR factorization of tall-and-skinny matrices in MapReduce architectures. It introduces direct and indirect Tall-Skinny QR (TSQR) algorithms, as well as techniques like iterative refinement and pseudo-iterative refinement to improve stability. A performance model is developed showing the algorithms are I/O bound and take a number of passes over the data. Experimental results demonstrate the direct TSQR algorithm has better stability and performance than other approaches.