Hadoop集群管理--保证集群平稳地运行

本篇介绍为了保证Hadoop集群平稳地运行,需要深入掌握的知识,以及一些管理监控的手段,日常维护的工作。

HDFS

永久性数据结构

对于管理员来说,深入了解namenode,辅助namecode和datanode等HDFS组件如何在磁盘上组织永久性数据非常重要。

洞悉各文件的用法有助于进行故障诊断和故障检出。

namenode的目录结构

namenode被格式化后,将在${dfs.namenode.name.dir}/current 目录下,产生如下的目录结构:VERSION、edits、fsimage、fstime。

只有深入学习namenode的工作原理,才能理解这些文件的用途。对于Hadoop集群管理员来说,这是有必要的。

辅助namenode的目录结构

在大型集群中,辅助namenode需要运行在一台专用机器上。保持和namenode基本一致的目录结构和数据,在主namenode发生故障时,可以从辅助namenode恢复数据。

datanode的目录结构

datanode不是格式化时创建的,而是启动时自动创建的。datanode的关键文件和目录如下所示:

dfs.data.dir 是在hadoop1.X中定义的,在Hadoop2.X中是在hdfs-site.xml中定义的 fs.datanode.data.dir 。

安全模式

namenode启动时,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作。

一系列操作之后,如果满足“最小复本条件”,namenode会在30秒内退出安全模式。所谓的最新复本调价指的是在整个文件系统中有99.9%的块满足最小复本条件(默认值时1,由dfs.replication.min属性设置)。

在启动一个刚刚格式化的HDFS集群时,因为系统中还没有任何块,所以namenode不会进入安全模式。

安全模式的属性设置如下:

安全模式操作命令:

hadoop dfsadmin -safemode get

hadoop dfsadmin -safemode wait

hadoop dfsadmin -safemode leave

hadoop dfsadmin -safemode enter

调整日志级别

log4j.logger.org.apache.hadoop.hdfs.server.namenode.FSNamesystem.audit=WARN

调整为INFO或者其他。

工具

dfsadmin工具

fsck工具

Hadoop提供fsck工具来检查HDFS中文件的健康状况。该工具会查找那些所有datanode中均缺失的块以及过少或过多复制的块。

使用命令:

hadoop fsck /

hadoop fsck / -move

hadoop fsck / -delete

datanode块扫描器

各个datanode运行一个快扫描器,定期检测本节点上的所有块,从而在客户端读到坏块之前及时地检测和修复坏块。可以依靠DataBlockScanner所维护的块列表依次扫描块,查看是否存在校验和错误。扫描器还使用节流机制,来维持datanode的磁盘带宽(换句话说,块扫描器工作时仅占用一小部分磁盘带宽)。

默认情况下,块扫描器每隔三周(504小时)就会检测块,以应对可能的磁盘故障,这个周期由dfs.datanode.scan.period.hours属性设置。损坏的块被报给namenode,并被即时修复。

访问网页:http://datanode:50075/blockScannerReport 获取该datanode的块检测报告。加 ?Listblocks 参数会在报告中列出该datanode上所有的块及其最新验证状态。

均衡器

均衡器(balancer)程序是一个Hadoop守护进程,它将块从忙碌的datanode移到相对空闲的datanode,从而重新分配块。同时坚持块复本放置策略,将复本分散到不同机架,以降低数据损坏率。

操作一直执行,直到均衡,即每个datanode的使用率(该节点上已使用的空间和空间容量之间的比率)和集群的使用率(集群中已使用的空间与集群的空间容量之间的比率)非常接近,差距不超过给定的阀值。

启动均衡器指令:start-blancer.sh ,-threshold参数指定阀值(百分比格式),默认10%。在任何时刻,集群中都只运行一个均衡器。

在不同节点之间复制数据的带宽也是受限的,默认是1MB/s,可以通过hdfs-site.xml中的dfs.balance.bandwidthPerSec属性指定(单位是字节)。

监控

监控是系统管理的重要内容。监控的目标在于检测集群在何时未提供所期望的服务。主守护进程是最需要监控的,包括主namenode、辅助namenode和jobtracker。datanode和tasktracker经常出现故障;在大型集群中,故障率尤其高。因此,集群需要保留额外的容量,如此一来,即使有一小部分节点宕机,也不影响整个系统的运作。

管理员也可以定期运行一些测试作业,以检查集群的健康状况。

