Posey, Cabrera lead Giants past Mariners 4-2