文章: Hadoop in 360——专访360系统部总监唐会军

标签: 文章 hadoop in | 发表时间:2012-02-22 14:00 | 作者:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117

在前不久的Hadoop in China 2011大会上,360系统部总监 唐会军接受了InfoQ的专访,谈到360公司内部对Hadoop的使用,并对Hadoop项目和HBase面临的挑战提出了自己的看法。以下是采访实录。

InfoQ:现在360的技术团队规模有多大?

唐会军:大概有八九百人,现在360发展挺快的,人员扩张每年翻倍,今年又比去年翻了一倍,去年又比前年翻了一倍。

InfoQ:如何测试基于Hadoop的应用?您能否分享⼀一些相关的最佳实践?这些最佳实践所基于的上下文是什么?

唐会军:Hadoop应用的测试,我们现在主要两个方式,一个是做Code Review,提交到Hadoop上面的应用程序,我们会去复查代码,发现问题;第二个就是先在小范围的测试跑一跑,观察几天或者一周,没问题了,我们再在更大规模继续去跑,就是这两种方式。

InfoQ:360采取的第二种测试方式,在测试中会关注哪些指标呢?

唐会军:重点关注应用在测试过程中,它持续的时间、消耗的资源是否符合预期,因为Hadoop集群是个公用集群,不能因为某些程序没写好,把所有的资源都给占掉了,然后影响其他机器。它使用的CPU、I/O、网络这些资源能符合预期,是我们的焦点,如果太多的话,肯定是程序有问题。

InfoQ:对于这些指标,是否有一个相对的正常预期范围?

唐会军:对,在开发团队提交一个任务之前,我们会让他估计一下会从我们集群提取多少数据,他会大概估一个范围是多少T到多少T之间。比如是一T到两T之间。如果运行过程中发现他用了十个T以上的数据,那就有问题,我们就去查一下,这是数据消耗量;第二种就是程序运行过程中对CPU的消耗,如果他说基本上一百个单位就可以了,然后半个小时就可以跑完。那真正跑了一百个单位以后,花了一个多小时还没有跑完,这肯定就是有问题。我们会去查,会看到程序里面有一些东西写得不太合理,导致一些错误,出现不断的重试。资源,实际上就体现在CPU的资源;数据量就体现在I/O的资源。计算机无非就是I/O、网络、CPU这三个资源,关注他这个资源的消耗情况。

InfoQ:360现在主要用Hadoop具体做什么样的应用?

唐会军:Hadoop用得很多,我们会做一些样本的存储,因为我们样本特别多。用户在做云查杀的时候,我们会去扫描用户电脑上的样本文件。同时用户在安全浏览器里面去下各种应用的时候,我们也会扫描下是否有病毒。如果发现一个未知的样本,我们会把这个样本的一些特征给抽取出来,存到后台,由后台服务器判别。这些数据存下来以后,我们用一些数据挖掘引擎去扫一下,这个数据量非常大,每天会超过10个T。

InfoQ:超过10个T?

唐会军:对,我们会结合Hadoop自己开发一些程序来处理。

InfoQ:你们会把这些程序像豆瓣一样开源吗?

唐会军:暂时还没有,还没到时候吧。有些软件的架构需要在内部用得更成熟一点,再开源出来。现在看时机还不到。另一个原因,开源出来以后,外部用的话,还需要投入人力去帮助大家用,因为现在内部人力还比较紧张,或许过个一两年,慢慢会这样去做。

InfoQ:360内部用Hadoop的时候,你觉得遇到最大的困难和障碍在哪?

唐会军:虽然Hadoop是个比较成熟的开源分布系统,但是它在不同场景下,还会有一些特定问题会出来。所以刚用的时候,包括我们在用的过程中,会出现各种异常现象和问题,包括计算进程被杀掉,有一些读写超时等等。这可能需要我们花很长时间去研究和讨论代码,然后再结合产品去定位问题。这方面各种问题其实也不少,包括它的Bug。

InfoQ:有很多Bug?

唐会军:对,很多Bug的出现跟你的应用场景有关系,可能我们有些应用场景跟一般的不太一样。比如我们Hadoop上存大文件,也有很多小文件,然后这些小文件多了以后,就会导致一些特殊问题。这时就需要我们去把Hadoop的代码弄清楚,我们准备做一些修改和优化,这方面对我们的挑战比较大。

InfoQ:能不能说下Hadoop在360的下载系统的使用情况?

