设为首页 加入收藏

TOP

10天Hadoop快速突击(1)——Hadoop基础知识
2019-03-19 00:33:31 】 浏览:77
Tags:Hadoop 快速 突击 基础知识
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ARPOSPF/article/details/80321339

Hadoop简介

1.什么是Hadoop

Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构,形成分布式系统;MapReduce分布式编程模型允许用户在不了解分布式系统底层细节的情况下开发并行应用程序。

Hadoop的源头是Aapche Nutch。2004年,Google发表了题为“MapReduce:Simplified Data Processing on Large Clusters”的论文后,Doug Cutting开始实现MapReduce计算框架,并将其与NDFS(Nutch Distributed File System)结合,用以支持Nutch引擎的主要算法。2006年2月,NDFS和MapReduce从Nutch中分离出来,成为一套完整而独立的软件,并命名为Hadoop。

Hadoop处理海量数据时,采用分布式存储方式来提高读写速度和扩大存储容量;采用MapReduce整合分布式文件系统上的数据,保证高速分析处理数据;还采用冗余数据来保证数据的安全性。

Hadoop中的HDFS具有高容错性,并且是基于Java语言开发的。主要有以下几个优点:

(1)高可靠性:Hadoop按位存储和处理数据的能力值得信赖。

(2)高扩展性:Hadoop是在可用的计算机集簇间分配数据完成计算任务的。

(3)高效性:Hadoop能够在节点之间动态地移动数据,以保证各个节点的动态平衡

(4)高容错性:Hadoop能够自动保存数据的多份副本,并且能够自动将失败的任务重新分配。

2.Hadoop项目及其结构

Hadoop的核心内容是MapReduce和Hadoop分布式文件系统,另外还有一些不可或缺的组件,如Common、Avro、Chukwa、Hive、HBase、ZooKeeper、Pig等,它们提供了互补性服务或在核心层上提供了更高层的服务。

Common:是为Hadoop其他子项目提供支持的常用工具,主要包括FileSystem、RPC和串行化库。为在廉价硬件上搭建云计算环境提供基本的服务,并且会为在该平台上的软件开发提供所需的API。

Avro:是用于数据序列化的系统。提供了丰富的数据结构类型、快速可压缩的二进制数据格式、存储持久性数据的文件集、远程调用RPC的功能和简单的动态语言集成功能。其中代码生成器既不需要读写文件数据,也不需要使用或实现RPC协议,只是一个可选的对静态类型语言的实现。

需要的注意的是,Avro系统依赖于模式(Schema),数据的读和写是在模式之下完成的。这样可以减少写入数据的开销,提高序列化的速度并缩减其大小,同时也可以方便动态脚本语言的使用,因为数据连同其模式都是自描述的。

在RPC中,Avro系统的客户端和服务端通过握手协议进行模式的交换,因此当客户端和服务端拥有彼此全部的模式时,不同模式下相同命名字段、丢失字段和附加字段等信息的一致性问题就得到了很好的解决。

MapReduce:是一种编程模型,用于大规模数据集(大于1TB)的并行运算。映射(Map)、化简(Reduce)的思想极大地方便了编程人员。MapReduce在执行时先指定一个Map(映射)函数,把输入键值对映射成一组新的键值对,经过一定处理后交给Reduce,Reduce对相同key下的所有value进行处理后再输出键值对作为最终的结果。

HDFS:是一个分布式文件系统。因为HDFS具有高容错性(fault-tolerent)的特点,所以它可以设计部署在廉价的硬件上。通过提供高吞吐率(high-throughput)来访问应用程序的数据。HDFS放宽了对可移植操作系统接口(POSIX,Portable Operating System Interface)的要求,这样可以实现以流的形式访问文件系统中的数据。HDFS的设计目标如下:

(1)检测和快速恢复硬件故障。

(2)流式的数据访问。HDFS被设计成适合进行批量处理,而不是用户交互式处理。所以它重视数据吞吐量,而不是数据访问的反应速度。

(3)简化一致性模型。大部分的HDFS程序对文件的操作需要一次写入,多次读取。一旦一个文件经过创建、写入、关闭就不需要修改了。

