好的设计网站,厦门建设局网站改到哪,杭州建设网站公司网站,wordpress 建立分类0.文档说明#xff1a;本文是围绕hadoop2.2的分布式文件系统hdfs进行分布式存储功能测试#xff0c;形成的hdfs分布式存储功能测试报告#xff0c;其中主要包括三大部分内容#xff1a;第一部分介绍了hdfs的基本原理#xff1b;第二部分介绍了hadoop2.2的完全分布式集群安… 0.文档说明本文是围绕hadoop2.2的分布式文件系统hdfs进行分布式存储功能测试形成的hdfs分布式存储功能测试报告其中主要包括三大部分内容第一部分介绍了hdfs的基本原理第二部分介绍了hadoop2.2的完全分布式集群安装以及namenode高可用HA的部署过程第三部分介绍了hdfs存储功能测试过程包括客户端通过不同方式来操作hdfs文件系统进行上传、下载、查看文件及设置权限等。安装方法参考文档来源http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.0.9.1/bk_using_Ambari_book/content/ambari-include-setup.html0.前言 HDFS是Hadoop Distribute File System的简称模仿Google的GFS设计思路开发的专门针对廉价硬件设计的分布式文件系统,在软件层内置数据容错能力,可应用于云存储系统的创建开发,与现有的分布式系统最大区别为高容错性和低成本。在大数据时代分布式处理已经成为潮流Hadoop 就是一种应用十分广泛的分布式处理框架。但在Hadoop 的使用中Namenode 的单点失败问题一直困扰着框架的使用者。相比于Hadoop 1.0Hadoop 2.0中的HDFS增加了两个重大特性HA和Federaion。HA即为High Availability用于解决NameNode单点故障问题该特性通过热备的方式为主NameNode提供一个备用者一旦主NameNode出现故障可以迅速切换至备NameNode从而实现不间断对外提供服务。Federation即为“联邦”该特性允许一个HDFS集群中存在多个NameNode同时对外提供服务这些NameNode分管一部分目录水平切分彼此之间相互隔离但共享底层的DataNode存储资源。本文中分析了hdfs的工作原理及架构并使用了hadoop2.2版本配置了Namenode 高可用HA方案实现了NameNode的冗余备份高可用性避免了Namenode 单点失败造成的服务不可用与文件丢失问题。1.重点导读1.1.HDFS HA高可用介绍1.1.1.HDFS HA架构在一个典型的HDFSHA场景中通常由两个NameNode组成一个处于active状态另一个处于standby状态。ActiveNameNode对外提供服务比如处理来自客户端的RPC请求而Standby NameNode则不对外提供服务仅同步active namenode的状态以便能够在它失败时快速进行切换。为了能够实时同步Active和Standby两个NameNode的元数据信息实际上editlog需提供一个共享存储系统可以是NFS、QJMQuorumJournal Manager或者zookeeperActive Namenode将数据写入共享存储系统而Standby监听该系统一旦发现有新数据写入则读取这些数据并加载到自己内存中以保证自己内存状态与Active NameNode保持基本一致如此这般在紧急情况下standby便可快速切为active namenode。注意在Hadoop 2.0中不再需要secondary namenode或者backupnamenode它们的工作由Standby namenode承担。本文中使用基于QJM的HA解决方案并通过ambari工具降低了HA部署的难度。在该方案中主备NameNode之间通过一组JournalNode同步元数据信息一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个2N1个JournalNode这样只要N1个写入成功就认为数据写入成功此时最多容忍N-1个JournalNode挂掉比如3个JournalNode时最多允许1个JournalNode挂掉5个JournalNode时最多允许2个JournalNode挂掉。基于QJM的HDFS 架构如下所示0.1.1.硬件选择及软件准备1 硬件选择 NameNode机器推荐主备NameNode具有相同的硬件配置且内存要足够大。 JournalNode通常准备3或5个JournalNode考虑到JournalNode非常轻量级可以与Hadoop其他服务共用机器比如ResourceManagerTaskTracker等。 Zookeeper由于Hadoop多个服务用到了Zookeeper可搭建一个3或者5个节点的Zookeeper实例作为公共服务。Zookeeper实例也可以与其他服务共用机器。2 软件准备 ApacheHadoop 2.2.0或者更高版本或cdh4以及更高版本 JDK 1.6或者更高版本注意cdh5需要jdk70.1.1.本文档中测试环境的HDFS架构组成。本文档使用的HDFS分布式集群环境架构:服务器主机名角色外网ip内网ip角色说明及用途宿主Along-1.yc.comhadoop client192.168.200.61172.23.1.10hadoop客户端虚机A-1hda1.yc.comnamenode resourcemanager JournalNode jobhistory zookeeper192.168.200.63172.23.1.13Namenode名称服务器jobhistory 服务器(用于记录mapreduce的日志)虚机A-2hda2.yc.comdatanode nodemanager zookeeper 192.168.200.64172.23.1.14datanode数据节点zookeeper服务器集群(用于namenode 高可用的自动切换)虚机A-3hda3.yc.comdatanode nodemanager JournalNode192.168.200.65172.23.1.15JournalNode用于存放共享的NameNode元数据宿主Blong-2.yc.com192.168.200.62172.23.1.11虚机B-1hdb1.yc.comnamenode resourcemanager JournalNode192.168.200.66172.23.1.16NameNode名称服务器(HA热备)虚机B-2hdb2.yc.comdatanode nodemanager zookeeper 192.168.200.67172.23.1.17Nodemanager节点管理虚机B-3hdb3.yc.comdatanode nodemanager192.168.200.68172.23.1.180.1.已解决问题本集群里部署两台NameNode做高可用HA常态下一台NameNode为active状态接受客户端操作请求。另一台NameNode保持standby状态作为实时热备时刻监控活跃状态的NameNode的元数据变化并实时同步到自己的内存中。一旦处于活跃状态的NameNode出现故障这台热备状态的NameNode会立即自动升级为活跃状态接管工作。报告结论通过测试已经实现了NameNode自动故障转移从而保证了整个hdfs集群内部的高可靠性和高可用性。同时实现了数据冗余高可靠性。集群里任意一台DataNode发生故障或宕机不会影响客户端正常操作hdfs分布式存储甚至整个一个机架的DataNode服务器宕机都不会导致数据丢失或损坏。集群里任何一台NameNode发生故障或者宕机都可以保证集群持续工作。不会导致集群里的数据丢失损坏。满足集群高可用性的要求。0.2.未尽事宜该集群只是在功能上实现了NameNode的高可用性但是只有在客户端使用hadoop内部shell命令来操作hdfs分布式存储的时候NameNode故障转移对于客户端是透明的。还有几个未尽事宜1、如果客户端使用nfs挂载方式或者curl方式操作hdfs的时候不能实现透明切换。即客户端要访问的是其中一个处于active状态的NameNode地址当这个NameNode发生故障后客户端要手动调整去重新挂载或者连接另外一个NameNode节点地址。2、该集群还没有配置Federaion目前只能支持两个NameNode节点。集群能承载的文件数量受限于NameNode的内存上限NameNode的内存受到单台物理机支持的最大内存限制暂时没有实现NameNode的继续扩展。当集群的规模增大到一定程度数据文件数量增大到内存上限极值的时候需要扩充NameNode进行目录水平分割。不同组的NameNode相互独立各自负责一部分目录同时对外提供服务但又共同使用同一个集群里的DataNode存储池。3、目前还没有配置https安全访问以及kerberos用户身份认证。0.正文目录hadoop2.2分布式文件系统... 1hdfs功能测试报告... 1编写张龙... 1日期2014/02/28. 10.文档说明... 2第一章、hadoop 分布式存储hdfs基本原理介绍。... 41.hadoop简介... 41.1.hadoop是什么... 41.2.为什么要选择Hadoop... 51.3.hadoop集群架构及成员介绍... 51.3.1.Hadoop 2.2.0中包含的新特性... 61.3.2.集群成员及相关术语... 62.HDFS分布式存储架构介绍... 62.1.HDFS架构原理分析... 62.2.HDFS集群架构简图... 72.2.1.HDFS的三个重要角色... 82.2.2.HDFS设计特点... 93.MapReduce. 103.1.算法介绍... 103.2.Hadoop框架下的mapreduce. 123.2.1.示例1. 123.2.2.示例2. 124.综合架构分析... 13第二章、hadoop2.2完全分布式集群安装步骤。... 155.Hadoop2.2集群安装准备。... 155.1.决定部署类型。... 155.2.收集信息。... 155.3.准备环境。... 155.3.1.检查已安装的软件卸载可能导致问题的相应版本软件包。... 165.3.2.配置ssh信任。... 165.3.3.同步时钟设置。... 175.3.4.主机名和dns设置... 175.3.5.统一集群里主机的jdk环境。... 185.3.6.安全相关关闭iptables和selinux。... 195.3.7.检查umask值。... 195.3.8.PackageKit失败的问题解决。... 196.运行安装。... 196.1.设置yum仓库和获取安装包。... 206.2.规划数据库。... 216.3.设置Ambari服务器... 226.4.安装配置hadoop组件。... 246.4.1.设置集群名称。... 246.4.2.选择hdp版本。... 256.4.3.添加集群成员主机名并注册。... 256.4.4.选择要在本集群里安装的hadoop生态圈里的组件。... 286.4.5.5、分配各个主机的角色。... 296.4.6.分配从节点及客户端组件。... 296.4.7.定***务hadoop的各个组件参数配置。... 306.4.8.配置报告回顾和确认。... 316.4.9.安装、启动服务。... 326.4.10.安装总结报告。... 337.NameNode 的HA高可用性设置。... 347.1.设置NameNode Server ID。... 347.2.分配主机角色。... 347.3.HA配置回顾。... 357.4.手动执行命令在NameNode上进入安全模式并创建检查点。... 367.5.执行配置安装。... 367.6.手动初始化JournalNodes377.7.启动zookeeper和namenode服务。... 377.8.手动初始化NameNode的HA元数据。... 387.9.执行DO完成HA的安装。... 387.10.管理界面与命令... 397.10.1.hdfs运行状态界面。... 397.10.2.Map-reduce的运行状态界面... 427.10.3.直接的命令行查看hdfs状态。... 437.10.4.运行的进程查看... 448.Hadoop的命令... 458.1.1.HDFS fs命令... 45第三章、HDFS分布式存储功能测试。... 479.hadoop分布式文件系统hdfs功能测试。... 479.1.验证在hdfs分布式存储上创建目录的功能。... 479.2.列出hdfs分布式存储的目录。... 489.3.上传文件到hdfs分布式存储。... 499.4.从hdfs分布式存储下载文件。... 509.5.移动或复制hdfs分布式存储上的文件或目录。... 519.6.删除hdfs分布式存储上的文件和目录。... 529.7.验证hdfs回收站功能。... 539.8.查看hdfs分布式存储上的文件。... 539.9.设置hdfs分布式存储上的文件权限。... 549.10.验证数据的高可靠性和冗余机制。... 549.11.验证NameNode对于集群的高可用性。... 559.12.附加几个curl方式的操作说明... 559.12.1.文件/ 文件夹的状态信息... 559.12.2.重名命文件、文件夹... 559.12.3.获取目录的上下文环境汇总信息... 569.12.4.获取Check Sum File. 579.12.5.获取Home 目录... 579.12.6.设置权限... 589.12.7.设置所有者... 599.12.8.设置备份... 599.13.nfs挂载hdfs文件系统到本地进行操作。... 609.13.1.客户端服务器安装nfs客户端软件... 609.13.2.hdfs网关上启动portmap和nfs两个服务。... 609.13.3.客户端nfs方式挂载hdfs文件系统... 60结论... 61经过测试已经实现了hdfs分布式文件存储、上传、下载、查看数据高可靠性、集群高可用性等功能。... 61第一章、hadoop 分布式存储hdfs基本原理介绍。0.hadoop简介0.1.hadoop是什么 Hadoop是一个用于处理大规模数据的软件平台。由 Apache SoftwareFoundation 公司于 2005 年秋天作为 Lucene 的子项目 Nutch 的一部分正式引入。 Hadoop并不仅仅是一个用于存储的分布式文件系统而是设计用来在由通用计算设备组成的大型集群上执行分布式应用的基础框架。它由Apache基金会开发。用户可以在不了解分布式底层细节的情况下开发分布式程序。充分利用集群的威力高速运算和存储数据。简单来说Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。下图是Hadoop的体系结构Hadoop框架中最核心的设计就是MapReduce和HDFS。lMapReduce的设计思想“任务的分解与结果的汇总”。lHDFS是Hadoop分布式文件系统Hadoop Distributed File System的缩写为分布式计算提供底层存储支持。0.1.为什么要选择Hadoop系统特点l扩容能力强能可靠地存储和处理千兆字节PB数据。l成本低可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。l高效率通过分发数据hadoop可以在数据所在的节点上并行地处理它们这使得处理非常的快速。l可靠性hadoop能自动地维护数据的多份复制并且在任务失败后能自动地重新部署计算任务。应用场景海量数据的存储和分析处理。哪些公司在使用haoophttp://wiki.apache.org/hadoop/PoweredBy0.2.hadoop集群架构及成员介绍Hadoop主要的任务部署分为3个部分分别是Client机器主节点和从节点。主节点主要负责Hadoop两个关键功能模块HDFS、Map Reduce的监督。当Job Tracker使用Map Reduce进行监控和调度数据的并行处理时名称节点则负责HDFS监视和调度。从节点负责了机器运行的绝大部分担当所有数据储存和指令计算的苦差。每个从节点既扮演者数据节点的角色又充当与他们主节点通信的守护进程。守护进程隶属于Job Tracker数据节点归属于名称节点。0.2.1.Hadoop 2.2.0中包含的新特性特性1引入一个新的资源管理系统YARN可在其之上运行各种应用程序和框架比如MapReduce、Tez、Storm等它的引入使得各种应用运行在一个集群中成为可能。特性2HDFS单点故障得以解决特性3HDFS Federation 解决NameNode存在内存受限问题。特性4通过NFSv3访问HDFS 0.2.2.集群成员及相关术语1)Namenode:HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。Namenode执行文件系统的名字空间操作比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射2)Datanode:集群中的Datanode一般是一个节点一个负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间用户能够以文件的形式在上面存储数据。从内部看一个文件其实被分成一个或多个数据块这些块存储在一组Datanode上。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。3)Secondnamenode:光从字面上来理解很容易让一些初学者先入为主的认为SecondaryNameNodesnn就是NameNodenn的热备进程。其实不是。snn是HDFS架构中的一个组成部分但是经常由于名字而被人误解它真正的用途其实它真正的用途是用来保存namenode中对HDFS metadata的信息的备份并减少namenode重启的时间。值得一提的是在hadoop2.0以后已经可以支持多个NameNode了所以Secondnamenode的功能被另外一个NameNode取代了。4)Jobtracker和Tasktracher:JobTracker是MapReduce框架中最主要的类之一所有job的执行都由它来调度而且Hadoop系统中只配置一个JobTracker 应用。它们都是由一个master服务JobTracker和多个运行于多个节点的slaver服务TaskTracker两个类提供的服务调度的。 master负责调度job的每一个子任务task运行于slave上并监控它们如果发现有失败的task就重新运行它slave则负责直接执行每一个task。TaskTracker都需要运行在HDFS的DataNode上而JobTracker则不需要一般情况应该把JobTracker 部署在单独的机器上。1.HDFS分布式存储架构介绍1.1.HDFS架构原理分析简而言之分而治之。把文件按指定大小分割成若干块分散存储到DataNode集群里并按照设定的复制因子数流水线式的进行复制达到数据冗余。NameNode记录每个文件被分成了哪些块以及这些数据块存储在哪个DataNode节点上。【架构详情请参考http://hadoop.apache.org/docs/r2.2.0/index.html】Hadoop有许多元素构成。最底部是Hadoop Distributed File SystemHDFS它存储 Hadoop 集群中所有存储节点上的文件与HDFS相关的服务有NameNode、SecondaryNameNode及DataNodeHDFS对于本文的上一层是MapReduce引擎该引擎由JobTrackers 和TaskTrackers 组成所以MapReduce 相关的服务有JobTracker 和TaskTracker 两种。Hadoop集群中有两种角色master与slavemaster又分为主master与次master。其中1)主 master同时提供NameNode 、SecondaryNameNode 及JobTracker 三种服务2)次master只提供SecondaryNameNode 服务3)所有slave可以提供DateNode 或TaskTracker 两种服务。1.2.HDFS集群架构简图对外部客户机而言HDFS 就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件等等。但是HDFS 的架构是基于一组特定的节点构建的参见图 2-1这是由它自身的特点决定的。这些节点包括 NameNode仅一个它在 HDFS 内部提供元数据服务DataNode它为 HDFS 提供存储块。下图为hadoop集群的简化视图图2-1. Hadoop 集群的简化视图存储在 HDFS 中的文件被分成块然后将这些块复制到多个计算机中DataNode。这与传统的 RAID 架构大不相同。块的大小通常为 64MB和复制的块数量在创建文件时由客户机决定。NameNode 可以控制所有文件操作。HDFS 内部的所有通信都基于标准的 TCP/IP协议。0.1.1.HDFS的三个重要角色图2-2HDFS结构示意图上面这个图很经典图中展现了整个HDFS三个重要角色NameNode、DataNode和Client。NameNode可以看作是分布式文件系统中的管理者主要负责管理文件系统的命名空间、集群配置信息和存储块的复制等。NameNode会将文件系统的Meta-data存储在内存中这些信息主要包括了文件信息、每一个文件对应的文件块的信息和每一个文件块在DataNode的信息等。DataNode是文件存储的基本单元它将Block存储在本地文件系统中保存了Block的Meta-data同时周期性地将所有存在的Block信息发送给NameNode。Client就是需要获取分布式文件系统文件的应用程序。这里通过三个操作来说明他们之间的交互关系。1)文件写入a)Client向NameNode发起文件写入的请求。b)NameNode根据文件大小和文件块配置情况返回给Client它所管理部分DataNode的信息。c)Client将文件划分为多个Block根据DataNode的地址信息按顺序写入到每一个DataNode块中。2)文件读取a)Client向NameNode发起文件读取的请求。b)NameNode返回文件存储的DataNode的信息。c)Client读取文件信息。3)文件Block复制a)NameNode发现部分文件的Block不符合最小复制数或者部分DataNode失效。b)通知DataNode相互复制Block。c)DataNode开始直接相互复制。0.1.1.HDFS设计特点下面说说HDFS的几个设计特点对于框架设计值得借鉴0.1.1.1.Block的放置默认不配置。一个Block会有三份备份一份放在NameNode指定的DataNode另一份放在与指定DataNode非同一Rack上的DataNode最后一份放在与指定DataNode同一Rack上的DataNode上。备份无非就是为了数据安全考虑同一Rack的失败情况以及不同Rack之间数据拷贝性能问题就采用这种配置方式。0.1.1.2.心跳检测心跳检测DataNode的健康状况如果发现问题就采取数据备份的方式来保证数据的安全性。0.1.1.3.数据复制数据复制场景为DataNode失败、需要平衡DataNode的存储利用率和需要平衡DataNode数据交互压力等情况这里先说一下使用HDFS的balancer命令可以配置一个Threshold来平衡每一个DataNode磁盘利用率。例如设置了Threshold为10%那么执行balancer命令的时候首先统计所有DataNode的磁盘利用率的均值然后判断如果某一个DataNode的磁盘利用率超过这个均值Threshold以上那么将会把这个DataNode的block转移到磁盘利用率低的DataNode这对于新节点的加入来说十分有用。0.1.1.4.数据校验采用CRC32作数据校验。在文件Block写入的时候除了写入数据还会写入校验信息在读取的时候需要校验后再读入。0.1.1.5.NameNode默认情况下是单点2.0后可以配置成HA单点环境中如果失败的话任务处理信息将会记录在本地文件系统和远端的文件系统中。0.1.1.6.数据管道性的写入当客户端要写入文件到DataNode上首先客户端读取一个Block然后写到第一个DataNode上然后由第一个DataNode传递到备份的DataNode上一直到所有需要写入这个Block的NataNode都成功写入客户端才会继续开始写下一个Block。0.1.1.7.安全模式安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性同时根据策略必要的复制或者删除部分数据块。在分布式文件系统启动的时候开始的时候会有安全模式当分布式文件系统处于安全模式的情况下文件系统中的内容不允许修改也不允许删除直到安全模式结束。运行期通过命令也可以进入安全模式。在实践过程中系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示只需要等待一会儿即可。3.MapReduce本文虽主要讲hdfs分布式存储的功能但这里顺带说一下分布式运算的原理。3.1.算法介绍2004年Google发表了论文向全世界介绍了MapReduce。2005年初Nutch的开发者在Nutch上有了一个可工作的MapReduce应用。5-3 mapreduce结构示意图一2-3 mapreduce结构示意图二MapReduce从它名字上来看就大致可以看出个缘由两个动词Map和Reduce“Map展开”就是将一个任务分解成为多个任务“Reduce”就是将分解后多任务处理的结果汇总起来得出最后的分析结果。在分布式系统中机器集群就可以看作硬件资源池将并行的任务拆分然后交由每一个空闲机器资源去处理能够极大地提高计算效率同时这种资源无关性对于计算集群的扩展无疑提供了最好的设计保证。廉价的机器群可以匹敌任何高性能的计算机纵向扩展的曲线始终敌不过横向扩展的斜线。任务分解处理以后那就需要将处理以后的结果再汇总起来这就是Reduce要做的工作。具体过程序如下1)Input输入从文件中读取原始数据原始数据 InputKey, InputValue2)Map映射将原始数据映射成用于Reduce的数据InputKey,InputValueListMapKey, MapValue3)Reduce合并将相同Key值的中间数据合并成最终数据MapKey,ListMapValue OutputKey, OutputValue4)Output输出将最终处理结果输出到文件OutputKey, OutputValue结果文件上述就是MapReduce大致处理过程在Map前还可能会对输入的数据有Split分割的过程保证任务并行效率在Map之后还会有Shuffle混合的过程对于提高Reduce的效率以及减小数据传输的压力有很大的帮助。后面会具体提及这些部分的细节。3.2.Hadoop框架下的mapreduce最简单的 MapReduce 应用程序至少包含 3 个部分一个 Map 函数、一个 Reduce 函数和一个 main 函数。main 函数将作业控制和文件输入/输出结合起来。在这点上Hadoop 提供了大量的接口和抽象类从而为Hadoop 应用程序开发人员提供许多工具可用于调试和性能度量等。MapReduce本身就是用于并行处理大数据集的软件框架。MapReduce的根源是函数性编程中的map和reduce函数。它由两个可能包含有许多实例许多Map 和Reduce的操作组成。Map函数接受一组数据并将其转换为一个键/值对列表输入域中的每个元素对应一个键/值对。Reduce 函数接受 Map 函数生成的列表然后根据它们的键为每个键生成一个键/值对缩小键/值对列表。3.2.1.示例1假设输入域是one small step forman, one giant leap for mankind。在这个域上运行 Map 函数将得出以下的键/值对列表 (one, 1) (small, 1) (step, 1) (for, 1) (man, 1) (one, 1) (giant, 1) (leap, 1) (for, 1) (mankind, 1)如果对这个键/值对列表应用 Reduce 函数将得到以下一组键/值对 (one, 2) (small, 1) (step, 1) (for, 2) (man, 1) (giant, 1) (leap, 1) (mankind, 1)结果是对输入域中的单词进行计数这无疑对处理索引十分有用。但是现在假设有两个输入域第一个是one small step for man第二个是one giant leap formankind。您可以在每个域上执行Map 函数和Reduce 函数然后将这两个键/值对列表应用到另一个 Reduce 函数这时得到与前面一样的结果。换句话说可以在输入域并行使用相同的操作得到的结果是一样的但速度更快。这便是MapReduce 的威力它的并行功能可在任意数量的系统上使用。3.2.2.示例2Hadoop提供的范例Wordcount计算网页中各个单词的数量1)Input文本内容è 行号文本内容2)Map行号, 文本内容 èList单词, 数量13)Reduce单词, List数量1 è 单词, 数量合计4)OutputList单词,数量 è文本文件现在回到 Hadoop 上它是如何实现这个功能的一个代表客户机在单个主系统上启动的 MapReduce应用程序称为JobTracker。类似于 NameNode它是 Hadoop 集群中惟一负责控制MapReduce 应用程序的系统。在应用程序提交之后将提供包含在HDFS 中的输入和输出目录。JobTracker使用文件块信息物理量和位置确定如何创建其他TaskTracker 从属任务。MapReduce应用程序被复制到每个出现输入文件块的节点。将为特定节点上的每个文件块创建一个惟一的从属任务。每个TaskTracker 将状态和完成信息报告给JobTracker。图2-5 显示一个示例集群中的工作分布。图2-5. 显示处理和存储的物理分布的 Hadoop 集群注在线上的生产应用环境中需要作到Namenode与JobTacker要部署在不同的服务器上.4.综合架构分析下面综合MapReduce和HDFS来看Hadoop的结构图3Hadoop结构示意图在Hadoop的系统中会有一台Master主要负责NameNode的工作以及JobTracker的工作。JobTracker的主要职责就是启动、跟踪和调度各个Slave的任务执行。还会有多台Slave每一台Slave通常具有DataNode的功能并负责TaskTracker的工作。TaskTracker根据应用要求来结合本地数据执行Map任务以及Reduce任务。说到这里就要提到分布式计算最重要的一个设计点Moving Computation is Cheaperthan Moving Data。就是在分布式处理中移动数据的代价总是高于转移计算的代价。简单来说就是分而治之的工作需要将数据也分而存储本地任务处理本地数据然后归总这样才会保证分布式计算的高效性。对外部客户机而言HDFS 就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件等等。但是 HDFS 的架构是基于一组特定的节点构建的这是由它自身的特点决定的。这些节点包括NameNode仅一个它在 HDFS 内部提供元数据服务DataNode它为HDFS 提供存储块。由于仅存在一个 NameNode因此这是 HDFS 的一个缺点单点失败。HDFS是分布式计算的存储基石Hadoop的分布式文件系统和其他分布式文件系统有很多类似的特质。分布式文件系统基本的几个特点1)对于整个集群有单一的命名空间。2)数据一致性。适合一次写入多次读取的模型客户端在文件没有被成功创建之前无法看到文件存在。3)文件会被分割成多个文件块每个文件块被分配存储到数据节点上而且根据配置会由复制文件块来保证数据的安全性。第二章、hadoop2.2完全分布式集群安装步骤。见链接下一篇文章。本部分主要介绍使用ambair工具安装hadoop完全分布式集群的过程。 转载于:https://blog.51cto.com/51longge/1369829