转载务必注明出处Taobao QA Team,原文地址:http://qa.taobao.com/?p=10514
引言
最近了解到淘宝使用hadoop的项目多了起来,hadoop对于许多测试人员来说或许是个新鲜玩儿,因此,把自己之前整理的学习笔记整理发上来,希望通过此系列文章快速了解Hadoop的基本概念和架构原理,从而助于hadoop相关项目的测试理解和沟通。
Hadoop简介
Hadoop 是一个实现了 MapReduce 计算模型的开源分布式并行编程框架,借助于 Hadoop, 程序员可以轻松地编写分布式并行程序,将其运行于计算机集群上,完成海量数据的计算。
如果你对Hadoop不熟悉,下面这些名词你或许耳熟能详,Google File System、Google Map/Reduce模型、lucene 、Nutch、阿里云梯、云计算等,他们都与Hadoop有着或深或浅的关系,原来Hadoop离我们如此之近,那么花些时间继续了解它吧。
Hadoop的架构
先抛开Hadoop,简单地想想看,假设我们需要读一个10TB的数据集,怎么办?在传统的系统上,这需要很长时间,因为硬盘的传输速度是受限的。一个简单的办法是将数据存储在多个磁盘上,同时从多个磁盘并行读取数据,这将大大减少读取时间。
上面的方案需要解决两个主要问题,一个是硬件故障,要保证其中一个硬件坏了但数据仍然完整,Hadoop的文件系统HDFS(Hadoop Distributed Filesystem)提供了一种解决方式。另外一个问题是如何并行读取数据并合并保证正确性,通过MapReduce的编程模型可以简化这个问题。简而言之,Hadoop提供了一个稳定的共享存储和分析系统,存储由HDFS实现,分析由MapReduce实现,这两者构成了Hadoop的核心功能。
HDFS
HDFS集群有两种节点,以管理者-工作者模式运行,即1个名称节点(NameNode)和N个数据节点(DataNode)。其底层实现是将文件切割成块,然后将这些块存储在不同的DataNode上。为了容错容灾,每个块还被复制多份存储在不同的DataNode上。NameNode管理文件系统的命名空间,记录每个文件被切割成了多少块,这些块可以从哪些DataNode上获得,以及各个DataNode的状态信息等。下图是Hadoop集群的简化视图
HDFS内部通信都是基于标准的TCP/IP协议,NameNode 依赖来自每个 DataNode 的定期心跳(heartbeat)消息。每条消息都包含一个块报告,NameNode 可以根据这个报告验证块映射和其他文件系统元数据。如果 DataNode 不能发送心跳消息,NameNode 将采取修复措施,重新复制在该节点上丢失的块。更多HDFS的架构和设计请阅读http://hadoop.apache.org/common/docs/current/cn/hdfs_design.html
MapReduce
上图说明了用 MapReduce 来处理大数据集的过程, 这个 MapReduce 的计算过程简而言之,就是将大数据集分解为成若干个小数据集,每个(或若干个)数据集分别由集群中的一个结点(一般就是一台普通的计算机)进行处理并生成中间结果,然后这些中间结果又由大量的结点进行合并, 形成最终结果。
计算模型的核心是 Map 和 Reduce 两个函数,这两个函数由用户负责实现,功能是按一定的映射规则将输入的 对转换成另一个或一批 对输出。下图是一个简单的MapReduce示例,实现字数统计功能。
分布式并行运算
Hadoop 的分布式并行运算有一个作为主控的JobTracker,用于调度和管理其它的 TaskTracker, JobTracker 可以运行于集群中任一台计算机上。TaskTracker负责执行任务,必须运行于 DataNode 上,即 DataNode 既是数据存储结点,也是计算结点,这样可以减少数据在网络上的传输,降低对网络带宽的需求。 JobTracker 将 Map 任务和 Reduce 任务分发给空闲的 TaskTracker, 让这些任务并行运行,并负责监控任务的运行情况。如果某一个 TaskTracker 出故障了,JobTracker 会将其负责的任务转交给另一个空闲的 TaskTracker 重新运行。
Hadoop的其他子项目
上面介绍的MapReduce、HDFS、分布式并行运算是Hadoop最核心的功能。还有一些子项目提供补充性服务。如hive(提供基于sql的查询语言查询存储在HDFS中的数据)、Hbase(一种分布式、列存储数据库,适用于需要实时读写、随机访问超大数据集的场景)、Zookeeper(一个分布式、高可用性的协调服务,提供分布式锁之类的基本服务)、pig(一种数据流语言和运行环境,用以检索非常大的数据集,使程序员能专注于数据而不是执行本质)等。
小结
如果你坚持看到这里,或许会觉得失望,介绍了一堆的概念和名词,貌似对你的帮助不大,不要沮丧,第一次接触分布式知识的人大都如此,至少你跟开发又多了些共同语言,下次那个哥们冲你说pig(猪)时,你可以认为他说的是pig(一种数据流语言和运行环境,用以检索非常大的数据集,使程序员能专注于数据而不是执行本质)。
在下篇文章中,我会来点干货,介绍Hadoop的MapReduce基本编程,如果你有走读代码发现问题或通过代码了解本质的习惯,不妨期待下。
分享到:
相关推荐
六、hadoop学习笔记之一:初识Hadoop 这篇笔记介绍了Hadoop的基本概念,包括Hadoop的诞生背景、核心组件以及Hadoop的优势。初学者可以从这里了解Hadoop的基本架构和工作原理,为后续的学习打下基础。 总结,Hadoop...
Hadoop学习笔记,自己总结的一些Hadoop学习笔记,比较简单。
**Hadoop学习笔记详解** Hadoop是一个开源的分布式计算框架,由Apache基金会开发,主要用于处理和存储海量数据。它的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce,两者构成了大数据处理的基础...
Hadoop 学习笔记.md
【HADOOP学习笔记】 Hadoop是Apache基金会开发的一个开源分布式计算框架,是云计算领域的重要组成部分,尤其在大数据处理方面有着广泛的应用。本学习笔记将深入探讨Hadoop的核心组件、架构以及如何搭建云计算平台。...
首先,Hadoop的分布式文件系统(HDFS)是其核心组件之一,它具有高吞吐量的数据访问能力,非常适合大规模数据集的存储和处理。HDFS的设计是基于这样的理念:硬件故障是常态,因此它通过数据复制机制来实现高可靠性。...
云计算,hadoop,学习笔记, dd
“Hadoop学习总结之五:Hadoop的运行痕迹.doc”可能涉及监控和日志记录,这是理解Hadoop系统运行状态和问题排查的重要手段。通过监控Hadoop集群的性能指标,如CPU利用率、内存使用情况、磁盘I/O等,可以优化系统配置...
赠送jar包:hadoop-auth-2.6.5.jar 赠送原API文档:hadoop-auth-2.6.5-javadoc.jar 赠送源代码:hadoop-auth-2.6.5-sources.jar 包含翻译后的API文档:hadoop-auth-2.6.5-javadoc-API文档-中文(简体)-英语-对照版...
第1讲:初识hadoop
"Hadoop学习笔记整理" 本篇笔记对Hadoop进行了系统的介绍和总结,从大数据的基本流程到Hadoop的发展史、特性、集群整体概述、配置文件、HDFS分布式文件系统等方面都进行了详细的讲解。 一、大数据分析的基本流程 ...
2. **Hadoop学习总结之一:HDFS简介.doc**、**Hadoop学习总结之四:Map-Reduce的过程解析.doc**、**Hadoop学习总结之五:Hadoop的运行痕迹.doc**、**Hadoop学习总结之二:HDFS读写过程解析.doc**:这些文档详细介绍...
hadoop学习笔记,分天学习,原创,亲测,放心使用,没问题。
chown -R hadoop:hadoop /opt/modules/hadoop/ ``` ### 7. 生成SSH密钥对 在所有节点上,使用`ssh-keygen`生成RSA密钥对,然后将其他节点的公钥复制到主节点,主节点上的公钥复制到其他节点,实现无密码登录: ```...
Hadoop安装与配置详解:从环境准备到运行MapReduce作业