(4)通信协议。所有的通信协议都是在TCP/IP协议之上的。一个客户端和明确配置了端口的名字节点(NameNode)建立连接之后,它和名字节点的协议辨识客户端协议(Client Protocal)。数据节点(DataNode)和名字节点之间则用数据节点协议(DataNode Protocal)。

Chukwa:是开源的数据收集系统,用于监控和分析大型分布式系统的数据。是在Hadoop的HDFS和MapReduce框架之上搭建的,继承了Hadoop的可扩展性和健壮性。Chukwa通过HDFS来存储数据,并依赖MapReduce任务处理数据。

Hive:最早由Facebook设计,是一个建立在Hadoop基础之上的数据仓库,提供了一些用于对Hadoop文件中的数据集进行数据整理、特殊查询和分析存储的工具。Hive提供的是一种结构化数据的机制,支持类似于SQL语言的查询语言以查询Hadoop中的数据。该语言称为HiveQL。而且,MapReduce编程人员还可以在Mapper或Reducer中通过HiveQL查询数据。Hive编译器把HiveQL编译成一组MapReduce任务。

HBase:是一个分布式的、面向列的开源数据库,该技术来源于Google的论文《Bigtable:一个结构化数据的分布式存储系统》。HBase不同于一般的关系数据库,一是因为HBase是一个适合于非结构化数据存储的数据库,而是因为HBase是基于列而不是基于行的模式。HBase和Bigtable使用相同的数据模型。用户将数据存储在一个表里,一个数据行拥有一个可选择的键和任意数量的列。由于HBase表示稀疏的,用户可以为行定义各种不同的列。HBase主要用于随机访问、实时读写的大数据。

Pig:是一个对大型数据集进行分析、评估的平台。最突出的优势是它的结构能够经受住高度并行化的检验。Pig底层由一个编译器杜正,它在运行的时候会产生一些MapReduce程序序列,Pig的语言层由一种叫做Pig Latin的正文型语言组成。

ZooKeeper:是一个为分布式应用程序所设计的开源协调服务,主要为用户提供同步、配置管理、分组和命名等服务,减轻分布式应用程序所承担的协调任务。ZooKeeper的文件系统使用了目录树结构。ZooKeeper是使用Java编写的,但是它支持Java和C两种编程语言。

3.Hadoop体系结构

Hadoop的体系结构主要是通过HDFS来实现分布式存储的底层支持的,并且它会通过MapReduce来实现分布式并行任务处理的程序支持。

HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据。HDFS允许用户以文件的形式存储数据。从内部看,文件被分成若干个数据块,而且这若干个数据块存放在一组DataNode上,NameNode执行文件系统的命名空间操作,比如打开、关闭等,它也负责数据库到具体DataNode的映射。DataNode负责处理文件系统客户端的文件读写请求,并在NameNode的统一调度下进行数据库的创建、删除和复制工作。

一个典型的部署场景是集群中的一台机器运行一个NameNode实例,其他机器分布运行一个DataNode实例。集群中的NameNode是所有HDFS元数据的管理者,用户需要保存的数据不会经过NameNode,而是直接流向存储数据的DataNode。

MapReduce是一种并行编程模式,基于它可以将任务分发到由上千台机器组成的集群上,并以一种可靠容错的方式并行处理大量的数据集,实现Hadoop的并行任务处理功能。MapReduce框架是由一个单独运行在主节点的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前失败的任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和其他配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。

HDFS在集群上实现了分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供了对文件操作和存储等的支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,共同完成了Hadoop分布式集群的主要任务。

4.Hadoop与分布式开发

分布式系统其实是分布式软件系统,是在通信网络互联的多处理机体系结构上执行任务的系统,包括分布式操作系统、分布式程序设计语言及其编译解释系统、分布式文件系统和分布式数据库系统等。Hadoop是分布式软件系统中文件系统层的软件,实现了分布式文件系统和部分分布式数据库系统的功能。Hadoop中的分布式文件系统HDFS能够实现数据在计算机集群组成的云上高效的存储和管理。Hadoop中的并行编程框架MapReduce能够让用户编写Hadoop并行应用程序运行得以简化。

