ZooKeeper is a centralized coordination service for distributed applications. It allows distributed processes to synchronize with each other using shared znodes. ZooKeeper uses a leader election algorithm and quorum consensus to ensure high availability. It provides recipes for common distributed coordination problems like queues, locks, and leader election. ZooKeeper's internals use the ZAB protocol for consensus between leader and followers through epochs and proposals.