paulwong

#

Hadoop管理员的十个最佳实践(转)

前言
接触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为什么更好?笔者罗列了以下几点:
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角色

4. 使用Ganglia和Nagios监控你的集群
当运行一个大型mapreduce 作业时,我们通常非常关心该作业对TaskTracker(下称TT)CPU、内存、磁盘,以及整个网络的带宽情况,这时候就需要Ganglia这个工具为我们生成相关图表来诊断、分析问题。
Ganglia可以监控集群状态,但当你的服务器down机或者某个TT挂掉,它却无法通知到你,这时我们可以使用Nagios这款告警软件,它可以配置邮件告警和短息告警。通过编写plugins,可以实现自己的监控功能。我们的集群目前做了如下监控:
NameNode、JobTracker内存
DataNode和TaskTracker运行状态
NFS服务状态
磁盘使用情况
服务器负载状态
推荐指数:★★★
推荐理由:Ganglia可以帮你记录集群状态,方便诊断问题;Nagios可以再遇到问题时第一时间通知你。

5. 设置好内存至关重要
Hadoop集群安装完毕后,第一件事就是修改bin/hadoop-evn.sh文件设置内存。主流节点内存配置为32GB,典型场景内存设置如下
NN: 15-25 GB JT:2-4GB DN:1-4 GB 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路径,如果希望保持到多个路径,可以使用逗号分割配置多个路径。
dfs.name.dir /data/cache1/dfs/nn,/data/cache2/dfs/nn 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单位为分钟。
fs.trash.interval 1440 笔者 在CDH3u4下不用重启Namenode就可以生效。开启垃圾箱后,如果希望文件直接被删除,可以在使用删除命令时添加“–skipTrash” 参数,如下:
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本身,去社区求助,帮你解决很多自己无法跨越的问题。

Cloudera简介:
公司是一家Hadoop软件服务公司,提供免费软件CDH和Cloudera Manager Free Edition,同时提供Hadoop相关资讯、培训、技术支持等服务。Hadoop创始人Dong Cutting在该公司任架构师,同时该公司拥有多名Apache Committer。

posted @ 2012-09-18 22:10 paulwong 阅读(343) | 评论 (0)编辑 收藏

Eclipse远程调试Tomcat下的Web应用程序(转)

  1. 安装解压版本的Tomcat,因为现在好像Tomcat的Windows安装版目录下没有catalina.sh(.bat)文件了;

  2. 修改bin/catalina.sh(.bat)中关于JPDA_ADDRESS端口的地方,比如默认情况下,此项配置是JPDA_ADDRESS="8000",现在将其修改为我们想使用的端口,这里就默认使用8000吧;

  3. 启动Tomcat,在命令行模式下进入${CATALINA_HOME}/bin目录,输入catalina.sh(bat) jpda start 启动Eclipse,选择你想要Debug的类并设置断点,然后选择Debug工具栏下的Debug子菜单(Debug...),在弹出的Debug窗口中,在左边的菜单项中选择远程调试(Remote Java Application),然后输入机器名和端口,比如说localhost和8000,然后Apply并且开始Debug;

  4. 打开浏览器,输入需要调试的页面,此时会激活Eclipse的Debug窗口,此时就可以进行Debug了。

posted @ 2012-09-17 10:51 paulwong 阅读(491) | 评论 (0)编辑 收藏

HBASE基本概念

象博客这些普通数据,有标题,内容,作者等信息,要进行保存时,如果是关系数据库,数据的属性,如标题、内容等只保存一次,建表时,实际数据则每增加一篇博客,就增加一条数据,这种方式进行查询时必须通过SQL语句,还需要知道栏位名称。

如果用HBASE这种数据库,存储时是属性和数据一起存进数据库,如每增加一篇博客,如数据和数据的属性一起存进数据库,是以KEY-VALUE的键值对的形式保存,即一条数据由若干个键值对组成,查询的时候把所有的数据加载进来,通过MAPREDUCE的算法进行过滤,无需SQL语句,因此也叫作NO-SQL数据库。

HBase 官方文档中文版
http://abloz.com/hbase/book.html

HBase MapReduce实例分析
http://www.taobaotesting.com/blogs/qa?bid=13914

业务开发测试HBase之旅一:HTable基本概念
http://www.taobaotesting.com/blogs/qa?bid=13850

业务开发测试HBase之旅五:HBase MapReduce测试实战
http://www.taobaotesting.com/blogs/qa?bid=13939

HBase 线上问题分析小记
http://www.taobaotesting.com/blogs/2158

Hadoop HBase 单机环境简单配置教程
http://blog.nosqlfan.com/html/311.html

hadoop和hbase分布式配置及整合eclipse开发
http://wenku.baidu.com/view/8712a661caaedd3383c4d392.html

Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
http://javacrazyer.iteye.com/blog/1186881

posted @ 2012-09-09 00:38 paulwong 阅读(830) | 评论 (0)编辑 收藏

HADOOP 资源

四号程序员
http://www.coder4.com/archives/tag/hadoop

官方WIKI
http://wiki.apache.org/hadoop/

分布式环境搭建
http://hadoop.apache.org/docs/r1.0.3/single_node_setup.html

HADOOP的ECLIPSE插件
http://code.google.com/p/hadoop-eclipse-plugin/

这篇文章对Map/Reduce原理讲的很清楚。
http://www.chinacloud.cn/download/Tech/MapReduceOverview.pdf