Hadoop上并行应用程序的开发是基于MapReduce编程模型的。MapReduce编程模型的原理是:利用一个输入的key/value对集合来产生一个输出的key/value对集合。MapReduce库的用户用两个函数来表达这个计算:Map和Reduce。

用户自定义的Map函数接收一个输入的key/value对,然后产生一个中间key/value对的集合。MapReduce把所有具有相同的key值的value集合在一起,然后传递给Reduce函数。

用户自定义的Reduce函数接收key和相关的value集合。Reduce函数合并这些value值,形成一个较小的value集合。一般来说,每次调用Reduce函数只产生0和1个输出的value值。通常我们通过一个迭代器把中间value值提供给Reduce函数。这样就可以处理无法全部放入内容的大量的value集合了。

(1)数据分布存储

Hadoop分布式文件系统HDFS由一个名字节点NameNode和多个数据节点DataNode组成,每个节点都是一台普通的计算机。文件在HDFS底层被切割成了Block,这些Block分散地存储在不同的DataNode上,每个Block还可以复制数份数据存储在不同的DataNode上,达到容错容灾的目的。NameNode则是整个HDFS的核心。通过维护一些数据结构来记录每一个文件被切割成了多少个Block、这些Block可以从哪些DataNode中获得,以及各个DataNode的状态等重要信息。

(2)分布式并行计算

Hadoop中有一个作为主控的JobTracker,用于调度和管理其他的TaskTracker。JobTracker可以运行于集群中的任意一台计算机上;TaskTracker则负责执行任务,它必须运行与DataNode上,也就是说DataNode既是数据存储结点,也是计算结点。JobTracker将Map任务和Reduce任务分发给空闲的TaskTracker,让这些任务并行运行,并负责监控任务的运行情况。如果某一个TaskTracker出了故障,JobTracker会将其负责的任务转交给另一个空闲的TaskTracker重新运行。

(3)本地计算

数据存储在哪一台计算机上,就由哪台计算机进行这部分数据的计算,这样可以减少数据在网络上的传输,降低对网络带宽的需求。“本地计算”是一种最有效的节约网络带宽的手段。

(4)任务粒度

把原始大数据集切割成小数据集时,通常让小数据集小于或等于HDFS中一个Block的大小(默认为64MB),这样能够保证一个小数据集是位于一台计算机上的,便于本地计算。假设有M个小数据集待处理,就启动M个Map任务,注意这M个Map任务分布在N台计算机上,它们将并行运行,Reduce任务的数量R则可由用户指定。

(5)数据分割(Partition)

把Map任务输出的中间结果按key的范围划分成R份(R是预先定义的Reduce任务的个数),划分时通常使用Hash函数,这样可以保证某一段范围内的key一定是由一个Reduce任务来处理的,可以简化Reduce的过程。

(6)数据合并(Combine)

在数据分割之前,还可以先对中间结果进行数据合并(Combine),即将中间结果中有相同key的<key,value>对合并成一对。Combine的过程与Reduce的过程类似,在很多情况下可以直接使用Reduce函数,但Combine是作为Map任务的一部分、在执行完Map函数后紧接着执行的。Combine能够减少中间结果中<key,value>对的数目,从而降低网络流量。

(7)Reduce

Map任务的中间结果在执行完Combine和Partition之后,以文件形式存储于本地磁盘上。中间结果文件的位置会通知主控JobTracker,JobTracker再通知Reduce任务到哪一个TaskTracker上去取中间结果。所有的Map任务产生的中间结果均按照其key值通过同一个Hash函数划分成了R份,R个Reduce任务各自负责一段key区间。每个Reduce需要向许多个Map任务节点取得落在其负责的key区间内的中间结果,然后执行Reduce函数,形成一个最终的结果文件。

(8)任务管道

有R个Reduce任务,就会有R个最终结果。很多情况下这R个最终结果并不需要合并成一个最终结果,因为这R个最终结果又可以作为另一个计算任务的输入,开始另一个并行计算任务,这也就形成了任务管道。

