一、Hadoop与Zookeeper介绍
(1)Hadoop
Hadoop 是一个分布式系统基础架构,由 Apache 基金会开发,旨在处理大规模数据集。它主要包含以下两个核心组件:
- Hadoop 分布式文件系统(HDFS):一种分布式文件系统,能够将大文件切分成多个块,并存储在集群中的不同节点上。具有高容错性、高吞吐量等特点,适合大规模数据的存储。例如,在一个大型互联网公司中,每天产生的海量用户行为数据可以存储在 HDFS 中。
- MapReduce 编程模型:用于大规模数据集的并行计算。通过将计算任务分解为 Map(映射)和 Reduce(归约)两个阶段,实现数据的分布式处理。比如,统计海量文本中每个单词的出现次数,就可以利用 MapReduce 来高效完成。
(2)Zookeepe
Zookeeper是一个开源的分布式协调服务,主要用于解决分布式系统中的协调问题。它提供配置管理、命名服务、集群管理、同步服务等功能。Zookeeper的核心特性包括:
- 全局数据一致性:每个服务器保存一份相同的数据副本,客户端无论连接到哪个服务器,数据都是一致的。
- 更新请求顺序执行:来自同一个客户端的更新请求按发送顺序依次执行。
- 数据更新原子性:一次数据更新要么成功,要么失败。
- 实时性:在一定时间范围内,客户端能读到最新数据34
(3)Hadoop与Zookeeper的关系和应用场景
在一个典型的大数据处理架构中,Hadoop 和 Zookeeper 常常协同工作。Zookeeper 可以为 Hadoop 集群提供分布式协调服务,例如:
- Hadoop NameNode 的高可用性:通过 Zookeeper 实现 NameNode 的主备切换,保证 Hadoop 集群的高可用性。当主 NameNode 出现故障时,Zookeeper 能够快速选举出新的主节点,确保集群正常运行。
- 资源管理协调:在 Hadoop 的资源管理框架(如 YARN)中,Zookeeper 可以协助进行资源的分配和协调,保证任务的合理调度和执行。
应用场景
- Hadoop 的应用场景:适用于大规模数据的存储和离线处理,如日志分析、数据仓库构建、机器学习模型训练等。例如,电商公司可以利用 Hadoop 分析用户购买行为数据,为用户提供个性化推荐。
- Zookeeper 的应用场景:广泛应用于分布式系统中的协调、配置管理等方面,如分布式锁、服务发现、集群管理等。比如,在一个微服务架构中,Zookeeper 可以用于服务注册与发现,帮助服务之间快速找到对方并进行通信。
在实际应用中,Hadoop和Zookeeper经常被用于同一个系统中,因为它们之间有很强的耦合关系。Zookeeper可以用于管理Hadoop集群的元数据,如NameNode的地址、DataNode的地址等;同时,Hadoop也可以用于处理Zookeeper集群的大数据,如日志、监控数据等。Zookeeper在Hadoop集群中的作用尤为重要,特别是在NameNode的高可用性方面,通过Zookeeper的选举机制,确保一个NameService下面只有一个活跃的NameNode,从而提供高可靠性的服务。
二、HBase概述
Apache HBase是一个分布式、可伸缩、列式存储的高并发实时读写NoSQL数据库,是Hadoop生态的重要组成。一张表支持数十亿行和数百万列。
HBase是依赖Hadoop。因为HBase是在HDFS的基础之上构建的,而HDFS是分布式文件系统,能存储海量数据,所以HBase能存储海量的数据。
HBase在HDFS之上提供了高并发的随机写和支持实时查询,这是HDFS不具备的。
(1)列式存储
下图是一个表,表示两行七列数据,也就是可以理解成,存储到磁盘的时候,每行都是由多列数据组成的。
id | 姓名 | 年龄 | 职业 | 年薪 | 女朋友 | 身高 |
1 | 小明 |