这个是Apache关系Hadoop的文档,安装、开发示例都有。
http://hadoop.apache.org/common/docs/r0.19.2/cn/mapred_tutorial.html

HBase入门
http://my.oschina.net/coolbash/blog/79487

HADOOP实战谈文章
http://heipark.iteye.com/category/126118


Oozie简介(可以将几个HADOOP JOP连在一起执行)
http://www.infoq.com/cn/articles/introductionOozie

hadoop高级技术在搜索框中的应用:这块的有很多人都想了解,特别抽了个时间, 做了套视频教程:

第一部分:http://kuai.xunlei.com/d/wtViAgJ.JQDJoR9Rd09

第二部分:http://kuai.xunlei.com/d/wtViAgI0JgBJpB9R178

第三部分:http://kuai.xunlei.com/d/wtViAgJSJwDXpx9R30b


http://wiki.ubuntu.org.cn/%E5%88%A9%E7%94%A8Cloudera%E5%AE%9E%E7%8E%B0Hadoop


HADOOP监测工具
http://www.htools.co/
http://www.cnblogs.com/xguo/archive/2013/06/02/3113510.html

国内最全最详细的hadoop2.2.0集群的HA高可靠的最简单配置
http://my.oschina.net/superwu/blog/196066

posted @ 2012-09-08 15:57 paulwong 阅读(242) | 评论 (0)编辑 收藏

WordCount的一个变种版本…Hadoop

     摘要: 统计域名(实际是host)的计数器。输入:一个文件夹中有一堆的文本文件,内容是一行一个的url,可以想像为数据库中的一条记录流程:提取url的domain,对domain计数+1输出:域名,域名计数代码如下:MapperCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter...  阅读全文

posted @ 2012-09-08 15:30 paulwong 阅读(264) | 评论 (0)编辑 收藏

HBASE

http://www.searchtb.com/2011/01/understanding-hbase.html

http://hbase.info/2011/07/06/building-hadoop-and-hbase-for-hbase-maven-application-development

Build Your First Hadoop project with Maven
http://www.tikalk.com/java/build-your-first-hadoop-project-maven

Maven Archetypes Updated!
http://blog.mafr.de/2012/07/01/maven-archetypes-updated/

HBase based OLAP engine
http://code.google.com/p/olap4cloud/wiki/UserGuide

Hadoop快速部署工具 EasyHadoop
http://www.oschina.net/p/easyhadoop

HBase MapReduce实例分析
http://www.taobaotesting.com/blogs/qa?bid=13914

posted @ 2012-09-06 01:39 paulwong 阅读(164) | 评论 (0)编辑 收藏

云计算

http://my.oschina.net/leejun2005/blog/75941

posted @ 2012-09-02 16:48 paulwong 阅读(254) | 评论 (0)编辑 收藏

实用日文翻译网址

要把汉字翻成平假名的网址
http://www.jptranslate.com/cgi-bin/hiragana.cgi

平假名转换片假名
http://o-oo.net.cn/hiragana-katakana.asp

假名转换罗马字
http://www.romaji.org/

posted @ 2012-08-30 22:18 paulwong 阅读(187) | 评论 (0)编辑 收藏

架构的性能要求


、性能要求:
Ø 支持同时在线用户量(访问网站页面):10000人以上;
Ø 支持并发量:5000;
Ø 高峰负载时的平均响应时间(指每秒并发访问在4000以上):
u 页面访问时间(用户实测):1-5秒;
u 运行操作类响应时间(用户实测,50000个用户量):1秒-10秒。
Ø 日常运行时的平均响应时间:
u 页面访问时间(用户实测):1-3秒;
u 运行操作类响应时间(用户实测,100000个用户量):1秒-6秒。
Ø 有效运行时间:
u 7x24小时:99%;
u 每年因系统本身问题导致的宕机次数:≤4;
u 因系统本身问题出现故障时的恢复时间:≤24小时。

这种要求有人能做得到吗?

posted @ 2012-08-30 21:26 paulwong 阅读(267) | 评论 (0)编辑 收藏

期货知识文档

http://doc.mbalib.com/view/a837594d63cbd5141426d4143d4293eb.html

http://www.worldlinkfutures.com/stoplimitorder.htm

http://www.investopedia.com/terms/s/stop-limitorder.asp#axzz25JtVGDRO

http://wiki.mbalib.com/w/index.php?title=Category:%E6%9C%9F%E8%B4%A7%E6%9C%AF%E8%AF%AD&until=Y

A Complete Guide to the
Futures Markets: Fundamental Analysis, Technical Analysis, Trading, Spreads, and
Options

http://www.invest-store.com/cgi-bin/wlf-bin/moreinfo.cgi?division=books&page=toc&item=2626

Inside the Financial
Futures Markets 3rd Edition

http://www.invest-store.com/cgi-bin/wlf-bin/moreinfo.cgi?division=books&page=toc&item=2591

English --> http://www.cmegroup.com/education/files/ED-004_IntroToFuturesBrochure.pdf  

Chinese --> http://www.cmegroup.com/education/files/CME-ED-007_IntroToFuturesBrochure_Chinese_FINAL_SR.pdf



posted @ 2012-08-30 18:38 paulwong 阅读(255) | 评论 (0)编辑 收藏

仅列出标题
共112页: First 上一页 74 75 76 77 78 79 80 81 82 下一页 Last