Hadoop是Apache开源的一个可靠的、可扩展的,分布式计算的开源软件。Hadoop能够搭建大型数据仓库,PB级数据的存储、处理、分析、统计等业务。如:搜索引擎,日志分析,商业智能、数据挖掘等。Hadoop包括以下几个模块:
- Hadoop Common:The common utilities that support the other Hadoop modules.(支持其他Hadoop模块的公共实用程序。)
- Hadoop Distributed File System(HDFS):A distributed file system that provides high-throughput access to application data.(一个分布式文件系统,它提供对应用程序数据的高吞吐量访问。)
- Hadoop YARN:A framework for job scheduling and cluster resource management.(作业调度和集群资源管理的框架。)
- Hadoop MapReduce:A YARN-based system for parallel processing of large data sets.(大型数据集并行处理的基于yarn的系统。)
Hadoop核心组件之分布式文件系统HDFS
- 来源于Google的GFS论文,论文发表于2003年10月
- HDFS是GFS的克隆版
- HDFS特点:扩展性&容错性&海量数据存储
- 将文件切分成指定大小的数据块并以多副本的形式存储在多台机器上
- 数据切分、多副本、容错等操作对用户是透明的
HDFS有一个主/从架构。HDFS集群由一个单独的NameNode组成,它是一个管理文件系统名称空间的主服务器,并管理客户端对文件的访问。此外,还有一些DataNodes,通常是集群中的每个节点,它们管理与它们运行的节点相关联的存储。HDFS公开文件系统名称空间,并允许用户数据存储在文件中。在内部,一个文件被分割成一个或多个块,这些块被存储在一组DataNodes中。NameNode执行文件系统命名空间操作,比如打开、关闭和重命名文件和目录。它还决定了块的映射到DataNodes。DataNodes负责从文件系统的客户端提供读和写请求。DataNodes还在NameNode的指令上执行块创建、删除和复制。
集群中单个NameNode的存在极大地简化了系统的体系结构。NameNode是所有HDFS元数据的仲裁者和存
储库。
系统的设计方式是,用户数据永远不会通过NameNode。
Data Replication
HDFS被设计用来在大型集群中的机器上可靠地存储非常大的文件。它将每个文件存储为一个块序列。一个文件的
块被复制用于容错。每个文件的块大小和复制因子是可配置的。除了最后一个块之外,文件中的所有块都是相同的大
小,而用户可以在添加到附加和hsync之后,在不填充最后一个块的情况下,开始一个新的块,而不需要将最后一个
块填充到配置的块大小。
应用程序可以指定文件的副本数量。复制因子可以在文件创建时指定,并且可以在以后更改。HDFS中的文件是写一
次的(除了应用程序和截尾),并且在任何时候都有一个严格的写入器。
NameNode做出关于复制块的所有决策。它定期接收集群中的每个DataNodes的心跳和阻塞报告。收到心跳意味着
DataNode功能正常。一个Blockreport包含一个DataNode的所有块的列表。
Hadoop核心组件之资源调度系统(YARN)
- YARN:yet Another Resource Negotiator
- 负责整个集群资源的管理和调度
- YARN特点:扩展性&容错性&多框架资源统一调度
Hadoop核心组件之分布式计算框架MapReduce
- 源自于Google的MapReduce论文,论文发表于2004年12月
- MapReduce是Google MapReduce的克隆版
- MapReduce特点:扩展性&容错性&海量数据离线处理
mapReduce word count处理案例
Hadoop优势
- 高可靠性:(1)数据存储:数据块多副本;(2)数据计算:重新调度作业计算
- 高扩展性:(1)存储/计算资源不够时,可以横向的线性扩展机器;(2)一个集群可以包含数以千计的节点
- 其他:(1)存储在廉价机器上,降低成本;(2)成熟的生态圈