5.Hadoop计算模型——MapReduce

一个Map/Reduce作业(Job)通常会把输入的数据集切分为若干个独立的数据块,由Map任务(Task)以完全并行的方式处理它们。框架会先对Map的输出进行排序,然后把结果输入给Reduce任务。通常作业的输入和输出都会被存储在文件系统中。整个框架负责任务的调度和监控,以及重新执行已经失败的任务。

通常Map/Reduce框架和分布式文件系统是运行在一组相同的节点上的,即计算节点和存储节点在一起。这种配置允许框架在那些已经存好数据的节点上高效地调度任务。

Map/Reduce框架由一个单独的Master JobTracker和集群节点上的Slave TaskTracker共同组成。Master负责调度构成一个作业的所有任务,这些任务分布在不同的slave上。Master监控它们的执行情况,并重新执行已失败的任务,而Slave仅负责执行由Master指派的任务。

在Hadoop上运行的作业需要指明程序的输入/输出位置(路径),并通过实现合适的接口或抽象类提供Map和Reduce函数。同时还需要指定作业的其他参数,构成作业配置(Job Configuration)。在Hadoop的JobClient提交作业(JAR包/可执行程序等)和配置信息给JobTracker之后,JobTracker会负责分发这些软件和配置信息给slave及调度任务,并监控它们的执行,同时提供状态和诊断信息给JobClient。


6.Hadoop数据管理

Hadoop的数据管理主要包括Hadoop的分布式文件系统HDFS、分布式数据库HBase和数据仓库Hive。

(1)HDFS的数据管理

对于整个集群有单一的命名空间;具有数据一致性,都适合一次写入多次读取的模型,客户端在文件没有被成功创建之前是无法看到文件存在的;文件会被分割成多个文件块,每个文件快被分配存储到数据节点上,而且会根据配置由复制文件块来保证数据的安全性。

HDFS通过三个重要的角色来进行文件系统的管理:NameNode、DataNode和Client。NameNode可以看作是分布式文件系统中的管理者,主要负责管理文件系统的命名空间、集群配置信息和存储块的复制等。NameNode会将文件系统的Metadata存储在内容中,这些信息包括文件信息、每一个文件对应的文件块的信息和每一个文件快在DataNode中的信息等。DataNode是文件存储的基本单元,它将文件块(Block)存储在本地文件系统中,保存了所有Block的Metadata,同时周期性地将所有存在的Block信息发送给NameNode。Client就是需要获取分布式文件系统文件的应用程序。

1)文件写入:Client向NameNode发起文件写入的请求。NameNode根据文件大小和文件块配置情况,返回给Client所管理的DataNode的信息。Client将文件划分为多个Block,根据DataNode的地址信息,按顺序将其写入到每一个DataNode块中。

2)文件读取:Client向NameNode发起文件读取的请求。NameNode返回文件存储的DataNode信息。Client读取文件信息。

3)文件复制:NameNode发现部分文件的Block不符合最小复制数这一要求或部分DataNode失效。通知DataNode相互复制Block。DataNode开始直接相互复制。

作为分布式文件系统,HDFS在数据管理方面还有几个值的借鉴的功能:

1)文件块(Block)的放置:一个Block会有三份备份,一份放在NameNode指定的DataNode上,另一份放在与指定DataNode不在同一台机器上的DataNode上,最后一份放在与指定DataNode同一Rack的DataNode上。

2)心跳检测:用心跳检测DataNode的健康状况,如果发现问题就采取数据备份的方式来保证数据的安全性。

3)数据复制(DataNode失败,需要平衡DataNode的存储利用率和平衡DataNode数据交互压力等情况):使用Hadoop时可以用HDFS的balancer命令配置Threshold来平衡每一个DataNode的磁盘利用率。

4)数据校验:采用CRC32做数据校验。在写入文件块的时候,除了会写入数据外还会写入校验信息,在读取的时候则需要先校验后读入。

