接触Hadoop两年的经验之谈

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

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

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

1. 选择Cloudera CDH部署你的Cluster

动机

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

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

CDH基于稳定版Apache Hadoop,并应用了最新Bug修复或者Feature的Patch。Cloudera常年坚持季度发行Update版本,年度发行Release版本,更新速度比Apache官方快,而且在实际使用过程中CDH表现无比稳定,并没有引入新的问题。

Cloudera官方网站上安装、升级文档详细,省去Google时间。

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角色

(责任编辑:蒙遗善)

时间: 2024-10-26 06:05:56

接触Hadoop两年的经验之谈的相关文章

Spark与Hadoop两大技术趋势解析

文章讲的是Spark与Hadoop两大技术趋势解析,开源数据集如今深受开发者喜爱,比如谷歌的Images dataset数据集,YouTube-8M数据集等.通过对数据集里的数据进行分析,可以发现许多隐藏信息,比如客户喜好.未知相关性,市场趋势以及其他有用的商业信息.大数据分析对企业降低成本,准确掌握市场趋势,更快完成产品迭代十分有用.说到大数据分析,16年基本被Spark与Hadoop霸屏,到底是什么样的魔力让它们足以引起大数据世界的波动,未来又会如何发展呢? Apache Spark Apa

云计算-Hadoop两小时快速入门指南-第一部分

买了一本书<Hadoop权威指南>第二版,书写的真不错,就是思维跳跃性太大,看了没两章,是前后狂翻(没办法,他一说就是看附录A安装Hadoop,看附录C准备NCDC天气数据) 附录A需要研究一下,根据自己的需求确定下来,学习阶段也就本地模式就够了,不要玩什么集群模式,浪费感情,浪费计算机资源.具体过程上网搜搜吧,好多人写,不过你需要的就是最基本的模式,只要安装Java.解压缩Hadoop,配置hadoop的bin目录到path环境变量.就可以了.集群了之类的,不要玩那些没用的,入门以后再说.我

Spark VS Hadoop 两大大数据分析系统深度解读

大数据,无论是从产业上,还是从技术上来看,都是目前的发展热点.在中国,政府控制着80%的数据,剩下的多由"BAT"这样的大公司拥有,中小企业如何构建自己的大数据系统?其他企业如何建设自己的大数据系统? 推荐两大应用最广泛.国人认知最多的Apache开源大数据框架系统:Spark Hadoop Spark:速度快.易于使用Spark以性能见长,但是它也因易用性而小有名气,原因是它随带易于使用的API,支持Scala(原生语言).Java.Python和Spark SQL.Spark SQ

Hadoop学习笔记之:Hadoop的两个部分

本文大部分内容都是从官网Hadoop上来的.其中有一篇介绍HDFS的pdf文档,里面对Hadoop介绍的比较全面了.我的这一个系列的Hadoop学习笔记也是从这里一步一步进行下来的,同时又参考了网上的很多文章,对学习Hadoop中遇到的问题进行了归纳总结. 言归正传,先说一下Hadoop的来龙去脉.谈到Hadoop就不得不提到Lucene和Nutch.首先,Lucene并不是一个应用程序,而是提供了一个纯Java的高性能全文索引引擎工具包,它可以方便的嵌入到各种实际应用中实现全文搜索/索引功能.

Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别

初接触Hadoop技术的朋友肯定会对它体系下寄生的个个开源项目糊涂了,我敢保证Hive,Pig,HBase这些开源技术会把你搞的有些糊涂,不要紧糊涂的不止你一个,如某个菜鸟的帖子的疑问,when to use Hbase and when to use Hive?-.请教了^_^没关系这里我帮大家理清每个技术的原理和思路. Pig 一种操作hadoop的轻量级脚本语言,最初又雅虎公司推出,不过现在正在走下坡路了.当初雅虎自己慢慢退出pig的维护之后将它开源贡献到开源社区由所有爱好者来维护.不过现

Hadoop专业解决方案-第13章 Hadoop的发展趋势

一.前言: 非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,经过两周的努力,已经有啦初步的成果,目前第13章 Hadoop的发展趋势小组已经翻译完成,在此对:hbase-深圳-18361.旅人AQUARION表示感谢. 二.意见征集: 本章节由<Hadoop专业解决方案群:313702010>翻译小组完成,为小组校验稿,已经通过小组内部校验通过,特此面向网络征集意见,如果对本章节内容有任何异议,请在评论中加以说明,说明时,请标明行号,也可以以修订的方

从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构)

 文章转载自: http://blog.csdn.net/v_july_v/article/details/670407 从hadoop框架与MapReduce模式中谈海量数据处理 前言     几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显兴奋,觉得它们很是神秘,而神秘的东西常能勾起我的兴趣,在看过介绍它们的文章或论文之后,觉得Hadoop是一项富有趣味和挑战性的技术,且它还牵扯到了一个我更加感兴趣的话题:海量数据处理.     由此,最近凡是空闲时

Hadoop生态上hive、pig、hbase 关系与区别

初接触Hadoop技术的朋友肯定会对它体系下寄生的个个开源项目糊涂了,我敢保证Hive,Pig,http://www.aliyun.com/zixun/aggregation/13713.html">HBase这些开源技术会把你搞的有些糊涂,不要紧糊涂的不止你一个,如某个菜鸟的帖子的疑问,when to use Hbase and when to use Hive?....请教了^_^没关系这里我帮大家理清每个技术的原理和思路. Pig 一种操作hadoop的轻量级脚本语言,最初又雅虎公司

Hadoop MapReduce开发最佳实践

前言 本文是Hadoop最佳实践系列第二篇,上一篇为<Hadoop管理员的十个最佳实践>. MapRuduce开发对于大多数程序员都会觉得略显复杂,运行一个WordCount(Hadoop中hello word程序)不仅要熟悉MapRuduce模型,还要了解Linux命令(尽管有Cygwin,但在Windows下运行MapRuduce仍然很麻 烦),此外还要学习程序的打包.部署.提交job.调试等技能,这足以让很多学习者望而退步. 所以如何提高MapReduce开发效率便成了大家很关注的问题.