《Hadoop开发者》第四期出品出品出品出品Hadoop技术论坛本期主编本期主编本期主编本期主编何忠育(Spork)编辑编辑编辑编辑皮冰锋(若冰)易剑(一见)贺湘辉(小米)王磊(beyi)代志远(国宝)柏传杰(飞鸿雪泥)何忠育(Spork)秘中凯美工美工美工美工////封面设计封面设计封面设计封面设计何忠育(Spork)网址网址网址网址@foxmail.comHadoop开发者第四期刊首语刊首语《Hadoop开发者》第四期,在千呼万呼中,终于艰难的出来。这是众多Hadoopor期望的一期,也是相对成熟的一期,本期的作者大多都具备在一线的Hadoop开发或应用经验,因此实践性较强。在这里,我要特别感谢所有无私分享经验的作者们,没有你们的支持和奉献就不可能有《Hadoop开发者》第四期。本期排版工作全靠何忠育(Spork)独立担当,在他的细心下,《Hadoop开发者》第四期才得以与大家见面。《Hadoop开发者》第四期的诞生是一个艰辛的过程,鲜有人乐意主动撰稿,就好比论坛里,常有人发帖求助,但少有人主动提供帮助。在征集到一期的稿件之后,又遇到了编辑、排版和审核的问题,大家都很忙,所以我要特别感谢《Hadoop开发者》团队成员中的Spork同学主动跳出来担当了排版工作,也要非常感谢皮冰锋(若冰)同学一字一字地审核每篇文章,并将发现的问题逐一标出来。虽然我们仍很业余,但不管怎样,《Hadoop开发者》第四期出来了,问题虽然很多,但仍希望可以给每一位Hadoopor带来一丝帮助,更希望有更多的技术爱好者加入分享的行列、开源的行列。Hadoop技术论坛站长:一见Hadoop开发者第四期目录-I-目录mooon............................................................................................................................................................1海量数据处理平台架构演变.......................................................................................................................4计算不均衡问题在Hive中的解决办法....................................................................................................15Join算子在Hadoop中的实现...................................................................................................................20配置Hive元数据DB为PostgreSQL........................................................................................................32ZooKeeper权限管理机制..........................................................................................................................36ZooKeeper服务器工作原理和流程...........................................................................................................39ZooKeeper实现共享锁..............................................................................................................................47Hadoop最佳实践........................................................................................................................................50通过Hadoop的API管理Job....................................................................................................................54Hadoop集群的配置调优............................................................................................................................60Hadoop平台的Java规范及经验...............................................................................................................63MapReduce开发经验总结.........................................................................................................................67Hadoop中的tar命令的实现......................................................................................................................70Hadoop技术论坛运营数据分享................................................................................................................92Hadoop开发者第四期mooon-1-mmmmooonooonooonooon一见*mooon取名为“飞越”或“飞月”的意思,也可叫“非月”,但非moon。在2009年,我对Hadoopmapreduce源代码进行了一段时间的系统化分析,在这个过程中,发觉mapreduce存在两大问题:数据倾斜和并行调度,并探索出一些解决方案。有点想将自己的想法付诸实践,但重实现一个mapreduce的工作量是非常大的,而且还依赖于分布式文件系统。我决定动手去做一些工作,但我不想仅仅奔着这个目标而来,而是希望每一点都能做到尽可能的多复用,按层划分是一个比较好的主意。mooon中的每一点每一步都结合了我近10年来的开发实践,特别是多年的分布系式统开发经验,但mooon不会参照任何一个现存的系统去做,而是由目标驱动。在这过程中会利用一些开源,并以独立的形式存在,如plugin_tinyxml方式,尽量保持第三方代码的独立性,这即是对他人劳动成果的尊重,也是避免系统走向臃肿的必要举措。本文将分四点对mooon做一个简单介绍,希望能对您了解mooon起到一点帮助作用:一、优势和特点作者简介:易剑,零二年毕业于湘潭工学院,曾就职于长沙创智、珠海金山和深圳华为。工作前半年的时间主要从事VC/Delphi开发,后转入Linux/C++开发。钟情于软件技术,多年不减,在2009年发起开源项目“飞月”。擅长软件架构设计,代码编写严谨,重视软件的可测试性、可观察性和可运营,重视代码的用户体验。掌握方法重要,领悟思想方为根本,超越面向对象和设计模式等方法,“简单”才是最为精髓的思想。联系方式:eyjianatqq.comHadoop开发者第四期mooon-2-二、分层结构三、基础类库四、公共组件Hadoop开发者第四期mooon-3-五、分布式平台Mooon的源代码放在GoogleCode网站上,可通过SVN下载,或直接在浏览器上查看,网址是:。同时,我也会在的一些情况。Hadoop开发者第四期海量数据处理平台架构演变-4-海量数据处理平台架构演变覃武权*新入职的小Q懵懵懂懂,误打误撞踏上了数据分析的康庄大道,上班第一天,听说自己的导师(王sir)是鼎鼎大名的数据分析王、业界泰斗,鸡冻不已,欣喜之情溢于言表。王sir果然是位大牛,大会小会开个不停。小Q来了一上午,只和王sir打了个照面,就再没见着他的影子。刚来也没人指导,小Q有点不知所措,于是,翻开自己带来的那本破旧的互联网数据分析专业书,温习下基础知识:一般网站把用户的访问行为记录以apach日志的形式记录下来了,这些日志中包含了下面一些关键字段:client_ipuser_idaccess_timeurlrefererstatuspage_sizeagent因为需要统一对数据进行离线计算,所以常常把它们全部移到同一个地方。简单算了一下:(1)网站请求数:1kw/天(2)每天日志大小:450Byte/行*1kw=4.2G,(3)日志存储周期:2年一天产生4.5G的日志,2年需要4.2G*2*365=3.0T为了方便系统命令查看日志,不压缩,总共需要3.0T的空间,刚好有一些2U的服务器,每台共1T的磁盘空间,为了避免系统盘坏掉影响服务器使用,对系统盘做了raid1;为了避免其他存放数据的盘坏掉导致数据无法恢复,对剩下的盘做了raid5。做完raid后,除去系统盘的空间,每台服务器你大概还有800G可以用于存储数据。先装满一台,再顺序装下一台,机器不会有浪费,可以满足需要,先放到这里来吧。于是所有的数据都汇聚到这几台LogBackup服务器上来了。数据从四个地区的Collector服务器上,跨IDC传输到LogBackup服务器上,因为刚起步,你偷了个懒,直接使用rsync进行传输,把传输模块的开发也给省下了。有了LogBackup服务器,离线统计就可以全部在这些服务器上进行了。在这套架构上,用wc、作者简介:jamesqin(覃武权),负责各种运营支撑和管理平台的架构及开发,致力于运维支撑体系的数据化、自动化、流程化建设。联系方式:jamesqinatviq.qq.comHadoop开发者第四期海量数据处理平台架构演变-5-grep、sort、uniq、awk、sed等系统命令,完成了很多的统计需求,比如统计访问频率较高的client_ip,某个新上线的的页面的referer主要是哪些网站。嗯,不错,老大如果问起这个网站的一些数据,回答起来绝对是游刃有余。^_^看书看得小有成就的小Q暗自窃喜,这时候王sir走过来关心下徒弟,小Q一激动,就把刚学的东东向王sir汇报了一番。王sir边听边点点头,称赞小Q懂的还真不少啊!“如果你的网站数据量再翻10倍,达到日志总行数1亿/天,这个架构还能支撑吗?”“这个,这……”突然一问,问懵了小Q,露馅了不是?小Q赶紧认了,“这个还真不知道,求师傅详解。”王sir看这徒弟如此积极好学,心里很是安慰,拿着笔在小Q的笔记本上边划边耐心讲道。当业务的迅猛发展,网站流量爆发增长,产品经理如果想从中获取更多的用户特征和用户信息,就需要我们这些数据分析人员从不同的日志中找到