big data
参考厦门大学-林子雨-大数据技术原理与应用(第2版)
Hadoop 1.0
Apache 旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础框架。
基于 Java 语言开发,很好的跨平台特性,可部署在廉价的计算机集群中。
Hadoop 的核心是分布式文件系统 HDFS
(Hadoop Distributed File System) 和 MapReduce
Hadoop 被公认为是行业大数据标准开元软件,提供了分布式环境下的海量数据的处理能力。
Hadoop 2.0: HDFS + MapReduce + YARN
Hadoop 2.0
Hadoop 从 1.0 到 2.0 的改进
HDFS 2.0的新特性
HDFS 2.0的新特性主要有两个,HDFS HA 和 HDFS Federation。
HDFS HA
HDFS 1.0 回顾:
一个 NameNode,一个 SecondaryNameNode,多个 DataNode
NameNode 保存元数据。其中磁盘上保存 FsImage 和 EditLog;内存中保存映射关系,即每个文件包含哪些块,每个块存储在哪个 DataNode。
SecondaryNameNode 的作用是防止 EditLog 过大,导致 NameNode 重启时耗时太长。
HDFS 1.0 存在单点故障问题。
HDFS HA(High Available) 解决了单点故障问题。
HA 集群设置两个 NameNode,一个 Active 活跃,一个 Standby 待命。一旦 Active 故障无法提供服务,立即切换到 Standby(ZooKeeper 保证这一点,通过心跳监控节点的健康状态)。两个 NameNode 的状态保持同步(通过一个共享存储系统(NFS、QJM或Zookeeper)来实现)。两个 NameNode 都维护映射信息,DataNode 同时向两个 NameNode 汇报信息。
HDFS Federation
HDFS 1.0 回顾:
除了单点故障问题,HDFS 1.0 还存在以下问题:
不可以水平扩展
系统整体性能受限于单个 NameNode 的吞吐量
单个 NameNode 难以提供不同程序之间的隔离性
HDFS HA 是热备份,只解决了高可用性。
HDFS Federation 中,设置了多个相互独立的 NameNode,使得 HDFS 的命名服务能够水平扩展。这些 NameNode 分别管理各自的命名空间和块,相互之间是 Federation 联盟关系,不需要彼此协调。
HDFS Federation 中,所有 NameNode 共享底层的 DataNode 存储数据。同一个 NameNode 的那个命名空间的所有块,形成一个块池。
HDFS Federation 的优势(解决的问题):
集群扩展性。多个名称节点管理各自的目录,使得一个集群可以扩展到更多节点,不再向 1.0 那样受限于单个 NameNode 的内存。
性能更高效。多个名称节点管理不同的数据,且同时对外提供服务,将为用户提供更高的读写吞吐率
良好的隔离性。用户可根据需要将不同业务数据交由不同名称节点管理,这样不同业务之间影响很小
HDFS Federation 未解决 NameNode 的单点故障问题,需要为每一个 NameNode 部署一个后备(Standby)节点来确保 NameNode 挂掉后不影响业务。
YARN 新一代资源调度管理框架(未完成)
Hadoop 生态系统中具有代表性的功能组件
Pig:通过提供的 Pig Latin 语言编写简单的脚本来实现复杂的数据分析,而不用写复杂的 MapReduc