唐会军:我们大概尝试了一年多,现在已经是下载集群的标配了。除了传统的大数据的分析和挖掘,我们也在尝试把它用在在线下载服务上面,目前用的还挺好。当然也遇到很多问题,包括Hadoop的代码里面有一些不太适合做在线下载应用,我们根据需求,把Hadoop的很多代码做修改,现在已经用得非常非常好。

InfoQ:从技术上来讲,主要的挑战在哪?

唐会军:Hadoop设计出来的初衷是解决离线大数据的挖掘,它追求的性能指标是吞吐量。但是在线应用的要求是低时延,可能吞吐并不是最重要的。用户每个下载服务请求对时延比较敏感,所以这两个需求之间不完全匹配。现在下载面临最大问题是:原来很多设计是追求高吞吐,但是时延会受到影响,我们做了很多工作,把原有算法做调整以后导致它的时延会降低下来,吞吐会下降一些,因为这两个需求是不太一样的,一个是高吞吐,一个是低时延。

InfoQ:这跟视频的服务是否类似?

唐会军:我们的下载应该是跟视频这样的业务是比较类似的。所以我们觉得出来分享一下这个架构,可能对下载和视频服务有一定的借鉴意义。

InfoQ:2012年的QCon技术大会设计了海量视频处理的议题。大家现在上网带宽越来越宽,又有移动3G,所以视频的需求肯定越来越大,我相信越来越多的公司都面临这个问题,您能否再分享一些相关经验?

唐会军:真正要把Hadoop在一个完整的下载集群里面用好,要做很多方面的调整,包括P2P的一些算法。包括客户端P2P的一些算法,还有后端的下载服务器,他们两个要做配合。其次,每一块下载的数据大小也是需要优化的,原来P2P客户端的开发只需要从自己的角度考虑,他并不会考虑到后端的承载能力和实际情况,现在下载的时候,需要客户端和后端两方面做一些协商,看数据块多大是最合适的。第三个,nginx本身针对下载服务也有很多可以优化的地方,包括它的一些参数,它的一些读取文件方式,用pread还是sendfile,还是其他方式,这些方面都可以调整。第四个方面,因为nginx服务和Hadoop用Fuse方式去做接口,包括Fuse的方式也要做很多调整,才能适合下载业务去使用,保证低时延,高性能。所以实际上我们在把Hadoop用在下载业务中,并不仅仅是针对Hadoop HDFS做了一些优化,而是相当于是Fuse、nginx、包括P2P客户端等,都做了一系列优化。

InfoQ:您认为Hadoop现在在哪些方面还有欠缺,需要什么样的框架来弥补它的这些问题?

唐会军:HDFS、MapReduce和HBase,这可能是Hadoop里面用得最多的三块了。我们觉得HDFS现在面临最大的挑战是:怎么能够解决更多小文件持续存储的问题。因为小文件多了以后,会带来好几方面的问题:一个是name node内存占用会比较多,这个需要解决。第二个是,小文件多了以后,每个根目录下的小文件也会多,很多机制在面对小文件很多的情况下,也不太适应,一些配套服务响应的时间会非常非常长。然后时间长以后,会堵塞更多的Hadoop之间的一些心跳,name node会认为这个data node是死掉了,其实是没有死的,等等一系列的问题吧。所以我们觉得HDFS将来面临的一大问题就是:如何处理一个亿、两个亿,甚至更多的小文件,毕竟很多应用中还是会有很多小文件的。

MapReduce这个框架体系结构是比较成熟了,下一步挑战就是实时性方面的改进。这样我们既可以利用MapReduce这个框架的优势,同时保证它的实时性达到我们要求的范围内,并不是说一定要越快越好。

HBase出现时间比较晚,它现在面临的最大挑战就是稳定性不够,我们在用的过程中就发现:相对HDFS和MapReduce这两个组件来讲的话,HBase的bug比较多,所以希望HBase能尽快成熟起来。

InfoQ: Doug Cutting也说HBase会是下一个明星开源项目。

唐会军:对,结构化的Key Value存储需求是非常非常大的,以前没有一个很好的方式去满足海量的Key Value存储,很多公司也在做一些自己的开发,尤其淘宝和FaceBook等公司,他们都做自己的开发。但我们觉得HBase这种架构是不错的。如果它比较成熟的话,应该是很有希望成为下一个超级明星。


