标签 hadoop 下的文章

hadoop招聘

职位名称:Hadoop工程师
职位年薪:20-30万工作地点:北京
招聘企业:某知名上市互联网公司所属部门:技术部所属行业:互联网·电子商务,基金·…汇报对象:开发经理企业性质:国内上市公司下属人数:0企业规模:5000-10000人
岗位职责
岗位职责:
1. 将投入到对hadoop、hive、hbase等相关产品进行预言、开发、应用中;
2. 解决海量数据不断增长面临的挑战,解决业务需求。
任职资格:
1. 熟练使用java集合类,IO,并发编程;
2. 熟悉jvm运行机制及内存管理;
3. 熟悉Linux/Unix操作系统,熟悉脚本编程(Shell/Perl/Python其中一种);
4. 了解HADOOP原理,对于分布式系统有一定了解;
5. 有优秀的学习能力,具有强烈的主观能动性;
6. 计算机或相关专业本科或以上学历。
岗位要求
学历要求:全日制统招本科或以上性别要求:不限语言要求:普通话专业要求:不限年龄要求:25-35总工作年限:2年以上
任职资格的具体描述:
岗位职责:
1. 将投入到对hadoop、hive、hbase等相关产品进行预言、开发、应用中;
2. 解决海量数据不断增长面临的挑战,解决业务需求。
任职资格:
1. 熟练使用java集合类,IO,并发编程;
2. 熟悉jvm运行机制及内存管理;
3. 熟悉Linux/Unix操作系统,熟悉脚本编程(Shell/Perl/Python其中一种);
4. 了解HADOOP原理,对于分布式系统有一定了解;
5. 有优秀的学习能力,具有强烈的主观能动性;
6. 计算机或相关专业本科或以上学历。
薪酬福利
职位年薪:20-30万薪资构成:底薪年假福利:国家标准社保福利:国家标准
—————————————————————————————————————————–
职位名称:Hadoop开发工程师
职位年薪:15-18万工作地点:北京
招聘企业:某互联网广告公司所属部门:IT部门所属行业:互联网·电子商务,广告·…汇报对象:部门负责人企业性质:私营·民营企业下属人数:0企业规模:100-499人
岗位职责
1、负责搭建hadoop集群,并维护与管理;
2、负责hadoop平台上的数据存储,数据维护和优化;
3、负责编写pig,hive等分析脚本;
4、负责把分析结果导入到数据库中,为BI提供基础数据分析。
岗位要求
学历要求:全日制统招本科或以上性别要求:不限语言要求:普通话专业要求:不限年龄要求:25-40总工作年限:3年以上
任职资格的具体描述:
1、本科以上学历,3年以上相关工作经验;
2、对数据结构、算法有深刻理解;
3、熟悉linux开发环境;
4、熟悉python、shell、perl中的一种;
5、有hadoop集群部署和开发经验;
6、熟悉pig,hive,hbase, spooq,flume,scribe(优先考虑);
7、熟悉java开发(精通优先考虑)。
薪酬福利
职位年薪:15-18万薪资构成:底薪年假福利:国家标准社保福利:国家标准居住福利:住房补贴

Hadoop大事记

2004年– 最初的版本(现在称为HDFS和MapReduce)由Doug Cutting和Mike Cafarella开始实施。
2005年12月– Nutch移植到新的框架,Hadoop在20个节点上稳定运行。
2006年1月– Doug Cutting加入雅虎。
2006年2月– Apache Hadoop项目正式启动以支持MapReduce和HDFS的独立发展。
2006年2月– 雅虎的网格计算团队采用Hadoop。
2006年4月– 标准排序(10 GB每个节点)在188个节点上运行47.9个小时。
2006年5月– 雅虎建立了一个300个节点的Hadoop研究集群。
2006年5月– 标准排序在500个节点上运行42个小时(硬件配置比4月的更好)。
06年11月– 研究集群增加到600个节点。
06年12月– 标准排序在20个节点上运行1.8个小时,100个节点3.3小时,500个节点5.2小时,900个节点7.8个小时。
07年1月– 研究集群到达900个节点。
07年4月– 研究集群达到两个1000个节点的集群。
08年4月– 赢得世界最快1 TB数据排序在900个节点上用时209秒。
08年10月– 研究集群每天装载10 TB的数据。
09年3月– 17个集群总共24 000台机器。
09年4月– 赢得每分钟排序,59秒内排序500 GB(在1400个节点上)和173分钟内排序100 TB数据(在3400个节点上)。

