互联网网站制作,网页制作用什么软件,营销网站建设报价,建立链接网站模板目录 Hadoop概述Hadoop 发展历史Hadoop 三大发行版本1.Apache Hadoop#xff08;常用#xff09;2.Cloudera Hadoop3.Hortonworks Hadoop优势优势总结——4高#xff08;高可靠、高扩展、高效、高容错#xff09; Hadoop组成1.HDFS管理者#xff1a;NameNode#xff08;n… 目录 Hadoop概述Hadoop 发展历史Hadoop 三大发行版本1.Apache Hadoop常用2.Cloudera Hadoop3.Hortonworks Hadoop优势优势总结——4高高可靠、高扩展、高效、高容错 Hadoop组成1.HDFS管理者NameNodenn工作者DataNodedn辅助管理者SecondaryNameNode2nnHDFS的优缺点优点缺点 HDFS的写数据流程HDFS的读数据流程 2.YARNYARN工作机制YARN作业提交过程1.作业提交2.作业初始化3.任务分配4.任务运行5.进度和状态更新6.作业完成 YARN调度器和调度算法1. FIFO调度器First In First Out2.容量调度器Capacity Scheduler特点资源分配算法 3.公平调度器特点公平调度器队列资源分配方式 3.MapReduceMapReduce核心思想Mapper:Reduce:MapReduce优缺点优点缺点 MapReduce进程MapReduce框架原理1.MapTask并行度决定机制2.FileInputFormat切片解析3.TextInputFormat实现类TextInputFormatKeyValueTextInputFormatNLineInputFormatCombineTextInputFormat 4.CombineTextInputFormat切片机制 MapReduce工作流程1. mapTask阶段2.shuffle阶段3.reduce阶段 HDFS、YARN、MapReduce 三者关系 Hadoop生态体系Hadoop的工作方式Hadoop的守护进程 Hadoop概述
Hadoop 是使用 Java 编写允许分布在集群使用简单的编程模型的计算机大型数据集处理的Apache 的开源框架。
主要解决海量数据的存储和海量数据的分析计算问题。广义上来说Hadoop通常是指一个更广泛的概念——Hadoop生态圈。
Hadoop 发展历史 Hadoop创始人Doug Cutting为 了实 现与Google类似的全文搜索功能他在Lucene框架基础上进行优化升级查询引擎和索引引擎。 2001年年底Lucene成为Apache基金会的一个子项目。 对于海量数据的场景Lucene框架面对与Google同样的困难存储海量数据困难检索海量速度慢。 学习和模仿Google解决这些问题的办法 微型版Nutch。 可以说Google是Hadoop的思想之源Google在大数据方面的三篇论文 GFS —HDFS Map-Reduce —MR BigTable —HBas 2003-2004年Google公开了部分GFS和MapReduce思想的细节以此为基础Doug Cutting等人用了2年业余时间实现了DFS和MapReduce机制使Nutch性能飙升。 2005 年Hadoop 作为 Lucene的子项目 Nutch的一部分正式引入Apache基金会。 2006 年 3 月份Map-Reduce和Nutch Distributed File System NDFS分别被纳入到 Hadoop 项目中Hadoop就此正式诞生标志着大数据时代来临。 名字来源于Doug Cutting儿子的玩具大象
Hadoop 三大发行版本
Apache、Cloudera、Hortonworks。
Apache 版本最原始最基础的版本对于入门学习最好。【2006】Cloudera 内部集成了很多大数据框架对应产品 CDH。【2008】Hortonworks 文档较好对应产品 HDP。【2011】现在已经被 Cloudera 公司收购推出新的品牌 CDP。官网地址https://www.cloudera.com/products/pricing.html
1.Apache Hadoop常用
官网地址http://hadoop.apache.org 下载地址https://hadoop.apache.org/releases.html
2.Cloudera Hadoop
官网地址https://www.cloudera.com/downloads/cdh 下载地址https://docs.cloudera.com/documentation/enterprise/6/releasenotes/topics/rg_cdh_6_download.html
2008 年成立的 Cloudera 是最早将 Hadoop 商用的公司为合作伙伴提供 Hadoop 的 商用解决方案主要是包括支持、咨询服务、培训。2009 年 Hadoop 的创始人 Doug Cutting 也加盟 Cloudera 公司。Cloudera 产品主 要为 CDHCloudera ManagerCloudera SupportCDH 是 Cloudera 的 Hadoop 发行版完全开源比 Apache Hadoop 在兼容性安 全性稳定性上有所增强。Cloudera 的标价为每年每个节点 10000 美元。Cloudera Manager 是集群的软件分发及管理监控平台可以在几个小时内部署好一 个 Hadoop 集群并对集群的节点及服务进行实时监控。
3.Hortonworks Hadoop
官网地址https://hortonworks.com/products/data-center/hdp/ 下载地址https://hortonworks.com/downloads/#data-platform
2011 年成立的 Hortonworks 是雅虎与硅谷风投公司 Benchmark Capital 合资组建。公司成立之初就吸纳了大约 25 名至 30 名专门研究 Hadoop 的雅虎工程师上述 工程师均在 2005 年开始协助雅虎开发 Hadoop贡献了 Hadoop80%的代码。Hortonworks 的主打产品是 Hortonworks Data PlatformHDP也同样是 100%开 源的产品HDP 除常见的项目外还包括了 Ambari一款开源的安装和管理系统。2018 年 Hortonworks 目前已经被 Cloudera 公司收购
优势
Hadoop 是专为从单一服务器到上千台机器扩展每个机器都可以提供本地计算和存储。Hadoop可以用单节点模式安装但是只有多节点集群才能发挥 Hadoop 的优势我们可以把集群扩展到上千个节点而且扩展过程中不需要先停掉集群。
优势总结——4高高可靠、高扩展、高效、高容错 高可靠性Hadoop底层维护多个数据副本所以即使Hadoop某个计算元素或存储出现故障也不会导致数据的丢失。 高扩展性在集群间分配任务数据可方便的扩展数以千计的节点。 高效性在MapReduce的思想下Hadoop是并行工作的以加快任务处理速度。 高容错性能够自动将失败的任务重新分配。
Hadoop组成 1.HDFS
HDFS 即 Hadoop 分布式文件系统Hadoop Distribute File System以分布式存储的方式存储数据。负责海量数据的存储
HDFS 也是一种 Master-slave 架构NameNode 是运行 master 节点的进程它负责命名空间管理和文件访问控制。DataNode 是运行在 slave 节点的进程它负责存储实际的业务数据如下图
管理者NameNodenn
存储文件的元数据如文件名文件目录结构文件属性生成时间、副本数、文件权限以及每个文件的块列表和块所在的DataNode等。
作用负责管理管理集群内各个节点。
维护管理文件系统的元数据指的是数据的存放位置或存放路径或名字空间负责确定指定的文件块到具体的Datanode结点的映射关系。维护管理 DataNode上报的心跳信息管理真实的数据的元数据也就是文件、日志、视频、图片、等
工作者DataNodedn
在本地文件系统存储文件块数据以及块数据的校验和。 作用主要进行负责真实数据的块存储负责工作进行读写数据。 周期向NameNode汇报。
执行数据的读写响应的是客户端周期性向NameNode做汇报数据块的信息、校验和 若datanode 10分钟没有向NameNode做汇报表示已丢失已宕机 心跳周期 3秒执行流水线的复制将一份大数据切成若干份,一份一份的复制到三个节点,复制完一份下一份才开始复制 辅助管理者SecondaryNameNode2nn
每隔一段时间对NameNode元数据备份。 作用责辅助NameNode管理工作。主要是对NameNode进行数据的备份一般要恢复数据时候才会用到这个的。
HDFS的优缺点
优点
高容错性 数据采用多副本保存方式当集群中的某些机器宕机了数据可以从其他正常运行的机器获取适合处理大数据 通过将大文件切分成小的数据块存储到不同服务器上可以实现一个大文件的存储同时通过联合多个服务器多块硬盘实现整个存储系统的大容量大文件的分片存储不同分片可以进行并行读写操作进而实现数据的高速访问。 NameNode负责文件元数据的操作DataNode负责处理文件的读写请求文件数据流不会经过NameNode的处理只会跟存储在具体DataNode进行联系因此NameNode不会成为系统的瓶颈成百上千台DataNode节点应对文件内容数据流的读写其吞吐量大大提高了。可靠性
缺点
不适合做实时数据访问无法对大量小文件进行存储。存储大量小文件会占用NameNode大量的内存去存储元数据信息。小文件存储的寻址时间会超过读取时间
最佳传输损耗理论在一次传输中寻址时间占用总传输时间的1%时本次传输的损耗最小为最佳性价比传输
目前硬件的发展条件普通磁盘写的速率大概为100M/S, 寻址时间一般为10ms!
10ms / 1% * 100M/S 100M不支持并发写入文件随机修改。一个文件不允许多个线程同时写仅支持追加不支持修改
HDFS的写数据流程
客户端通过Distributed FileSystem模块向NameNode请求上传文件NameNode检查目标文件是否已存在父目录是否存在并返回结果客户端请求 Block上传到哪几个DataNode上NameNode返回DataNode节点客户端通过FSDataOutputStream模块请求dn1上传数据dn1收到请求会继续调用dn2然后dn2调用dn3将这个通信管道建立完成。dn1、dn2、dn3逐级应答客户端。客户端开始往dn1上传第一个Block先从磁盘读取数据放到一个本地内存缓存以Packet为单位dn1收到一个Packet就会传给dn2dn2传给dn3dn1每传一个packet会放入一个应答队列等待应答。当一个Block传输完成之后客户端再次请求NameNode上传第二个Block的服务器。
HDFS的读数据流程
客户端通过DistributedFileSystem向NameNode请求下载文件NameNode通过查询元数据找到文件块所在的DataNode地址。就近原则挑选一台DataNode然后随机服务器请求读取数据。DataNode开始传输数据给客户端从磁盘里面读取数据输入流以Packet为单位来做校验。客户端以Packet为单位接收先在本地缓存然后写入目标文件。
2.YARN
Yet Another Resource Negotiator 简称 YARN 是一个资源管理系统其作用就是把资源管理和任务调度/监控功分割成不同的进程Yarn 有一个全局的资源管理器叫 ResourceManager每个 application 都有一个 ApplicationMaster 进程。一个 application 可能是一个单独的 job 或者是 job 的 DAG 有向无环图。
在 Yarn 内部有两个守护进程
ResourceManager 负责给 application 分配资源NodeManager 负责监控容器使用资源情况并把资源使用情况报告给 ResourceManager。这里所说的资源一般是指CPU、内存、磁盘、网络等。
ApplicationMaster 负责从 ResourceManager 申请资源并与 NodeManager 一起对任务做持续监控工作。
ResourceManagerRM整个集群资源内存、CPU等的老大 处理客户端请求。监控 NodeManager。启动或监控 ApplicationMaster。资源的分配与调度。 ApplicationMasterAM单个任务运行的老大 负责数据的切分。为应用程序申请资源并分配给内部的任务。任务的监控与容错。 NodeManagerN M单个节点服务器资源老大 管理单个节点上的资源。处理来自 ResourceManager 的命令。处理来自 ApplicationMaster 的命令。资源的分配与调度。 Container容器相当一台独立的服务器里面封装了任务运行所需要的资源如内存、CPU、磁盘、网络等。 Container 是 Yarn 中的资源抽象它封装了某个节点上的多维度资源如内存、CPU、磁盘、网络等。
YARN工作机制
MR程序提交到客户端所在的节点。YarnRunner向ResourceManager申请一个Application。RM将该应用程序的资源路径返回给YarnRunner。将运行所需资源提交到HDFS上。资源提交完毕后申请运行mrAppMaster。RM将用户的请求初始化成一个Task。其中一个NodeManager领取到Task任务并创建容器Container产生MRAppmaster。Container从HDFS上拷贝资源到本地。MRAppmaster向RM 申请运行MapTask资源。RM将运行MapTask任务分配给另外两个NodeManager并创建容器。MR向两个接收到任务的NodeManager发送程序启动脚本这两个NodeManager分别启动MapTaskMapTask对数据分区排序。MrAppMaster等待所有MapTask运行完毕后向RM申请容器运行ReduceTask。ReduceTask向MapTask获取相应分区的数据。程序运行完毕后MR会向RM申请注销。
YARN作业提交过程
1.作业提交
客户端向yarn提交一个作业
第1步Client调用job.waitForCompletion方法向整个集群提交MapReduce作业。第2步并申请一个作业id。第3步RM给Client返回该job资源的提交路径和作业id。第4步Client提交jar包、切片信息和XML文件到指定的资源提交路径。第5步提交完资源后向RM申请运行MrAppMaster。
2.作业初始化
第6步当RM收到Client的请求后将该job添加到调度器中。第7步空闲的NM领取到该Job并创建Container并产生MRAppmaster并下载Client提交的资源到本地。
3.任务分配
第10步MrAppMaster向RM申请运行多个MapTask任务资源。第11步RM将运行MapTask任务分配给另外两个NodeManager另两个NodeManager分别领取任务并创建容器。
4.任务运行
第12步MR向两个接收到任务的NodeManager发送程序启动脚本。第13步MrAppMaster等所有MapTask运行完毕后向RM申请容器运行ReduceTask。第14步ReduceTask向MapTask获取相应分区的数据。第15步程序运行完毕后MR会向RM申请注销自己。
5.进度和状态更新
YARN中的任务将其进度和状态(包括counter)返回给应用管理器, 客户端每秒向应用管理器请求进度更新, 展示给用户。
6.作业完成
除了向应用管理器请求作业进度外, 客户端每5秒都会通过调用waitForCompletion()来检查作业是否完成。作业完成之后, 应用管理器和Container会清理工作状态。作业的信息会被作业历史服务器存储以备之后用户核查。
YARN调度器和调度算法
Hadoop作业调度器主要有三种FIFO、容量Capacity Scheduler和公平Fair Scheduler。 Apache Hadoop3.1.3默认的资源调度器是容量调度器 CDH框架默认调度器是公平调度器。
1. FIFO调度器First In First Out
特点FIFO调度器按照任务到达的时间排序先到先服务 在当前强调多租户和资源利用率的大环境下FIFO的使用率并不高。优点简单不需要配置。缺点不适合共享集群。如果有大的app需要很多资源那么其他app可能会一直等待。 2.容量调度器Capacity Scheduler
是Yahoo开发的多用户调度器。调度策略优先学则资源利用率低的队列。每个队列可以单独设置资源分配方式FIFO、DRF
特点
多队列每个队列可以配置一定的资源量每个队列采用FIFO调度策略容量保证管理员可以为每个队列设置资源保证最低资源和资源使用上限灵活性如果一个队列中的资源有剩余可以把这些资源共享给需要资源的队列如果该队列有新的应用程序提交则会收回对应资源多用户支持多用户共享集群和多应用程序同时运行。为了防止一个用户的作业独占资源该调度器会对同一个用户提交的作业所占的资源量进行限定。 资源分配算法
队列资源分配 从root开始使用深度优先算法优先选择资源占用率最低的队列分配资源。 作业资源分配 默认按照提交作业的优先级和提交时间的顺序分配资源。 容量资源分配 按照容器的优先级分配资源如果优先级相同则按照数据本地性原则
任务和数据在同一节点任务和数据在同一机架任务和数据不在同一节点也不在同一机架
3.公平调度器
公平调度器由FaceBook开发其设计目的是在事件尺度上所有作业获得公平的资源。核心调度策略优先选择对资源缺额比较大的。
特点
每个队列可以单独设置资源分配方式FIFO、FAIR、DRF与Capacity Scheduler调度器具有相同的1~4点。缺额某一时刻一个作业应获资源和实际资源的差距叫“缺额”。
公平调度器队列资源分配方式
FIFO策略
采用此种方法则与容量调度器一致。公平调度器每个队列资源分配策略如果选择FIFO则公平调度器相当于容量调度器。
Fair策略
Fair策略是一种基于最大最小公平算法实现的资源多路复用方式默认情况下每个队列内部采用该方式分配资源。FAIR策略默认情况下是一种基于最大最小公平算法实现的资源多路复用方式默认情况下每个队列内部采用该方法来分配资源。这意味着如果一个队列中有两个应用程序同时运行则每个应用程序可以得到1/2的资源。具体资源分配流程和容器调度器一致【选择队列——选择作业——选择容器】上述三个步骤都是按照公平策略分配资源 实际最小资源份额mindshare Min(资源需求量配置的最小配额)是否饥饿isNeedy 资源使用量 mindshare(实际最小资源份额)资源分配比mindShareRatio 资源使用量 / Max(mindshare, 1)资源使用权重比useToWeightRatio 资源使用量 /权重
DRF策略
DRFDominant Resource Fairness通常的资源都是单一的标准例如只考虑内存的情况YARN默认情况但是多数情况是多种资源的复合从而难以衡量两个应用应该分配的资源比例。YARN中DRF的调度方式 假设集群一共有100 CPU 和10T内存,而应用 A 需要(2 CPU 300GB)应用 B 需要(6 CPU 100GB)。则两个应用分别需要 A (2%CPU。3%内存)和 B (6%CPU1%肉存)的资源这就意味着 A 是内存主导的,B 是 CPU 主导的针对这种情况,可以选择 DRF 策略对不同应用进行不同资源CPU和内存的一个不同比例的限制。
3.MapReduce
Hadoop MapReduce 是一种编程模型它是 Hadoop 最重要的组件之一。它用于计算海量数据并把计算任务分割成许多在集群并行计算的独立运行的 task。
MapReduce核心思想
MapReduce 是 Hadoop的核心分布式的离线并行计算框架对海量数据的处理。将计算过程主要分为Map和Reduce两个阶段Map阶段并行处理输入数据Reduce阶段对Map结果进行汇总。它会把计算任务移动到离数据最近的地方进行执行因为移动大量数据是非常耗费资源的。
分布式的运算程序往往需要分成至少2个阶段map阶段和reduce阶段。map阶段的MapTask并发实例并行运行互不相干。reduce阶段的ReduceTask并发实例互不相干但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出。MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段如果用户的业务逻辑非常复杂那就只能多个MapReduce程序串行运行。
总结 分析WordCount数据流走向深入理解MapReduce核心思想。 Mapper:
第一阶段是把输入文件进行分片inputSplit得到block。有多少个block就对应启动多少maptask第二阶段是对输入片中的记录按照一定的规则解析成键值对。键key表示每行首字符偏移值值value表示本行文本内容。第三阶段是调用map方法。解析出来的每个键值对调用一次map方法。第四阶段是按照一定规则对第三阶段输出的键值对进行分区。.第五阶段是对每个分区中的键值对进行排序。首先按照键进行排序然后按照值。完成后将数据写入内存中内存中这片区域叫做环形缓冲区。
Reduce:
第一阶段copyreduce任务从Mapper任务复制输出的键值对。第二阶段sort合并排序是把复制到Reduce本地数据全部合并。再对合并后的数据排序第三阶段是对排序后的键值对调用reduce方法。键相等的键值对调用一次reduce方法每次调用会产生零个或者多个键值对最后把这些输出的键值对写入到HDFS文件中。
MapReduce优缺点
优点
易于编程简单的实现一些接口就可以完成分布式程序。良好的拓展性计算资源不足时可以通过增加机器提高能力。高容错性一台机器挂了它可以把上面的计算任务转移到另外一个节点上运行不至于这个任务运行失败这个过程由hadoop内部完成。适合PB级以上的海量数据的离线处理
缺点
不擅长实时计算不擅长流式计算因为MapReduce自身的设计特点决定了数据源必须是静态的。不擅长有向无环图计算MapReduce不擅长后一个应用程序的输入为前一个的输出因为每个MapReduce作业的输出结果都会写入到磁盘会造成大量的磁盘IO导致性能非常的低下。
MapReduce进程
一个完整的MapReduce程序在分布式运行时有三类实例进程
MrAppMaster负责整个程序的过程调度及状态协调。MapTask负责Map阶段的整个数据处理流程。ReduceTask负责Reduce阶段的整个数据处理流程。
MapReduce框架原理
1.MapTask并行度决定机制
数据切片只是在逻辑上对输入进行分片并不会在磁盘上将其切分成片进行存储。数据切片是MapReduce程序计算输入数据的单位一个切片会对应启动一个MapTask。
一个job的map阶段并行度由客户端在提交job时的切片数决定每个split切片分配一个mapTask并行实例处理默认情况下切片大小blocksize切片针对每一个文件切片
2.FileInputFormat切片解析
程序先找到数据存储目录遍历目录下的每个文件遍历第一个文件 1获取文件大小 2计算切片大小默认情况下切片大小blocksize 3每次切片时要判断剩下的部分是否大于块的1.1倍不大于则划分一块切片 4将切片信息写到一个切片规划文件中 5切片的核心过程在getSplit方法中完成 6InputSplit只记录了切片的元数据信息起始位置长度所在节点等提交切片规划文件到yarn上由yarn的MrAppMaster根据切片规划文件开启对应的mapTask。
3.TextInputFormat实现类
FileInputFormat常见的接口实现类包括TextInputFormat、KeyValueTextInputFormat、NLineInputFormat、CombineTextInputFormat和自定义InputFormat等。
TextInputFormat
TextInputFormat是默认的FileInputFormat实现类。按行读取每条记录。键是存储该行在整个文件中的起始字节偏移量 LongWritable类型。值是这行的内容不包括任何行终止符换行符和回车符Text类型。 TextInputformat将每一行在文件中的起始偏移量作为 key每一行的内容作为value。默认以\n或回车键作为一行记录。KeyValueTextInputFormat
KeyValueTextInputFormat是FileInputFormat的一个实现类每一行为一条记录被分隔符分割为keyvalue。可以通过在驱动类中设置conf.set(KeyValueLineRecordReader.KEY_VALUE_SEPERATOR,“\t”)设置分割符。 KeyValueTextInputFormat 适合处理输入数据的每一行是两列并用 tab 分离的形式NLineInputFormat
如果使用NlineInputFormat代表每个map进程处理的InputSplit不再按block块去划分而是按NlineInputFormat指定的行数N来划分。
CombineTextInputFormat
CombineTextInputFormat用于小文件过多的场景它可以将多个小文件从逻辑上规划到一个切片中这样多个小文件就可以交给一个MapTask处理。
4.CombineTextInputFormat切片机制
虚拟存储切片最大值设置CombineTextInputFormat.setMaxInputSplitSize(job, 4194304);
虚拟存储过程 将输入目录下所有文件大小依次和设置的setMaxInputSplitSize值比较如果不大于设置的最大值逻辑上划分一个块。如果输入文件大于设置的最大值且大于两倍那么以最大值切割一块当剩余数据大小超过设置的最大值且不大于最大值2倍此时将文件均分成2个虚拟存储块防止出现太小切片。 例如setMaxInputSplitSize值为4M输入文件大小为8.02M则先逻辑上分成一个4M。剩余的大小为4.02M如果按照4M逻辑划分就会出现0.02M的小的虚拟存储文件所以将剩余的4.02M文件切分成2.01M和2.01M两个文件。切片过程 a判断虚拟存储的文件大小是否大于setMaxInputSplitSize值大于等于则单独形成一个切片。 b如果不大于则跟下一个虚拟存储文件进行合并共同形成一个切片。
MapReduce工作流程
MapReduce工作流程由submit阶段mapTask阶段shuffle阶段reduce阶段组成
1. mapTask阶段
客户端提交切片jar包xml文件给yarn由MrAppMaster获取切片信息打开对应数量的mapTask。mapTask通过InputFormat调用RecordReader的read()方法读取外部的数据,解析出key/value.当数据处理完成后调用OutputCollector.collect()输出结果。它会将生成的key/value分区并写入环形内存缓冲区中。
2.shuffle阶段
当环形缓冲区达到80%后MapReduce会将数据写到本地磁盘上生成一个临时文件。①在环形缓冲区内部会对数据进行一次分区排序。利用快速排序算法对分区编号进行排序然后再对key进行排序这样可以保证同一分区内所有数据按照key有序。②按照分区编号由小到大依次将每个分区中的数据写入到任务工作目录下的临时文件spillN.out中如果设置了Combiner则写入文件前会对分区中的数据进行合并操作。③分区内元数据信息会写入到内存索引数据结构SpillRecord中如果当前内存索引大小超过1MB则将内存索引写到文件output/spillN.out.index中。当所有数据处理完成后MapTask将所有临时文件合并成一个大文件同时生成相应的索引文件。 MapTask以分区为单位进行合并。对于某个分区它将采用多轮递归合并的方式。每轮合并10个文件并将产生的文件重新加入待合并列表中对文件排序后重复以上过程直到最终得到一个大文件。
3.reduce阶段
Reduce会根据自己的分区,去maptask中拉取属于自己的数据如果其大小超过一定阈值则写到磁盘上否则直接放到内存中。在拉取数据的同时ReduceTask启动了两个后台线程对内存和磁盘上的文件进行合并以防止内存使用过多或磁盘上文件过多。当合并完成后reduce()函数将计算结果写到HDFS上。
HDFS、YARN、MapReduce 三者关系 Hadoop生态体系 组件介绍Hadoop HDFS(核心)Hadoop 分布式存储系统Yarn核心Hadoop 2.x版本开始才有的资源管理系统MapReduce(核心)并行处理框架HBase基于HDFS的列式存储数据库它是一种 NoSQL 数据库非常适用于存储海量的稀疏的数据集HiveApache Hive是一个数据仓库基础工具它适用于处理结构化数据。它提供了简单的 sql 查询功能可以将sql语句转换为 MapReduce任务进行运行Pig 它是一种高级脚本语言。利用它不需要开发Java代码就可以写出复杂的数据处理程序Flume它可以从不同数据源高效实时的收集海量日志数据Sqoop适用于在 Hadoop 和关系数据库之间抽取数据Oozie这是一种 Java Web 系统用于Hadoop任务的调度例如设置任务的执行时间和执行频率等Zookeeper用于管理配置信息命名空间。提供分布式同步和组服务Mahout可扩展的机器学习算法库。
Hadoop的工作方式
Hadoop 以主从的方式工作如图
一个Master节点和多个Slave节点Slave节点可以扩展到1000个Master节点管理维护和监控Slave节点Slave节点是真正在干活的机器Master节点应该部署在配置较高的机器上面因为它是Hadoop集群的核心Master存储元数据即数据的数据Slave是真正存储数据的机器客户端通过Master节点来分发任务。
Hadoop的守护进程 Hadoop主要有四个进程
NameNode 它是HDFS运行在Master节点守护进程。DataNode它是 HDFS 运行在Slave节点守护进程。ResourceManager它是 Yarn 运行在 Master 节点守护进程。NodeManager它是 Yarn 运行在 Slave 节点的守护进程。
除了这些可能还会有 secondary NameNodestandby NameNodeJob HistoryServer 等进程。