给InfoQ中文站投稿或者参与内容翻译工作,请邮件至 [email protected]。也欢迎大家通过新浪微博( @InfoQ)或者腾讯微博( @InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

相关 [文章 hadoop in] 推荐:

文章: Hadoop虚拟研讨会

- - InfoQ cn
现今,大数据和Hadoop在计算机工业里正如暴风骤雨般开展着. 从CEO、CIO到开发人员,每个人对其用法都有自己的看法. 12306插件引发GitHub故障,GitHub资深运维工程师确认参加QCon北京2013,现身说法. Erlang的互联网公司实践分享——淘宝褚霸确认参加QCon北京并分享Erlang在淘宝的应用经验.

关于hadoop的入门和进阶文章收录

- - ITeye博客
2 网上比较权威和受欢迎的大部分是来自 IBM DW 的文章,尤其是那两个经典系列的文章,此外还有一些案例型和实践型的文章与指南,这里集中收录如下:. 两篇云计算理论与概念的入门文章/教程:. 概念、优势、挑战和向云计算过渡需要考虑的事情. 发布日期: 2012 年 2 月 13 日 (最初发布 2011 年 3 月 18 日) .

文章: Hadoop in 360——专访360系统部总监唐会军

- - InfoQ cn
在前不久的Hadoop in China 2011大会上,360系统部总监 唐会军接受了InfoQ的专访,谈到360公司内部对Hadoop的使用,并对Hadoop项目和HBase面临的挑战提出了自己的看法. QClub(西安站)——前端崛起(2月25日 免费报名中. Inedo合作伙伴Alex Papadimoulis谈代码之丑之美.

文章: Hadoop MapReduce开发最佳实践(上篇)

- - InfoQ cn
本文是Hadoop最佳实践系列第二篇,上一篇为《 Hadoop管理员的十个最佳实践》. 百度技术沙龙第三十四期:机器学习之多媒体方向的思考(2013年1月12日 周六). 百度技术沙龙特约观察员火热招募中,2013,因为有你更精彩. GitHub运维专家Jesse Newland QCon分享Github ChatOps机器人与GitHub架构演进.

文章: Hadoop和元数据(解决阻抗失配问题)

- - InfoQ cn
在组织如何处理数据方面,Apache Hadoop展开了一场史无前例的革命——通过自由可扩展的Hadoop,可以在比以往更短的时间内,通过新应用创造新价值,并从大数据中提取想要的数据. 这次革命企图使企业建立以Hadoop为中心的数据处理模式,但是同时也提出一个挑战:我们如何在Hadoop的自由下进行协作呢.

文章: Hadoop管理员的十个最佳实践

- - InfoQ cn
接触Hadoop有两年的时间了,期间遇到很多的问题,既有经典的NameNode和JobTracker内存溢出故障,也有HDFS存储小文件问题,既有任务调度问题,也有MapReduce性能问题.遇到的这些问题有些是Hadoop自身的缺陷(短板),有些则是使用的不当. 白皮书下载:利用您的私有或混合云加速业务成果.

Hadoop Streaming 编程

- - 学着站在巨人的肩膀上
Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如:. 采用shell脚本语言中的一些命令作为mapper和reducer(cat作为mapper,wc作为reducer). 本文安排如下,第二节介绍Hadoop Streaming的原理,第三节介绍Hadoop Streaming的使用方法,第四节介绍Hadoop Streaming的程序编写方法,在这一节中,用C++、C、shell脚本 和python实现了WordCount作业,第五节总结了常见的问题.

Hadoop使用(一)

- Pei - 博客园-首页原创精华区
Hadoop使用主/从(Master/Slave)架构,主要角色有NameNode,DataNode,secondary NameNode,JobTracker,TaskTracker组成. 其中NameNode,secondary NameNode,JobTracker运行在Master节点上,DataNode和TaskTracker运行在Slave节点上.

Hadoop MapReduce技巧

- - 简单文本
我在使用Hadoop编写MapReduce程序时,遇到了一些问题,通过在Google上查询资料,并结合自己对Hadoop的理解,逐一解决了这些问题. Hadoop对MapReduce中Key与Value的类型是有要求的,简单说来,这些类型必须支持Hadoop的序列化. 为了提高序列化的性能,Hadoop还为Java中常见的基本类型提供了相应地支持序列化的类型,如IntWritable,LongWritable,并为String类型提供了Text类型.

Hadoop TaskScheduler浅析

- - kouu's home
TaskScheduler,顾名思义,就是MapReduce中的任务调度器. 在MapReduce中,JobTracker接收JobClient提交的Job,将它们按InputFormat的划分以及其他相关配置,生成若干个Map和Reduce任务. 然后,当一个TaskTracker通过心跳告知JobTracker自己还有空闲的任务Slot时,JobTracker就会向其分派任务.