Apache HADOOP是用于开发在分布式计算环境中执行的数据处理应用程序的框架。
类似于存储在个人计算机系统的本地文件系统中的数据,在Hadoop中,数据存储在被称为 Hadoop分布式文件系统的分布式文件系统中。
处理模型基于“数据局部性”概念,其中计算逻辑被发送到包含数据的集群节点(服务器)。
这种计算逻辑只不过是用高级语言(如Java)编写的程序的编译版本。这样的程序,处理存储在Hadoop HDFS中的数据。
HADOOP是一个开源软件框架。使用HADOOP构建的应用程序在分布在普通计算机集群上的大型数据集上运行。
普通电脑价格便宜,广泛应用。这些主要用于以低成本实现更大的计算能力。
你知道吗?计算机集群由一组多个处理单元(存储磁盘+处理器)组成,它们彼此连接并作为单个系统。
Hadoop的组件
下图显示了Hadoop生态系统中的各种组件 -
Apache Hadoop包含两个子项目
- Hadoop MapReduce MapReduce是一个用于编写在Hadoop上运行的应用程序的计算模型和软件框架。这些MapReduce程序能够在大型计算节点集群上并行处理大量数据。
- HDFS(Hadoop分布式文件系统) HDFS负责Hadoop应用程序的存储部分。MapReduce应用程序使用HDFS中的数据。HDFS创建多个数据块副本,并将它们分布在集群中的计算节点上。这种分布使得可靠和极快速的计算成为可能。
尽管Hadoop最为人所知的是MapReduce及其分布式文件系统-HDFS,但该术语也用于一系列属于分布式计算和大规模数据处理的相关项目。在其他的Hadoop相关项目的Apache包括有Hive,HBase,Mahout,Sqoop,Flume和Zookeeper。
'Hadoop'
- 适用于大数据分析
由于大数据在本质上往往是分布式和非结构化的,HADOOP集群最适合分析大数据。由于流向计算节点的是处理逻辑(不是实际数据),所以消耗更少的网络带宽。这个概念被称为数据局部性,有助于提高基于Hadoop的应用程序的效率。
- 可扩展性
HADOOP集群可以通过添加额外的集群节点轻松扩展到任何程度,从而允许大数据的增长。此外,规模不需要修改应用程序逻辑。
- 容错
HADOOP生态系统具有将输入数据复制到其他集群节点的功能。这样,在群集节点故障的情况下,数据处理仍然可以通过使用存储在另一群集节点上的数据来进行。
Hadoop中的网络拓扑
当hadoop集群的大小增长时,网络的拓扑(布置)会影响Hadoop集群的性能。除了性能之外,还需要关注高可用性和故障处理。为了实现这种Hadoop集群的形成,利用网络拓扑。
通常,网络带宽是在构成任何网络时要考虑的重要因素。然而,由于测量带宽可能很困难,在Hadoop中,网络被表示为树,并且该树的节点之间的距离(跳数)被认为是形成Hadoop集群的重要因素。这里,两个节点之间的距离等于它们到它们最接近的共同祖先的距离的总和。
Hadoop集群由数据中心,机架和实际执行作业的节点组成。这里,数据中心由机架和机架组成的节点组成。可用于进程的网络带宽取决于进程的位置。也就是说,下面情况可用带宽依次变得更小:
- 进程在同一个节点上
- 同一机架上的不同节点
- 同一数据中心不同机架上的节点
- 不同数据中心的节点