`
aubdiy
  • 浏览: 698369 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

运维经验分享:Hadoop管理员的十个最佳实践 (转载)

 
阅读更多

此文来自 http://os.51cto.com/art/201209/355125.htm  特此转载备忘

 

接触Hadoop有两年的时间了,期间遇到很多的问题,既有经典的NameNode和JobTracker内存溢出故障,也有HDFS存储小文件问题,既有任务调度问题,也有MapReduce性能问题.遇到的这些问题有些是Hadoop自身的缺陷(短板),有些则是使用的不当。

在解决问题的过程中,有时需要翻源码,有时会向同事、网友请教,遇到复杂问题则会通过mail list向全球各地Hadoop使用者,包括Hadoop Committer(Hadoop开发者)求助。在获得很多人帮助后,自己将遇到问题和心得整理成文,希望本文可以对那些焦头烂额的Hadoop新手们有所帮助,少走笔者的弯路。

PS. 本文基于 Cloudera CDH 3u4(同Apache Hadoop 1.0)编写。相关推荐配置为官方推荐值或者笔者经验数值,它不是绝对的,可能会因为不同的应用场景和硬件环境有所出入。

1. 选择Cloudera CDH部署你的Cluster

动机

大多数管理员都是从Apache Hadoop开始学习。笔者最开始也使用Apache版本Hadoop进行开发和部署工作,但接触到Cloudera CDH后,我发现它可以使管理员的工作更简单,不仅可以获得最新的特性和Bug修复,有时也会带来令人惊喜的性能改善。

CDH为什么更好?笔者罗列了以下几点:

  1. CDH基于稳定版Apache Hadoop,并应用了最新Bug修复或者Feature的Patch。Cloudera常年坚持季度发行Update版本,年度发行Release版本,更新速度比Apache官方快,而且在实际使用过程中CDH表现无比稳定,并没有引入新的问题。
  2. Cloudera官方网站上安装、升级文档详细,省去Google时间。
  3. CDH支持Yum/Apt包,Tar包,RPM包,Cloudera Manager四种方式安装,总有一款适合您。官方网站推荐Yum/Apt方式安装,笔者体会其好处如下:
  • 联网安装、升级,非常方便。当然你也可以下载rpm包到本地,使用Local Yum方式安装。
  • 自动下载依赖软件包,比如要安装Hive,则会级联下载、安装Hadoop。
  • Hadoop生态系统包自动匹配,不需要你寻找与当前Hadoop匹配的Hbase,Flume,Hive等软件,Yum/Apt会根据当前安装Hadoop版本自动寻找匹配版本的软件包,并保证兼容性。
  • 自动创建相关目录并软链到合适的地方(如conf和logs等目录);自动创建hdfs, mapred用户,hdfs用户是HDFS的最高权限用户,mapred用户则负责mapreduce执行过程中相关目录的权限。

推荐指数:★★★

推荐理由:获取最新特性和最新Bug修复;安装维护方便,节省运维时间。

2. Hadoop集群配置与管理

安装和维护Hadoop集群涉及大量的管理工作,包括软件安装,设备管理(crontab、iptables等)、配置分发等。

对于小型集群软件分发和节点管理可以使用PDSH这款软件,它可以通过免密钥的SSH将文件分发到目标服务器,以及为一组目标设备发送命令并获得反馈。如果是大型集群或者硬件配置差别很大的集群,推荐使用puppet这样的工具帮助你维护配置文件,或者通过Cloudera Manager以GUI的方式的管理集群(注意:Clodera Manager不是开源软件,免费版最多支持50个节点)。

推荐指数:★★★

推荐理由:提高运维效率

3. 开启SecondaryNameNode

SecondaryNameNode(下称SNN)的主要功能是工作是帮助NameNode(下称NN)合并编辑日志,然后将合并后的镜像文件copy回NN,以减少NN重启时合并编辑日志所需的时间。SNN不是NN的热备,但是通过以下步骤可以实现将SNN切换为NN的目的。首先,SNN节点上导入从NN Copy过来的镜像文件,然后修改SNN机器名和IP与NN一致,最后重启集群。

特别注意的是SNN的内存配置要与NN一致,因为合并编辑日志的工作需要将metadata加载到内存完成。另外,不仅仅是SNN,任何保存NN镜像的节点都可以通过上面步骤变为NN,只是SNN更适合罢了。

推荐指数:★★★

推荐理由:减少NN重启导致集群服务中断时间;NN节点故障后,SNN充当NN角色

4. 使用Ganglia和Nagios监控你的集群

当运行一个大型mapreduce 作业时,我们通常非常关心该作业对TaskTracker(下称TT)CPU、内存、磁盘,以及整个网络的带宽情况,这时候就需要Ganglia这个工具为我们生成相关图表来诊断、分析问题。

Ganglia可以监控集群状态,但当你的服务器down机或者某个TT挂掉,它却无法通知到你,这时我们可以使用Nagios这款告警软件,它可以配置邮件告警和短息告警。通过编写plugins,可以实现自己的监控功能。我们的集群目前做了如下监控:

  1. NameNode、JobTracker内存
  2. DataNode和TaskTracker运行状态
  3. NFS服务状态
  4. 磁盘使用情况
  5. 服务器负载状态

推荐指数:★★★

推荐理由:Ganglia可以帮你记录集群状态,方便诊断问题;Nagios可以再遇到问题时第一时间通知你。

5. 设置好内存至关重要

Hadoop集群安装完毕后,第一件事就是修改bin/hadoop-evn.sh文件设置内存。主流节点内存配置为32GB,典型场景内存设置如下:

  1. NN: 15-25 GB  
  2. JT:2-4GB  
  3. DN:1-4 GB  
  4. TT:1-2 GB,Child VM 1-2 GB  

集群的使用场景不同相关设置也有不同,如果集群有大量小文件,则要求NN内存至少要20GB,DN内存至少2GB。

推荐指数:★★★★★

推荐理由:几个组件中NN对内存最为敏感,它有单点问题,直接影响到集群的可用性;JT同样是单点,如果JT内存溢出则所有MapReduce Job都无法正常执行。

6. 管理员玩转MapReduce

Hadoop原生MapReduce需要Java语言编写,但是不会Java也没问题,通过Hadoop streaming框架管理员可以使用Python,Shell,Perl等语言进行MapReduce开发,但更简单的办法是安装和使用Hive或者Pig。

推荐指数:★★★

推荐理由:减少运维时间,快速响应各种ad-hot需求和故障诊断。

7. NameNode HA

前面已经说过,NN是整个集群可能出现的单点故障。

Hadoop通过在hdfs.site.xml文件的dfs.name.dir属性指定保持的metadata路径,如果希望保持到多个路径,可以使用逗号分割配置多个路径。

  1. <property> 
  2.     <name>dfs.name.dir</name> 
  3.     <value>/data/cache1/dfs/nn,/data/cache2/dfs/nn</value> 
  4. </property> 

Hadoop官方推荐配置为metadata配置多个path,其中包含一个NFS的路径。但根据笔者一次集群严重故障经验,即使这样,还是导致了所有镜像文件损坏,包括SNN上的镜像文件,所以定期备份一个可用的副本还是很有必要的。

推荐指数:★★★★★

推荐理由:Cloudera3uX和Apache1.0的NN单点问题是大家最头痛问题之一,多些准备,少许痛苦。

8. 使用firewall阻止坏人进入

Hadoop的安全控制非常简单,只包含简单的权限,即只根据客户端用户名,决定使用权限。它的设计原则是:“避免好人做错事,但不阻止坏人做坏事”。

如果你知道某台NN的IP和端口,则可以很轻松获取HDFS目录结构,并通过修改本机机器用户名伪装成HDFS文件所属owner,对该文件进行删除操作。

通过配置kerberos,可以实现身份验证。但很多管理员使用更简单有效的办法——通过防火墙对访问IP进行控制。

推荐指数:★★★★★

推荐理由:安全无小事,防范于未然。

9. 开启垃圾箱(trash)功能

动机

我曾经犯下一个错误,在我加班非常累,大脑稍有混乱的时候,不小心删除执行了一个命令“hadoop fs -rmr /xxx/xxx”,没有删除提示,几TB的数据,一下子就没有了。简直让我崩溃,后悔莫及。这时你多希望有个时间机器可以让HDFS恢复到删除前的状态。

trash功能就是这个时间机器, 它默认是关闭的,开启后,被你删除的数据将会mv到操作用户目录的".Trash"文件夹,可以配置超过多长时间,系统自动删除过期数据。这样一来,当操作失误的时候,可以把数据mv回来。开启垃圾箱步骤如下:

vi core-site.xml ,添加下面配置,value单位为分钟。

  1. <property>    
  2.   <name>fs.trash.interval</name>    
  3.   <value>1440</value>    
  4. </property>   

笔者 在CDpu4下不用重启Namenode就可以生效。开启垃圾箱后,如果希望文件直接被删除,可以在使用删除命令时添加“–skipTrash” 参数,如下:

  1. hadoop fs –rm –skipTrash /xxxx 

推荐指数:★★★★★

推荐理由:想要时间机器吗?

10. 去社区寻找帮助

Hadoop是一个非常优秀的开源项目,但它仍存有很多尚未解决的问题,诸如,NN,JT单点问题,JT挂死问题,Block在小文件下汇报效率低下等问题。此时可以通过如下渠道找到可以帮助你的人,笔者几次集群严重故障都是通过Cloudera公司的google user group直接获得几位 committer的帮助。通常前一天提问,第二天就会有反馈。下面是两个能够帮助的你的社区,当然你也可以帮助其他人:

Apache hadoop的mail list :

http://hadoop.apache.org/mailing_lists.html

Cloudera CDH google group:

https://groups.google.com/a/cloudera.org/forum/#!forum/cdh-user

推荐指数:★★★★★

推荐理由:没有人比软件作者更熟悉Hadoop本身,去社区求助,帮你解决很多自己无法跨越的问题。

分享到:
评论

相关推荐

    阿里的hadoop运维经验分享

    阿里的hadoop运维经验分享。内容: hadoop集群搭建 监控 集群性能调优 Hadoop如何被搞垮的

    hadoop运维经验分享

    2012年华东运维技术大会上分享的"Hadoop运维经验"涵盖了Hadoop生态系统中的多个关键方面,旨在帮助IT专业人士更好地管理和优化大规模数据处理环境。以下是对这些运维经验的详细解读: 1. **集群规划与搭建**:...

    Apache Hadoop:Hadoop集群运维与优化.docx

    Apache Hadoop:Hadoop集群运维与优化.docx

    大规模Hadoop集群运维经验谈

    ### 大规模Hadoop集群运维经验谈 #### 阿里巴巴Hadoop集群运维实践 在当前的大数据时代背景下,企业对于数据处理能力的需求日益增长,Hadoop作为主流的大数据处理框架之一,其运维能力成为了确保大数据平台稳定...

    高可用性的HDFS:Hadoop分布式文件系统深度实践

    1.4.1 Hadoop的元数据备份方案 1.4.2 Hadoop的SecondaryNameNode方案 1.4.3 Hadoop的Checkpoint ode方案 1.4.4 Hadoop的BackupNode方案 1.4.5 DRDB方案 1.4.6 FaceBook的AvatarNode方案 1.5 方案优缺点比较 第2章 ...

    大数据平台技术实施与运维规范-Hadoop 分册.docx

    大数据平台技术实施与运维规范-Hadoop 分册 大数据平台技术实施与运维规范-Hadoop 分册是关于Hadoop的大数据平台技术实施和运维规范的详细指南。该指南涵盖了Hadoop的大数据平台技术的基础知识、组件描述、系统环境...

    hadoop部署与集群运维

    里面讲了一些hadoo是如何部署与运维的知识点,希望对初学者有所帮助!

    hadoop 文档:Hadoop开发者下载

    Hadoop是大数据处理领域的一个核心框架,主要用于分布式存储和计算。这个文档集合应该是关于Hadoop开发者的下载资源,可能包含了源代码、开发工具和其他相关资料。由于没有具体的描述,我将根据一般Hadoop开发者的...

    数据算法: Hadoop+Spark大数据处理技巧.pdf

    书中可能还会涵盖一些高级主题,比如YARN(Hadoop的资源管理系统)和HBase(Hadoop上的NoSQL数据库),以及如何将Hadoop和Spark集成,以实现更高效的数据处理流程。此外,可能会讨论数据清洗、预处理、ETL(提取、...

    机器学习的新引擎:Hadoop与Spark的最佳实践探索

    Hadoop是一个开源框架,由Apache软件基金会开发,用于在普通硬件集群上存储和处理大量数据。它的核心组件包括: 1. **Hadoop Distributed File System (HDFS)** - 一个分布式文件系统,设计用于在多个服务器上存储...

    《Hadoop系统搭建及项目实践》课程标准.pdf

    《Hadoop系统搭建及项目实践》课程,正是在这个背景下应运而生,旨在培养学生的Hadoop分布式系统的搭建和应用能力,为学生进入大数据时代打下坚实的基础。 Hadoop作为一个开源框架,能够在普通的硬件上运行,通过...

    卢亿雷:Hadoop在广告监测技术的实践

    在当前的大数据时代,Hadoop作为一个开源的分布式存储和计算框架,在各类数据处理场景中扮演着重要的角色。特别是在广告监测技术领域,Hadoop提供了强大的数据存储与处理能力,支撑着广告数据分析的高效运行。接下来...

    Apache Hadoop:Hadoop资源管理器YARN详解.docx

    Apache Hadoop:Hadoop资源管理器YARN详解.docx

    Hadoop datanode启动失败:Hadoop安装目录权限的问题

    $ sudo chown -R hadoop:hadoop /opt/hadoop-0.2.203.0 ``` 这里`/opt/hadoop-0.2.203.0`是Hadoop的具体安装路径,应根据实际情况进行调整。 2. **重新启动Hadoop服务**:修改完所有权后,需要重新启动Hadoop...

    高可用性的HDFS:Hadoop分布式文件系统深度实践

    本书《高可用性的HDFS: Hadoop分布式文件系统深度实践》专注于深入探讨和实践HDFS的HA问题,涵盖了HDFS元数据解析、Hadoop元数据备份方案、Hadoop Backup Node方案、AvatarNode解决方案以及最新的HA解决方案Cloudrea...

    hadoop集群维护手册.pdf

    Hadoop 集群维护手册 本文档提供了 Hadoop 集群维护的详细指南,涵盖了集群的启动、停止、增加存储量、平衡数据、升级 Hadoop 版本等多方面的内容。 一、Hadoop 集群启动和停止命令 Hadoop 集群可以使用 start-...

    Linux运维入门Hadoop实验参照手册二(安装Hadoop)

    Linux运维入门Hadoop实验参照手册二(安装Hadoop)

    朱金生:Hadoop的模式与实践.docx

    朱金生:Hadoop的模式与实践.docx

    演讲: Hadoop与数据分析

    可能还会有示例代码或实际案例分析,帮助听众理解如何在实践中运用Hadoop。 综合以上信息,这篇演讲可能涵盖以下知识点: 1. **Hadoop概述**:解释Hadoop是什么,为什么需要Hadoop,以及它在大数据处理中的作用。 ...

    百度云链接打包:HadoopSpark企业应用实战

    - **Hadoop**:Hadoop是一个能够对大量数据进行分布式处理的软件框架。它由Apache基金会所开发,能够在普通的商用硬件上运行,这使得它可以廉价地扩展到成千上万台服务器,并且能够处理PB级别的数据。Hadoop的核心...

Global site tag (gtag.js) - Google Analytics