5)单个NameNode:如果单个NameNode失败,任务处理信息将会记录在本地文件系统和远端的文件系统在。

6)数据管道性的写入:当客户端要写入文件到DataNode上时,首先会读取一个Block,然后将其写到第一个DataNode上,接着由第一个DataNode将其传递到备份的DataNode上,直到所有需要写入的这个Block的DataNode都成功写入后,客户端才会开始写下一个Block。

7)安全模式:分布式文件系统启动时会进入安全模式(系统运行期间也可以通过命令进入安全模式),此时,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式是为了在系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略进行必要的复制或删除部分数据块。

(2)HBase的数据管理

HBase是一个稀疏的、长期存储的(存在硬盘上)、多维度的排序映射表,这张表的索引是行关键字,列关键字和时间戳。表中的每个值是一个纯字符数组,数据都是字符串,没有类型。用户在表格中存储数据,每一行都是一个可排序的主键和任意多的列。由于是稀疏存储的,所以同一张表中的每一行数据都可以有截然不同的列。列名字的格式是“<family>:<label>”,它是由字符串组成的,每一张表有一个family集合,这个集合是固定不变的,相当于表的结构,只能通过改变表结构来改变表的family集合。但是label值相对于每一行来说都是可以改变的。

HBase把同一个family中的数据存储在同一个目录下,而HBase的写操作是锁行的,每一行都是一个原子元素,都可以加锁。所有数据库的更新都有一个时间戳标记,每次更新都会生成一个新的版本,而HBase会保留一定数量的版本,客户端可以选择获取距离某个时间点最近的版本,或者一次获取所有版本。

HBase在分布式集群上主要依靠由HRegion、HMaster、HClient组成的体系结构从整体上管理数据。

1)HBaseMaster:HBase主服务器。一个HBase只部署一台主服务器,它通过领导选举算法(Leader Election Algorithm)确保只有唯一的主服务器是活跃的,ZooKeeper保存主服务器的服务器地址信息。如果主服务器瘫痪,可以通过领导选举算法从备用服务器中选择新的主服务器。

主服务器承担着初始化集群的任务。当主服务器第一次启动时,会试图从HDFS获取根或根域目录,如果获取失败则创建根或根域目录,以及第一个元域目录。在下次启动时,主服务器就可以获取集群和集群中所有域的信息了,同时主服务器还负责群中域的分配、域服务器运行状态的监视、表格的管理等工作。

2)HRegionServer:HBase域服务器,主要职责有服务于主服务器分配的域、处理客户端的读写请求,本地缓冲区回写、本地数据压缩和分割域等功能。

每个域只能由一台域服务器提供服务。当它开始服务于某域时,它会从HDFS文件系统中读取该域的日志和所有存储文件,同时还会管理操作HDFS文件的持久性存储工作。客户端通过与主服务器通信获取域和域所在域服务器的列表信息后,就可以直接向域服务器发送域读写请求,来完成操作。

3)HBaseClient:HBase客户端,负责查找用户域所在的域服务器地址。HBase客户端会与HBase主机交换消息以查找根域的位置,这是两者之间唯一的交流。

定位根域后,客户端连接根域所在的域服务器,并扫描根域获取元域信息。元域信息中包含所需用户域的域服务器地址。客户端再连接元域所在的域服务器,扫描元域以获取所需用户域所在的域服务器地址。定位用户域后,客户端连接用户域所在的域服务器并发出读写请求。用户域的地址将在客户端被缓存,后续的请求无需重复上述过程。

在HBase的体系结构中,HBase主要在主服务器、域服务器和客户端三部分组成。主服务器作为HBase的中心,管理整个集群中的所有域,监控每台域服务器的运行情况等;域服务器接收来自服务器的分配域,处理客户端的域读写请求并回写映射文件等;客户端主要用来查找用户域所在的域服务器地址信息。

(3)Hive的数据管理

Hive是建立在Hadoop上的数据仓库基础架构。它提供了一系列的工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。作为一个数据仓库,Hive的数据管理按照使用层次可以从元数据存储、数据存储和数据交换三个方面来介绍。

