红象Hadoop指标-主机
- 格式:xls
- 大小:7.00 KB
- 文档页数:1
Hadoop概述⼀、Hadoop概述Hadoop实现了⼀个分布式⽂件系统,简称HDFS。
Hadoop在数据提取、变形和加载(ETL)⽅⾯有着天然的优势。
Hadoop的HDFS实现了⽂件的⼤批量存储,Hadoop的MapReduce功能实现了将单个任务打碎,将碎⽚任务(Map)发送到多个节点上,之后再以单个数据集的形式加载(Reduce)到数据仓库⾥。
Hadoop的ETL可批量操作数据,使处理结果直接⾛向存储。
Hadoop有以下特点:1、⾼可靠性。
因为它假设计算元素和存储会失败,因此它维护多个⼯作数据副本,能够确保针对失败的节点重新分布处理。
2、⾼扩展性。
Hadoop是在可⽤的计算机集簇间分配数据并完成计算任务的,这些集簇可⽅便的扩展到数以千计的节点中。
3、⾼效性。
它以并⾏的⽅式⼯作,能够在节点之间动态移动数据,并保证各个节点动态平衡,因此处理速度⾮常快。
4、⾼容错性。
Hadoop能够⾃动保存数据的多个副本,能够⾃动将失败的任务重新分配。
5、可伸缩性。
Hadoop能够处理PB级数据。
6、低成本。
Hadoop是开源的,项⽬软件成本⼤⼤降低。
Hadoop的组成:1、最底部的是HDFS(Hadoop Distribute File System),它存储Hadoop集群中所有存储节点上的⽂件,是数据存储的主要载体。
它由Namenode和DataNode组成。
2、HDFS的上⼀层是MapReduce引擎,该引擎由JobTrackers和TaskTrackers组成。
它通过MapReduce过程实现了对数据的处理。
3、Yarn实现了任务分配和集群资源管理的任务。
它由ResourceManager、nodeManager和ApplicationMaster组成。
Hadoop由以上三个部分组成,下⾯我们就这三个组成部分详细介绍:1、HDFSHadoop HDFS 的架构是基于⼀组特定的节点构建的,(1)名称节点(NameNode仅⼀个)负责管理⽂件系统名称空间和控制外部客户机的访问。
Hadoop集群部署架构解析与部署指南随着大数据时代的到来,Hadoop成为了处理海量数据的重要工具。
Hadoop是一个开源的分布式计算框架,它的核心是Hadoop Distributed File System(HDFS)和MapReduce计算模型。
在本文中,我们将深入探讨Hadoop集群的部署架构,并提供一份详细的部署指南。
一、Hadoop集群的部署架构解析Hadoop集群的部署架构通常包括主节点(Master Node)和从节点(Slave Node)。
主节点负责管理整个集群的运行,从节点则负责存储和计算数据。
在一个典型的Hadoop集群中,主节点包括一个主服务器(NameNode)和一个备用服务器(Secondary NameNode),从节点则包括多个数据节点(DataNode)和任务节点(TaskTracker)。
主服务器(NameNode)是HDFS的核心组件,负责管理文件系统的命名空间和数据块的分配。
它存储了文件系统的元数据,包括文件的目录结构、文件的权限和数据块的位置等。
备用服务器(Secondary NameNode)则负责定期合并和压缩主服务器的编辑日志,以减轻主服务器的负载。
数据节点(DataNode)是HDFS中存储实际数据的节点,它们负责数据的读写和块的复制。
数据节点将数据分为多个块,并将这些块存储在本地磁盘上。
任务节点(TaskTracker)则负责执行MapReduce任务,包括数据的切分、映射和归约。
任务节点通过与数据节点的通信,将计算任务分配给适当的数据节点。
二、Hadoop集群的部署指南1. 硬件要求在部署Hadoop集群之前,首先需要考虑硬件要求。
主节点和从节点通常需要具备相同的硬件配置,包括CPU、内存和磁盘空间。
建议使用多核CPU和大容量内存,以提高集群的计算和存储能力。
此外,还需要足够的磁盘空间来存储数据块和计算结果。
2. 操作系统选择Hadoop支持多种操作系统,包括Linux、Windows和Mac OS等。
hadoop核⼼组件概述及hadoop集群的搭建什么是hadoop? Hadoop 是 Apache 旗下的⼀个⽤ java 语⾔实现开源软件框架,是⼀个开发和运⾏处理⼤规模数据的软件平台。
允许使⽤简单的编程模型在⼤量计算机集群上对⼤型数据集进⾏分布式处理。
hadoop提供的功能:利⽤服务器集群,根据⽤户的⾃定义业务逻辑,对海量数据进⾏分布式处理。
狭义上来说hadoop 指 Apache 这款开源框架,它的核⼼组件有:1. hdfs(分布式⽂件系统)(负责⽂件读写)2. yarn(运算资源调度系统)(负责为MapReduce程序分配运算硬件资源)3. MapReduce(分布式运算编程框架)扩展:关于hdfs集群: hdfs集群有⼀个name node(名称节点),类似zookeeper的leader(领导者),namenode记录了⽤户上传的⼀些⽂件分别在哪些DataNode上,记录了⽂件的源信息(就是记录了⽂件的名称和实际对应的物理地址),name node有⼀个公共端⼝默认是9000,这个端⼝是针对客户端访问的时候的,其他的⼩弟(跟随者)叫data node,namenode和datanode会通过rpc进⾏远程通讯。
Yarn集群: yarn集群⾥的⼩弟叫做node manager,MapReduce程序发给node manager来启动,MapReduce读数据的时候去找hdfs(datanode)去读。
(注:hdfs集群和yarn集群最好放在同⼀台机器⾥),yarn集群的⽼⼤主节点resource manager负责资源调度,应(最好)单独放在⼀台机器。
⼴义上来说,hadoop通常指更⼴泛的概念--------hadoop⽣态圈。
当下的 Hadoop 已经成长为⼀个庞⼤的体系,随着⽣态系统的成长,新出现的项⽬越来越多,其中不乏⼀些⾮ Apache 主管的项⽬,这些项⽬对 HADOOP 是很好的补充或者更⾼层的抽象。
hadoop集群配置文件与功能对应解析以三个节点的集群为例:总括:nodemanager ,datanode --> slavesresourcemanager ----------> yarnnamenode ---------------> core-site详细解析:主机名称备注 IP地址功能hadoop01 Master 192.168.211.134 NameNode、DataNode、NodeManager、ResourceManagerhadoop02 Slave 192.168.211.129 SecondaryName Node、DataNode、NodeManager、hadoop03 Slave 192.168.211.140 DataNode、NodeManager所有机子都需要配置1.JDK2.SSH免登陆3.Hadoop集群网关地址;192.168.211.1一:NameNode(core-site.xml,这里配哪一台,哪一台启动namenode),相应的在hdfs-site.xml中的dfs.http.address下对应的value值也要写这一台并在之后加50070端口,如hadoop01:50070<name>fs.defaultFS</name><!--配置hdfs系统的地址--><value>hdfs://hadoop01:8020</value>(在哪一台配,namenode就在哪一台启动)二:ResourceManager(yarn-site.xml,这里配哪一台,哪一台启动ResourceManager)两个相对应。
<name>yarn.resourcemanager.hostname</name><value>hadoop01</value>三:DataNode、NodeManager决定于:slaves文件。
尚硅谷大数据技术之Hadoop(生产调优手册)(作者:尚硅谷大数据研发部)版本:V3.3第1章HDFS—核心参数1.1 NameNode内存生产配置1)NameNode内存计算每个文件块大概占用150byte,一台服务器128G内存为例,能存储多少文件块呢?128 * 1024 * 1024 * 1024 / 150Byte ≈9.1亿G MB KB Byte2)Hadoop2.x系列,配置NameNode内存NameNode内存默认2000m,如果服务器内存4G,NameNode内存可以配置3g。
在hadoop-env.sh文件中配置如下。
HADOOP_NAMENODE_OPTS=-Xmx3072m3)Hadoop3.x系列,配置NameNode内存(1)hadoop-env.sh中描述Hadoop的内存是动态分配的# The maximum amount of heap to use (Java -Xmx). If no unit # is provided, it will be converted to MB. Daemons will# prefer any Xmx setting in their respective _OPT variable.# There is no default; the JVM will autoscale based upon machine # memory size.# export HADOOP_HEAPSIZE_MAX=# The minimum amount of heap to use (Java -Xms). If no unit # is provided, it will be converted to MB. Daemons will# prefer any Xms setting in their respective _OPT variable.# There is no default; the JVM will autoscale based upon machine # memory size.# export HADOOP_HEAPSIZE_MIN=HADOOP_NAMENODE_OPTS=-Xmx102400m(2)查看NameNode占用内存[atguigu@hadoop102 ~]$ jps3088 NodeManager2611 NameNode3271 JobHistoryServer2744 DataNode3579 Jps[atguigu@hadoop102 ~]$ jmap -heap 2611Heap Configuration:MaxHeapSize = 1031798784 (984.0MB)(3)查看DataNode占用内存[atguigu@hadoop102 ~]$ jmap -heap 2744Heap Configuration:MaxHeapSize = 1031798784 (984.0MB)查看发现hadoop102上的NameNode和DataNode占用内存都是自动分配的,且相等。
Hadoop 学习(⼆)Hadoop 配置⽂件参数详解Hadoop 运⾏模式分为安全模式和⾮安全模式,在这⾥,我将讲述⾮安全模式下,主要配置⽂件的重要参数功能及作⽤,本⽂所使⽤的Hadoop 版本为2.6.4。
etc/hadoop/core-site.xml范例:1 <configuration >2 <property >3 <name >fs.defaultFS </name >4 <value >hdfs://192.168.1.100:900</value >5 <description >192.168.1.100为服务器IP 地址,其实也可以使⽤主机名</description >6 </property >7 <property >8 <name >io.file.buffer.size </name > 9 <value >131072</value >10 <description >该属性值单位为KB ,131072KB 即为默认的64M </description >11 </property >12 </configuration > etc/hadoop/hdfs-site.xml配置NameNode范例:1 <configuration >2 <property >3 <name >dfs.replication </name >4 <value >1</value >5 <description >分⽚数量,伪分布式将其配置成1即可</description >6 </property >7 <property >8 <name >.dir </name >9 <value >file:/usr/local/hadoop/tmp/namenode </value >10 <description >命名空间和事务在本地⽂件系统永久存储的路径</description >11 </property >12 <property >13 <name >node.hosts </name >14 <value >datanode1, datanode2</value >15 <description >datanode1, datanode2分别对应DataNode 所在服务器主机名</description >16 </property >17 <property >18 <name >dfs.blocksize </name >19 <value >268435456</value >20 <description >⼤⽂件系统HDFS 块⼤⼩为256M ,默认值为64M </description >21 </property >22 <property >23 <name >node.handler.count </name >24 <value >100</value >25 <description >更多的NameNode 服务器线程处理来⾃DataNodes 的RPCS </description >26 </property >27 </configuration >配置DataNode参数属性值解释fs.defaultFS NameNode URI hdfs://host:port/io.file.buffer.size 131072SequenceFiles ⽂件中.读写缓存size 设定参数属性值解释.dir 在本地⽂件系统所在的NameNode 的存储空间和持续化处理⽇志如果这是⼀个以逗号分隔的⽬录列表,然 后将名称表被复制的所有⽬录,以备不时 需。
Hadoop平台技术介绍潘司群北京邮电大学计算机学院网络工程专业soulpsq@摘要:本文主要介绍了hadoop平台的两个关键技术,分布式文件系统(HDFS)和分布式计算系统(map/reduce)。
通过介绍其技术演进、核心算法、主要应用场景、所能解决问题以及发展状况等来大致展开文章内容,为今后实践学习相关知识积累了一定的理论基础。
我参考了很多文章,但在本文中并没有任何原文抄袭,所有语言都均由笔者自己组织,有部分数据(两到三处)为引用而来也注明了出处。
与此同时,一定也会有很多解释欠妥甚至错误的地方,并且有很多原理理解得还很肤浅,无法做出更加深入的解释,这些都希望学长能够给出一些建议,我也希望在今后的实践中能加深对所学理论知识的理解。
引言:随着google在文件系统(GFS)、数据库(BigTable)以及并行计算(MapReduce)领域的三大论文的问世,云计算也终于从一个模糊的概念走向了技术的实体化。
不过google并没有再接再厉公布其技术细节与核心,于是就催生了hadoop这样一个开源平台的出现。
说起hadoop, 不得不提一下它的创始人Doug Cutting,他是著名的全文检索引擎lucene(国内的很多项目都有该技术的影子)和搜索引擎nutch 的发起者,当然它们也都是开源的。
正是由于Doug Cutting等人的之前的工作,才使得我们能够有机会接触并学习到搜索引擎等曾经神秘莫测的技术。
总的来说,Hadoop其实就是google技术的开源平台,hadoop的分布式文件系统HDFS、数据库系统Hbase以及分布式计算系统Map/Reduce(这个名都没变···)就是对google的GFS, BigTalbe 以及MapReduce的开源实现,在本文中,我主要介绍的是组成Hadoop 的最为重要的HDFS和Map/Reduce两项关键技术。
一. 分布式计算框架Map/ReduceMap/Reduce是一个分布式的编程模型,它源自于函数式的编程思想,函数式编程并不是一种编程语言,也没有固定不变的模式,它很多的时候指的是一种编程的理念,在严格的函数式编程中,函数几乎被用于一切,甚至是最简单的变量计算,但是在实际中,函数式风格的代码往往是作为一部分而为整体程序来服务,有关于函数式编程更详细的内容,推荐阅读参考文章[4]。
Hadoop是什么, Hadoop都需要做什么?Hadoop原是Hadoop开发者的孩子给自己的大象玩具起的名字。
因为原有的数据存储和处理工具对于处理互联网泡沫之后开始出现的海量数据显得力不从心, 所以开发了Hadoop。
首先,谷歌提出了MapReduce构架,它能够应对来自整合全球信息任务所产生的数据流,并使这些数据变得具有很高的可访问性。
此后,在2005年雅虎开发了基于MapReduce构架的Hadoop。
它作为Apache许可协议下的一个开源工具于2007年被正式发布。
几年来,Hadoop已经变成了一个超大规模的操作系统,尤其是应用于时下产生的海量数据所进行的分布式并行处理。
像通常的操作系统一样,Hadoop包括完整的文件系统,可编写程序,以及分布式管理这些程序并返回计算结果。
Hadoop支持能同时运行在低廉硬件设备构建的大型集群上的数据密集型分布式应用程序。
它是根据Apache v2的许可协议发布。
Hadoop网络可靠稳定并且扩展度很高,它可以用来查询海量数据集。
Hadoop是用Java所编写的,这意味着它可以在任何平台上运行,并被全球性分销商和已经在Hadoop之上构建了其他软件层面的大数据技术供应商所使用。
Hadoop分布式文件系统(HDFS)这个功能使Hadoop变得非常有用。
这是Hadoop的存储系统,它把数据分解处理成称之为”块”的较小部分。
这些块随后被分布于整个集群。
这种数据分布允许映射(Map)和化简(Reduce)后的功能被执行于更小的子集,而不是在一个大的数据集上。
这提高了效率,节约了处理时间, 提高了处理海量数据所需的可扩展性。
MapReduce是一个软件框架和模型,可以处理和检索并行存储在Hadoop系统上的海量数据。
MapReduce的函数库已经被用多种编程语言所编写,所以Hadoop能与他们配合工作。
另外,MapReduce可以处理结构化和非结构化数据。
MapReduce的工作分两个步骤。
Hadoop记录-Hadoop集群重要监控指标通⽤监控指标对于每个RPC服务应该监控RpcProcessingTimeAvgTime(PRC处理的平均时间)通常hdfs在异常任务突发⼤量访问时,这个参数会突然变得很⼤,导致其他⽤户访问hdfs时,会感觉到卡顿,从⽽影响任务的执⾏时间CallQueueLength(RPC Call队列的长度)如果callqueue队列数值⼀直处于较⾼的⽔平,例如对于NN来说CallQueue的长度等于handler*100,也就是说NN可能收到了⼤量的请求或者server在处理rpc请求时耗时很长,导致call堆积等进程JVM监控MemHeapUsedM(堆内存使⽤监控)通过监控改参数可以查看进程的gc时间和gc发⽣之后释放多少内存和进程的内存使⽤情况ThreadsBlocked(线程阻塞数量)分析当问题发⽣时进程的线程的阻塞状况ThreadsWaiting(线程等待数量)分析当问题发⽣时进程的线程的等待状况NameNode监控指标TotalFiles(总的⽂件数量)监控和预警⽂件数的总量,可以通过其看出是否有任务突然⼤量写⽂件和删除⼤量⽂件TotalBlocks(总的block数量)表⽰集群的block数量,作⽤同上PercentUsed(集群hdfs使⽤百分⽐)监控集群的hdfs的使⽤情况,使⽤率不宜太⾼,因为需要预留磁盘空间给任务计算使⽤BlockPoolUsedSpace(集群该namespace的hdfs使⽤容量⼤⼩)可以监控不同namespace的hdfs的使⽤情况Total(集群hdfs总容量⼤⼩)显⽰集群整体容量情况Used(集群hdfs已使⽤的容量⼤⼩)集群hdfs使⽤情况,可以预警是否需要增加机器和删除⽆⽤数据NumLiveDataNodes(存活的DN数量)NumDeadDataNodes(丢失的DN数量)丢失节点,如果过多可能会引起丢块VolumeFailuresTotal(坏盘的数量)应该设定阀值,达到⼀定数量时处理MissingBlocks(丢失的block数量)丢失重要的块会引起任务报错DataNode监控指标ReadBlockOpAvgTime(读取block的平均时间)可选的监控选项,如果该机器在某个时段平均时间突然升⾼,可能⽹络有打满或磁盘读取速度存在问题WriteBlockOpAvgTime(写数据块的平均时间)可选的监控选项ResouceManager监控指标NumActiveNMs(NM存活节点数量监控)NumLostNMs(NM丢失节点数量监控)有时节点会因为磁盘空间不⾜等原因导致进程退出,虽然集群具有容错机制,但当丢失节点达到⼀定数量之后,集群计算资源相当于减少了,所以应当设置合理的阀值报警处理NumUnhealthyNMs(NM不健康节点数量监控)通常会因为磁盘问题导致节点不健康集群应⽤数量监控AppsSubmitted(app提交数量)之前集群有出现过app的id号,⽣成很慢的情况,可以通过改数值和其他参数去判断提交减少的问题AppsRunning(app的运⾏数量)可以通过改值去对⽐历史同⼀时刻的app的运⾏数量是否差异很⼤,去判断集群到底是否可能出现问题AppsPending(app等待数量)如果该数值很⾼,或则在某个queue的该数值很⾼,有可能是因为app所在的队列资源满了,导致app⽆法获取资源,启动master,如果资源没满,可能的⼀个原因是app的所在队列⽆法在rm中有先获取资源,或资源被预留所导致等AppsCompleted(app完成数量)应⽤完成的数量监控AppsKilled(app被kill的数量)应⽤被kill的数量监控AppsFailed(app失败数量)如果AppsFailed数量升⾼,说明集群的存在导致app批量失败的操作集群资源使⽤量情况监控AllocatedMB(已分配的内存⼤⼩)如果集群⽤户反应任务运⾏缓慢,应该及时检查队列资源的使⽤情况和hdfs的响应速度AllocatedVCores(已分配的核数量)有时任务分配不上去,有可能是核数已经⽤完AllocatedContainers(已分配的Container数量)已分配的Container数量AvailableMB(可⽤的内存⼤⼩)有遇到过在集群反复重启NM后,导致集群计算可⽤资源错误的bugAvailableVCores(可能的核数量)PendingMB(等待分配的内存⼤⼩)PendingVCores(等待分配的核数量)PendingContainers(等待分配的Container数量)如果等待分配的Container⽐⽇常出现多出很多,应该检查集群是否有问题ReservedMB(预留的内存⼤⼩)之前遇到因为spark任务申请很⼤的资源,导致把整个集群的资源都预留的情况,这时应该适当的调整最⼤的分配Container的内存⼤⼩ReservedVCores(预留的核数量)同上ReservedContainers(预留的Container数量)Container因为资源不⾜,优先预留节点集群分配数据监控AssignContainerCallNumOps(分配Container的次数)我们可以通过该监控可以知道RM每秒能够分配多少的Container,在⾼峰期是否可能存在瓶颈,经过社区的patch优化之后,RM的分配Container最⼤值可以达到4k+AssignContainerCallAvgTime(分配Container的平均时间)如果时间突然变⼤,说明可能遇到分配瓶颈等其他问题ContinuousScheduleCallNumOps(连续调度次数)如果该数值没有增加,说明连续调度线程出现问题ContinuousScheduleCallAvgTime(连续调度平均时间)连续调度的平均时间NodeUpdateCallNumOps(NM⼼跳汇报次数)NodeUpdateCallAvgTime(⼼跳汇报处理时间)rm资源分配是通过每⼀次NM的⼼跳进⾏分配和领取Container的,如果该时间变长,则分配速度可能会存在下降Linux机器监控⽹络带宽情况通过监控DN的⽹络情况可以查找,该节点是否在当时是热节点,⼀般情况下如果在该机器的⽹络情况已经满了,会影响任务的正常运⾏速度机器负载情况⽹络丢包情况机器内存使⽤情况。