日志

所有Hadoop守护进程都会产生日志文件,这些文件非常有助于查明系统中发生的事件。

默认情况下,Hadoop生成的系统日志文件存放在$HADOOP_INSTALL/logs目录之中,也可以通过hadoop-env.sh文件中的HADOOP_LOG_DIR来进行修改。通常可以把日志文件存放在/var/log/hadoop目录中。实现的办法就是在hadoop-env.sh中加入一行:export HADOOP_LOG_DIR=/var/log/hadoop ,如果日志目录不存在,则会首先创建该目录,如果创建失败,请检查hadoop用户是否有权创建该目录。

设置日志级别

故障排查过程中,临时设置日志级别非常有益,有两种方法,网页和命令行。例如要对某台机器的JobTracker设置为DEBUG级别,可以如下:

a、访问http://jobtracker-host:50030/logLevel,将org.apache.hadoop.mapred.JobTracker属性设置为DEBUG级别

b、hadoop daemonlog -setlevel jobtracker-host:50030 org.apache.hadoop.mapred.JobTracker DEBUG

获取堆栈轨迹

Hadoop守护进程提供一个网页,对正在守护进程的JVM中运行着的线程执行线程转储(Thread-dump)。例如:http://jobtracker-host:50030/stacks获取jobtracker的线程转储。

度量

HDFS和MapReduce守护进程收集的事件和度量相关的信息,这些信息统称为度量(metric)。例如,各个datanode会收集如下度量(还有更多):写入的字节、块的复本数、客户端发起的读操作请求数。

度量从属于特定的上下文,目前,Hadoop使用dfs、mapred、rpc、jvm 这4个上下文。

度量在conf/hadoop-metrics.properties文件中配置,默认情况下,所有上下文都被配置成不发布度量。

常用的度量类:FileContext、GangliaContext、NullContextWithUpdateThread、CompositeContext。

java管理扩展(JMX)

JMX是一个标准的JAVA API,可监控和管理应用。Hadop包括多个托管bean(MBean),可以将Hadoop度量发布给支持JMX的应用,如下:

JDK自带的JConsole工具可以浏览JVM中MBean,许多第三方的监控和报警系统(如Nagios和Hyperic)均可查询MBean,因此通过这些系统使用JMX监控一个Hadoop集群就很平常,前提是启用远程访问JMX功能和合理设置集群的安全级别,包括密码认证、SSL连接和SSL客户端认证等。

比较普遍的方案是,同时使用Ganglia和Nagios这样的警告系统来监控Hadoop系统。Ganglia擅长高效地收集大量度量,并以图形化界面呈现;Nagios和类似系统擅长在某项度量的关键阀值被突破之后及时报警。

维护和升级

关于这部分,临时先不深入学习,在工作过程中如有涉猎,再返回此处进一步记录。

Hadoop集群管理--保证集群平稳地运行

时间: 2024-08-24 17:48:47

Hadoop集群管理--保证集群平稳地运行的相关文章

Hadoop集群管理--保证集群平稳地执行

本篇介绍为了保证Hadoop集群平稳地执行.须要深入掌握的知识.以及一些管理监控的手段,日常维护的工作. HDFS 永久性数据结构 对于管理员来说.深入了解namenode,辅助namecode和datanode等HDFS组件怎样在磁盘上组织永久性数据很重要. 洞悉各文件的使用方法有助于进行故障诊断和故障检出. namenode的文件夹结构 namenode被格式化后,将在${dfs.namenode.name.dir}/current 文件夹下.产生例如以下的文件夹结构:VERSION.edi

从Storm学习集群管理

简介 Storm是当前最流行的分布式实时计算平台,使用场景是根据Storm定义的接口规范编写一个实时处理流,然后提交到Storm平台处理,Storm平台解析该处理流,使其并行.分布式地在集群中运行,并附带相应的状态监控.本文主要描述Storm的集群管理这块的内容,处理流的相关接口逻辑规范不作涉及. Storm集群监控管理的目标是管理和监控用户提交的处理流作业(类似于Hadoop监控管理mr-job). Storm系统架构 Storm遵循经典的master-slave架构,nimbus节点即为ma

大规模集群管理工具Borg