1)元数据存储:Hive将元数据存储在RDBMS中,有三种模式可以连接到数据库:Single User Mode,此模式连接到一个In-memory的数据库Derby,一般用于UnitTest。Multi User Mode:通过网络连接到一个数据库中,这是最常用的模式。Remote Server Mode:用于非Java客户端访问元数据库,在服务器端启动一个MetaStoreServer,客户端利用Thrift协议通过MetaStoreServer来访问元数据库。

2)数据存储。首先Hive没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由地组织Hive中的表,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,它就可以解析数据了。其次Hive中所有的数据都存储在HDFS中,Hive中包含4中数据模型:Table、External Table、Partition和Bucket。

3)数据交换:分为用户接口、元数据存储、解释器、驱动器、Hadoop等几个部分。用户接口包括客户端、Web界面和数据库接口;元数据存储通常存储在关系数据库中;驱动器有解释器、编译器、优化器和执行器。Hadoop利用HDFS进行存储,利用MapReduce进行计算。

7.Hadoop集群安全策略

从用户权限管理、HDFS安全策略和MapReduce安全策略三个方面介绍Hadoop的集群安全策略。

(1)用户权限管理:主要涉及用户分组管理,为更高层的HDFS访问、服务访问、Job提交和配置Job等操作提供认证和控制基础。

Hadoop上的用户和用户组均由用户自己指定,如果没有指定,则Hadoop会调用Linux的“whoami”命令获取当前Linux系统的用户名和用户组作为当前用户的对应名,并将其保存在Job的user.name和group.name两个属性中。这样用户所提交Job的后续认证和授权以及集群服务的访问都将基于此用户和用户组的权限及认证信息进行。

Hadoop集群的管理员是创建和配置Hadoop集群的用户,它可以配置集群,使用Kerberos机制进行认证和授权。同时管理员可以在集群的服务(包括NameNode、DataNode、JobTracker和TaskTracker)授权列表中添加或更改某确定用户和用户组,系统管理员同时负责Job队列和队列的访问控制矩阵的创建。

(2)HDFS安全策略

用户和HDFS服务之间的交互主要有两种情况:用户机和NameNode之间的RPC交互获取待通信的DataNode位置,客户机和DataNode交互传输数据块。

RPC交互可以通过Kerberos或授权令牌来认证。每个用户只能通过Kerberos认证获取唯一一个新的授权令牌。

数据块的传输可以通过块访问令牌来认证,每一个块访问令牌都由NameNode生成,它们都是特定的。块访问令牌代表着数据访问容量,一个块访问令牌保证用户可以访问指定的数据库。块访问令牌由NameNode签发被用在DataNode上,其传输过程就是将NameNode上的认证信息传输到DataNode上。块访问令牌是基于对称加密模式生成的,NameNode和DataNode共享了密钥。

(3)MapReduce安全策略:主要涉及Job提交、Task和Shuffle三个方面。

对于Job提交,用户需要将Job配置、输入文件和输入文件的元数据等写入用户home文件夹下,这个文件夹只能由该用户读、写和执行。

任务(Task)的用户信息沿用生成Task的Job的用户信息,因为通过这个方式能保证一个用户的Job不会向TaskTracker或其他用户Job的Task发送系统信号。

当一个Map任务完成时,它的输出被发送给管理此任务的TaskTracker。每一个Reduce将会与TaskTracker通信以获取子集的那部分输出,此时就需要MapReduce框架保证其他用户不会获取这些Map的输出。Reduce任务会根据Job凭证计算请求的URL和当前时间戳的消息认证码。这个消息认证码会和请求一起发送到TaskTracker,而TaskTracker只会在消息认证码正确并且在封装时间戳的N分钟之内提供服务。在TaskTracker返回数据时,为了防止数据被木马替换,应答消息的头部将会封装根据请求中的消息认证码计算而来的新消息认证码和Job凭证,从而保证Reduce能够验证应答消息是由正确的TaskTracker发送而来。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇2018-3-7      .. 下一篇Hadoop-2.2.0中文文档—— 从Hado..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目