Hadoop发展历史

Hadoop这个名字不是一个缩写,它是一个虚构的名字。该项目的创建者,Doug Cutting如此解释Hadoop的得名:”这个名字是我孩子给一头吃饱了的棕黄色大象命名的。我的命名标准就是简短,容易发音和拼写,没有太多的意义,并且不会被用于别处。小孩子是这方面的高手。Googol就是由小孩命名的。”
Hadoop及其子项目和后继模块所使用的名字往往也与其功能不相关,经常用一头大象或其他动物主题(例如:”Pig”)。较小的各个组成部分给与更多描述性(因此也更俗)的名称。这是一个很好的原则,因为它意味着可以大致从其名字猜测其功能,例如,jobtracker 的任务就是跟踪MapReduce作业。
从头开始构建一个网络搜索引擎是一个雄心勃勃的目标,不只是要编写一个复杂的、能够抓取和索引网站的软件,还需要面临着没有专有运行团队支持运行它的挑战,因为它有那么多独立部件。同样昂贵的还有:据Mike Cafarella和Doug Cutting估计,一个支持此10亿页的索引需要价值约50万美元的硬件投入,每月运行费用还需要3万美元。 不过,他们相信这是一个有价值的目标,因为这会开放并最终使搜索引擎算法普及化。
Nutch项目开始于2002年,一个可工作的抓取工具和搜索系统很快浮出水面。但他们意识到,他们的架构将无法扩展到拥有数十亿网页的网络。在 2003年发表的一篇描述Google分布式文件系统(简称GFS)的论文为他们提供了及时的帮助,文中称Google正在使用此文件系统。 GFS或类似的东西,可以解决他们在网络抓取和索引过程中产生的大量的文件的存储需求。具体而言,GFS会省掉管理所花的时间,如管理存储节点。在 2004年,他们开始写一个开放源码的应用,即Nutch的分布式文件系统(NDFS)。
2004年,Google发表了论文,向全世界介绍了MapReduce。 2005年初,Nutch的开发者在Nutch上有了一个可工作的MapReduce应用,到当年年中,所有主要的Nutch算法被移植到使用MapReduce和NDFS来运行。
Nutch中的NDFS和MapReduce实现的应用远不只是搜索领域,在2006年2月,他们从Nutch转移出来成为一个独立的Lucene 子项目,称为Hadoop。大约在同一时间,Doug Cutting加入雅虎,Yahoo提供一个专门的团队和资源将Hadoop发展成一个可在网络上运行的系统(见后文的补充材料)。在2008年2月,雅虎宣布其搜索引擎产品部署在一个拥有1万个内核的Hadoop集群上。
2008年1月,Hadoop已成为Apache顶级项目,证明它是成功的,是一个多样化、活跃的社区。通过这次机会,Hadoop成功地被雅虎之外的很多公司应用,如Last.fm、Facebook和《纽约时报》。(一些应用在第14章的案例研究和Hadoop维基有介绍,Hadoop维基的网址为http://wiki.apache.org/hadoop/PoweredBy。)
有一个良好的宣传范例,《纽约时报》使用亚马逊的EC2云计算将4 TB的报纸扫描文档压缩,转换为用于Web的PDF文件。 这个过程历时不到24小时,使用100台机器运行,如果不结合亚马逊的按小时付费的模式(即允许《纽约时报》在很短的一段时间内访问大量机器)和 Hadoop易于使用的并行程序设计模型,该项目很可能不会这么快开始启动。
2008年4月,Hadoop打破世界纪录,成为最快排序1TB数据的系统。运行在一个910节点的群集,Hadoop在209秒内排序了1 TB的数据(还不到三分半钟),击败了前一年的297秒冠军。同年11月,谷歌在报告中声称,它的MapReduce实现执行1TB数据的排序只用了68 秒。 在2009年5月,有报道宣称Yahoo的团队使用Hadoop对1 TB的数据进行排序只花了62秒时间。
构建互联网规模的搜索引擎需要大量的数据,因此需要大量的机器来进行处理。Yahoo!Search包括四个主要组成部分:Crawler,从因特网下载网页;WebMap,构建一个网络地图;Indexer,为最佳页面构建一个反向索引;Runtime(运行时),回答用户的查询。WebMap是一幅图,大约包括一万亿条边(每条代表一个网络链接)和一千亿个节点(每个节点代表不同的网址)。创建和分析此类大图需要大量计算机运行若干天。在 2005年初,WebMap所用的基础设施名为Dreadnaught,需要重新设计以适应更多节点的需求。Dreadnaught成功地从20个节点扩展到600个,但需要一个完全重新的设计,以进一步扩大。Dreadnaught与MapReduce有许多相似的地方,但灵活性更强,结构更少。具体说来,每一个分段(fragment),Dreadnaught作业可以将输出发送到此作业下一阶段中的每一个分段,但排序是在库函数中完成的。在实际情形中,大多数WebMap阶段都是成对存在的,对应于MapReduce。因此,WebMap应用并不需要为了适应MapReduce而进行大量重构。
Eric Baldeschwieler(Eric14)组建了一个小团队,我们开始设计并原型化一个新的框架(原型为GFS和MapReduce,用C++语言编写),打算用它来替换Dreadnaught。尽管当务之急是我们需要一个WebMap新框架,但显然,标准化对于整个Yahoo! Search平台至关重要,并且通过使这个框架泛化,足以支持其他用户,我们才能够充分运用对整个平台的投资。
与此同时,我们在关注Hadoop(当时还是Nutch的一部分)及其进展情况。2006年1月,雅虎聘请了Doug Cutting,一个月后,我们决定放弃我们的原型,转而使用Hadoop。相较于我们的原型和设计,Hadoop的优势在于它已经在20个节点上实际应用过。这样一来,我们便能在两个月内搭建一个研究集群,并着手帮助真正的客户使用这个新的框架,速度比原来预计的快许多。另一个明显的优点是Hadoop 已经开源,较容易(虽然远没有那么容易!)从雅虎法务部门获得许可在开源方面进行工作。因此,我们在2006年初设立了一个200个节点的研究集群,我们将WebMap的计划暂时搁置,转而为研究用户支持和发展Hadoop。

Hadoop主要子项目

* Hadoop Common: 在0.20及以前的版本中,包含HDFS、MapReduce和其他项目公共内容,从0.21开始HDFS和MapReduce被分离为独立的子项目,其余内容为Hadoop Common
* HDFS: Hadoop 分佈式文件系統 (Distributed File System) - HDFS (Hadoop Distributed File System)
* MapReduce:并行计算框架,0.20前使用 org.apache.hadoop.mapred 旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API
* HBase: 类似Google BigTable的分布式NoSQL列数据库。(HBase 和 Avro 已经于2010年5月成为顶级 Apache 项目[1])
* Hive:数据仓库工具,由Facebook贡献。
* Zookeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。
* Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。

Hadoop标准化安装工具 Cloudera

Cloudera  的定位在于 Bringing Big Data to the Enterprise with Hadoop
Cloudera为了让Hadoop的配置标准化,可以帮助企业安装,配置,运行hadoop以达到大规模企业数据的处理和分析。
既然是给企业使用,Cloudera的软件配置不是采用最新的hadoop 0.20,而是采用了Hadoop 0.18.3-12.cloudera.CH0_3的版本进行封装,并且集成了facebook提供的hive,yahoo提供的pig等基于 hadoop的sql实现接口,使得这些软件的安装,配置和使用的成本降低并且进行了标准化。当然除了集成和封装这些成熟的工具外,Cloudera一个 比较有意思的工具是sqoop,目前这个工具没有独立提供。

雅虎计划重构 Hadoop-MapReduce,解决性能瓶颈

最近雅虎开发者博客发了一篇介绍Hadoop重构计划的文章。因为他们发现当集群的规模达到4000台机器的时候,Hadoop遭遇到扩展性的瓶颈,目前他们正准备开始对Hadoop进行重构。
Mapreduce面临的瓶颈
从集群大小和工作量中观察到的趋势是,MapReduce的JobTracker需要彻底改革,以解决其可扩展性,内存消耗,线程模型,可靠性和性能的几个缺陷。Mapreduce在过去5年框架不断的修复过程中发现成本在不断增加。目前Hadoop各个模块的紧耦合使得在现有设计的基础上继续改进变得举步维艰。这一点早已在社区内达成共识,所以他们正准备开始对Hadoop进行重构。不过从操作的角度来看,任何轻微的或修复Bug带来的巨大改动都会让Hadoop MapReduce强制进行全系统的升级。
下一代MapReduce构思
据该博客文章表示,新架构的主要思想是把原来JobTracker的功能一分为二:ResourceManager管理资源的分配,ApplicationMaster管理任务监控和调度。ResourceManager与原有的JobTracker类似,作为整个集群的控制中心;而ApplicationMaster则是每个application都有一个单独的实例,application是用户提交的一组任务,它可以由一个或多个job组成。每台slave运行一个NodeManager实例,功能类似于原来的TaskTracker。
1.层次化的管理
目前Hadoop的资源管理和任务调度都是在JobTracker中进行的,它需要复制所有task的资源分配和调度。而task是非常微观的调度单位,通常每个job都会产生成百上千个task,而系统同一时刻又会有大量的job同时运行,这让JobTracker的管理负担变得非常繁重。新架构将这一管理任务下放到各个ApplicationMaster,ResourceManager只管理每个application的资源分配。这样即使系统中存在很多application,ResourceManager的负担也能控制在一个合理的程度;这也是新架构最大的优势。
2.ApplicationMaster应该在Master还是Slave上运行?
新架构实际上将管理和调度的任务转移到ApplicationMaster上来,如果ApplicationMaster所在的节点挂掉,整个任务都需要重做。原来JobTracker可以跑在相对稳定的Master上,出错概率低;现在ApplicationMaster跑在好些Slave上,出错的概率就非常高了。而且新架构打破了原来简单的Master-Slave模型,节点之间的通讯和依赖关系变得更加复杂,增加了网络优化的难度。如果把ApplicationMaster全都放在Master上执行,则Master的负担会非常重(需要处理各种持续性的heartbeat和爆发性的如getTaskCompletionEvents这样的rpc请求),不过这个问题可以通过分布式的Master解决(Google已经实现)。
3.资源管理方式
原来单纯地以简单静态的slot作为资源单位确实不能很好描述集群的资源状况。新架构将更细粒度地控制CPU,内存,磁盘,网络这些资源。每个task都将在Container中执行,并只能使用其所分配到的系统资源。资源的分配可以用静态估计动态调整的方式实现。
4.支持其他编程模型
由于任务的管理和调度都由ApplicationMaster进行,ApplicationMaster又相对独立于系统的其他模块,用户甚至可以部署自己的ApplicationMaster,实现对其他编程模型的支持。这使得其他不大适合用MapReduce实现的应用程序也能在同一个Hadoop集群中运行。
可伸缩性实现
可伸缩性对当前的硬件发展趋势是非常重要的,目前MapReduce集群已经有4000台主机。然而2009年的集群中的4000台主机(8核心,16GB内存,4TB硬盘)只有2011年集群中4000台主机(16核心,48GB内存,24TB内存)一半的处理能力。此外,考虑到运营成本,迫使集群中运行6000台主机,以后可能会更多。
可用性实现
ResourceManager —— ResourceManager使用Apache的ZooKeeper实现故障转移。当ResourceManager失败时,可以通过Apache的ZooKeeper迅速恢复集群状态。在故障转移后,所有队列运行的应用程序都会重新启动。
ApplicationMaster —— MapReduce的NextGen支持为ApplicationMaster应用进行特定的检查。MapReduce的ApplicationMaster可以从失败中恢复,通过自身恢复到HDFS保存的状态。
兼容性实现
MapReduce的NextGen使用Wire-兼容协议(wire-compatible protocols)来允许不同版本的服务器和客户端进行信息交换。在未来的版本中,这一特性将一直保留,以保证集群升级后仍然兼容。
集群实现
MapReduce NextGen Resource使用常规的概念调度并将资源分配给各个应用程序。集群中的每台机器概念上都是由资源组成的,如内存,I/O带宽等。
支持其他的编程模型
MapReduce的NextGen提供了一个完全通用的计算框架,以支持MapReduce和其他范例。
该架构最终允许用户能够实现自定义ApplicationMaster,它可以要求ResourceManager的资源利用他们。因此,它支持多种编程,如MapReduce,MPI,Master-Worker以及Iterative models在Hadoop上。并允许为每个应用使用适当的框架。这对于应用程序(如K-Means, Page-Rank)在自定义框架外运行MapReduce。
结论
Apache的Hadoop,特别是Hadoop的MapReduce是一个非常成功的开源的处理大数据集的项目。我们建议Hadoop的MapReduce提高可用性、提高集群使用,并提供范式的编程架构以及
实现快速的发展。Yahoo将和Apache基金会一起将Hadoop在处理大数据的能力提高到一个新水平。

Spring Hadoop 1.0.0 M1 发布

Spring Hadoop 发布了首个里程碑版本,Spring Hadoop 提供了在 Spring 框架下编写 Hadoop 应用的支持。
Spring Hadoop 支持:

  • Hadoop 配置
  • MapReduce, Streaming Jobs and Tool
  • HBase 配置
  • Hive server and thrift client
  • Pig configuration
  • Embedded API for Hadoop FsShell and DistCp
  • JSR-223/javax.scripting for HDFS interaction
  • Spring Batch tasklets for vanilla Hadoop, Hive, Pig

相关链接:
Downloads | JavaDocs | Reference Documentation | Changelog

hadoop权限

HDFS支持权限控制的设计是基于POSIX模型,支持按用户、用户组、其他用户的读写执行控制权限。
在linux命令行下,可以使用下面的命令修改文件的权限、文件所有者,文件所属组:
•hadoop fs –chmod (修改文件所有者,文件所属组,其他用户的读、写、执行权限)
•haddop fs –chown (修改文件所有者)
•hadoop fs –chgrp (修改文件所属组)
不同用户使用不同的linux帐户即可访问到特定文件。
启动hadoop hdfs系统的用户即为超级用户,可以进行任意的操作。

Hadoop的那些事儿

在说Hadoop之前,作为一个铁杆粉丝先粉一下Google。Google的伟大之处不仅在于它建立了一个强悍的搜索引擎,它还创造了几项革命性的技术:GFS,MapReduce,BigTable,即所谓的Google三驾马车。Google虽然没有公布这几项技术的实现代码,但它发表了详细的设计论文,这给业界带来了新鲜气息,很快就出现了类似于Google三驾马车的开源实现,Hadoop就是其中的一个。

关于MapReduce

Hadoop说起来很简单,一个存储系统(HDFS),一个计算系统(MapReduce)。仅此而已。模型虽然简单,但我觉得它的精妙之处也就在这里。目前,通过提高CPU主频来提升计算性能的时代已经结束了,因此并行计算、分布式计算在业界发展了起来,但是这也往往意味着复杂的设计与实现,如果能找到一种方法,只需要写简单的程序就能实现分布式计算,那就太好了。
我们可以回想下当初做的课堂作业,它可能是一个处理数据的程序,没有多线程,没有进程间通信,数据输入都是来自键盘(stdin),处理完数据之后打印到屏幕(stdout),这时的程序非常简单。后来我们学习了多线程、内存管理、设计模式,写出的程序越来越大,也越来越复杂。但是当学习使用Hadoop时,我们发现又回到了最初,尽管底层是一个巨大的集群,可是我们操作文件时就像在本地一样简单,写MapReduce程序时也只需要在单线程里实现数据处理。
Hadoop就是这样一个东西,简单的文件系统(HDFS),简单的计算模型(MapReduce)。这其中,我觉得HDFS是很自然的东西,如果我们自己实现一个,也很可能是这样的。但是仔细琢磨下MapReduce,会发现它似乎是个新奇事物,不像HDFS的界面那样通俗易懂老少皆宜。MapReduce虽然模型简单,却是一个新的、不广为人所知的概念。比如说,如果说要简化计算,为何要做成Map和Reduce两个阶段,而不是一个函数足矣呢?另外,它也不符合我们耳熟能详的那些设计模式。一句话,MapReduce实在太另类了。
Hadoop的思想来源于Google的几篇论文,Google的那篇MapReduce论文里说:Our abstraction is inspired by the map and reduce primitives present in Lisp and many other functional languages。这句话提到了MapReduce思想的渊源,大致意思是,MapReduce的灵感来源于函数式语言(比如Lisp)中的内置函数map和reduce。函数式语言也算是阳春白雪了,离我们普通开发者总是很远。简单来说,在函数式语言里,map表示对一个列表(List)中的每个元素做计算,reduce表示对一个列表中的每个元素做迭代计算。它们具体的计算是通过传入的函数来实现的,map和reduce提供的是计算的框架。不过从这样的解释到现实中的MapReduce还太远,仍然需要一个跳跃。再仔细看,reduce既然能做迭代计算,那就表示列表中的元素是相关的,比如我想对列表中的所有元素做相加求和,那么列表中至少都应该是数值吧。而map是对列表中每个元素做单独处理的,这表示列表中可以是杂乱无章的数据。这样看来,就有点联系了。在MapReduce里,Map处理的是原始数据,自然是杂乱无章的,每条数据之间互相没有关系;到了Reduce阶段,数据是以key后面跟着若干个value来组织的,这些value有相关性,至少它们都在一个key下面,于是就符合函数式语言里map和reduce的基本思想了。
这样我们就可以把MapReduce理解为,把一堆杂乱无章的数据按照某种特征归纳起来,然后处理并得到最后的结果。Map面对的是杂乱无章的互不相关的数据,它解析每个数据,从中提取出key和value,也就是提取了数据的特征。经过MapReduce的Shuffle阶段之后,在Reduce阶段看到的都是已经归纳好的数据了,在此基础上我们可以做进一步的处理以便得到结果。这就回到了最初,终于知道MapReduce为何要这样设计。

Hadoop, More and More

Hadoop/MapReduce的Job是一个昙花一现的东西,它仅仅是一个计算过程而已,所有数据都是从HDFS来,到HDFS去。当最后一个Reduce完成之后,整个Job就消失了,只在历史日志中还保存着它曾经存在的证据。
Hadoop中的节点是对等的,因此每个节点都是可替代的。也因此,JobTracker可以把任务分配到任何一个节点执行,而不影响最后的产出结果。如果不是这样,就破坏了Hadoop的对等性。对等性可以说是Hadoop扩展能力、容错能力的基础,它意味着计算不再局限于单个节点的能力。当然事情总有两面性,对等性造成的结果是,如果我们想让某些节点做特殊的事情,会发现很困难。
就像很多分布式系统中的文件、对象一样,Hadoop对数据的操作是原子性的,一个Job跑完之后,最终的数据是在一瞬间呈现的,如果Job失败了,则什么都没有,连部分数据也得不到。由于Job中的task都是并行的,因此这里适用于木桶理论,最后一个完成的那个task决定了整个Job完成的时刻。所以如果Hadoop发现某些Task特别慢,会在其它节点运行这些Task的副本,当其中某个副本完成后,Hadoop将Kill掉其余的副本,这也是基于对等性的一个应用,使得那些慢的节点不会拖慢Job。如果某个task在重试若干次之后仍然失败了,那么整个Job宣告失败。
Hadoop包括HDFS、MapReduce,此外还有Hbase、Hive等,普通的应用大概是存储海量的数据,并进行批量的处理、数据挖掘等,不过也有些比较巧妙的实际应用,比如用Hadoop搭建HTTP下载服务器,或FTP服务器等,还有人用Hadoop搭建视频点播服务器。我觉得Hadoop对这些应用的最大价值是可以降低硬件成本,以前也许需要购买昂贵的硬件,现在购买廉价的服务器就可以实现。不过,做这些应用都需要对Hadoop做定制,修改代码啥的,似乎还没有整体的解决方案。
Hadoop是Java写的。可能有不少人会想,如果Hadoop是用C或C++写的,会不会更快些?关于这个问题网上也有不少讨论,简单地说就是,不会更快。而且我觉得需要强调的一点是,当面对Hadoop要面对的问题域时,编程语言不是首先要考虑的问题,或者说,依赖于具体的实现方案。Hadoop要处理的是大批量数据,它强调的是吞吐量,当整个集群跑起来之后,系统的瓶颈往往是在磁盘IO和网络IO,这种情况下,用C/C++实现Hadoop不见得比Java实现性能更高。相反,由于Java语言的严谨、统一和一些高级特性,用Java实现Hadoop对开发者而言会更容易。一般来讲,无论是用C++写还是用Java写,当系统发展较成熟时,都已经经过了相当的优化,这时系统的瓶颈往往不在于软件了,而在于硬件的限制。当然,这并非意味着目前Hadoop已经实现得很好了,Hadoop还有很大的优化空间,它的开发进程依然火爆,很多人在优化Hadoop,还包括用C++来改写Hadoop的部分代码的。另外,对于超大的集群(比如几千台服务器),调度器的优化也很关键,否则它就可能成为整个集群的瓶颈。我想这就是Hadoop虽然已经广泛应用,但是版本号依然还是零点几的原因吧。
虽说Hadoop的模型很简单,但是开发Hadoop的Job并不容易,在业务逻辑与HadoopAPI之间,我们还必须写大量的胶水代码,这无异于在WindowsSDK基础上写一个画图板程序,或者在Linux系统调用基础上写一个支持多用户在线的聊天服务器,这些似乎都不难,但是比较繁琐,需要堆砌大量代码,写完一个之后,你大概不会再写第二个。我把这种情况称为用汇编语言写程序,也就是说,你面对的是业务问题,却必须不遗巨细与机器打交道。
面对上述困境,人们想出了很多解决办法,开发出高级语言来屏蔽底层的细节,让开发过程更加简单,我把这种情况称为用脚本写程序,可以很快的修改&调试。其中Facebook开发了Hive,这是类似于SQL的脚本语言,开发者基本上只要面对自己的业务数据,就能写出Hive脚本,虽然有一定的入门门槛,但是比起用HadoopAPI写程序,可以称得上是巨简单了。另外Yahoo开发了PIG-latin,也是类SQL的脚本语言,Hive和PIG都有很广泛的应用[http://wiki.apache.org/hadoop/Hive/PoweredBy],[http://wiki.apache.org/hadoop/PoweredBy]。
http://www.searchtb.com/2010/11/talk-about-hadoop.html

Hadoop, Hive和Scribe在运维方面的应用

邵铮(Facebook)
2011-12-07 13:30
永泰大宴会厅B
在云计算和大机群越来越普及的今天,运维的工作越来越多的转化为大规模数据分析的工作。在本议程中,我们会先介绍Hadoop, Hive和Scribe系统所解决的问题,以及这些系统本身在运维方面的挑战;然后我们会介绍如何利用这些系统来解决其自身在运维方面的挑战;最后我们会介绍如何利用这些系统来满足其他系统在监测和运维方面的需求。

邵铮
Facebook
2008年起至今在美国Facebook公司任软件工程师/研发经理,专注于公司内海量数据仓库与实时数据分析系统的建设。2009年起兼任Apache软件基金会Hadoop项目委员会委员。2005年至2008年就职于美国Yahoo公司网络搜索部,参与了超大规模网页数据的分析平台的设计和实现。邵铮曾获得美国斯坦福大学管理学硕士学位,美国伊利诺伊大学计算机硕士学位,和清华大学计算机学士学位。中学时邵铮曾作为中国代表队的一员参加国际计算机奥林匹克竞赛获得金牌。
http://velocity.oreilly.com.cn/2011/index.php?func=session&name=Hadoop%2C+Hive%E5%92%8CScribe%E5%9C%A8%E8%BF%90%E7%BB%B4%E6%96%B9%E9%9D%A2%E7%9A%84%E5%BA%94%E7%94%A8