Google的大规模集群管理工具Borg 概述 Google的Borg系统是一个集群管理工具,在它上面运行着成千上万的job,这些job来自许许多多不同的应用,并且跨越多个集群,而每个集群又由大量的机器构成. Borg通过组合准入控制,高效的任务打包,超额负载以及基于进程级别性能隔离的机器共享从而实现高利用率.它支持那些高可用的应用,它们的运行时特性能够最小化错误恢复时间,它们的调度策略降低了相关错误发生的可能性.为了简化用户的使用,Borg提供了一个声明工作规范语言,名称服务一体化机制,实时j

集群管理要点

第一章:RD/OP 实际上在写同一个分布式系统 1.每个应用都是集群的一部分,每个RD都有一套自己的集群管理方式 有的设计得非常简单:一个配置文件,读取一下数据库的ip和端口 有的设计得非常复杂:使用zookeeper这样的名字服务,自己做监控,自己部署代码,自己做服务发现等 RD的视角很少考虑运维的问题,RD视角出发的集群管理基本上是以程序能够运行起来为标准的. RD没法不考虑集群管理,因为没有这个,程序是无法独立运行的. RD没法太多的去考虑集群管理,因为大部分的应用的开源的,无法假设实际的

MSP项目群管理

在全球商业规则巨变的今天,当今掌控变革最有效的方法是项目群管理(Program Management), 而英国政府提出的MSP (Managing Successful Programme),成功的项目群管理) 项目群管理体系正是这一前沿的代表,它综合了全球五百强企业项目群管理的优秀实践.通过对项目群进行管理,成功实现企业变革.MSP将项目群管理定义为:"协调组织.指导和实施一系列项目和转换活动的行为,目的是为了通过一系列变革成果,实现对业务具有战略重要性的收益".今日之中国,每一个

2 weekend110的zookeeper的原理、特性、数据模型、节点、角色、顺序号、读写机制、保证、API接口、ACL、选举、 + 应用场景:统一命名服务、配置管理、集群管理、共享锁、队列管理

在hadoop生态圈里,很多地方都需zookeeper. 启动的时候,都是普通的server,但在启动过程中,通过一个特定的选举机制,选出一个leader. 只运行在一台服务器上,适合测试环境:Zookeeper 的启动脚本在 bin 目录下:在启动脚本之前,还有几个基本的配置项需要配置一下, tickTime :这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个  tickTime  时间就会发送一个心跳:dataDir:顾名思义就是 Zookee

基于Hadoop的数据分析综合管理平台之Hadoop、HBase完全分布式集群搭建

能够将热爱的技术应用于实际生活生产中,是做技术人员向往和乐之不疲的事. 现将前期手里面的一个项目做一个大致的总结,与大家一起分享.交流.进步.项目现在正在线上运行,项目名--基于Hadoop的数据分析综合管理平台. 项目流程整体比较清晰,爬取数据(txt文本)-->数据清洗-->文本模型训练-->文本分类-->热点话题发现-->报表"实时"展示,使用到的技术也是当今互联网公司常用的技术:Hadoop.Mahout.HBase.Spring Data Had

第131讲:Hadoop集群管理工具均衡器Balancer 实战详解学习笔记

第131讲:Hadoop集群管理工具均衡器Balancer 实战详解学习笔记 为什么需要均衡器呢? 随着集群运行,具体hdfs各个数据存储节点上的block可能分布得越来越不均衡,会导致运行作业时降低mapreduce的本地性. 分布式计算中精髓性的一名话:数据不动代码动.降低本地性对性能的影响是致使的,而且不能充分利用集群的资源,因为导致任务计算会集中在部分datanode上,更易导致故障. balancer是hadoop的一个守护进程.会将block从忙的datanode移动到闲的datan

王家林的云计算分布式大数据Hadoop征服之旅:HDFS&MapReduce&HBase&Hive&集群管理

一:课程简介: 作为云计算实现规范和实施标准的Hadoop恰逢其时的应运而生,使用Hadoop用户可以在不了解分布式底层细节的情况下开发出分布式程序,从而可以使用众多廉价的计算设备的集群的威力来高速的运算和存储,而且Hadoop的运算和存储是可靠的.高效,的.可伸缩的,能够使用普通的社区服务器出来PB级别的数据,是分布式大数据处理的存储的理想选择. 本课程会助你深入浅出的掌握Hadoop开发(包括HDFS.MapReduce.HBase.Hive等),并且在此基础上掌握Hadoop集群的配置.维