原文地址


作者 水羽哲 发布于 2012年11月14日

随着Hadoop的推出,大数据处理实现了技术上的落地。但是对于一般的公司和开发者而言,Hadoop依旧是一个陌生或者难以使用的技术。这次的阿里云开发者大会上,向磊凭借EasyHadoop将Hadoop平民化而获得了最佳创意奖,InfoQ对他进行了采访。
InfoQ: 首先请您做下自我介绍并介绍本次的参赛作品EasyHadoop?
向磊:大家好,我是向磊,本次阿里云开发者大赛最佳创意奖作品EasyHadoopphpHiveAdmin的作者。目前供职于一家互联网视频公司的数据部门,负责整个Hadoop集群的维护和一些数据分析产品的研发工作。
本次参赛的EasyHadoop和phpHiveAdmin是我在业余时间编写的开源软件,其中EasyHadoop是界面化安装部署和管理Hadoop集群用的,phpHiveAdmin是用来管理和查询Hive数据仓库用的。如果打个类比的话,EasyHadoop类似于Cloudera Manager,phpHiveAdmin类似于HUE里面的Beeswax。主要是希望能够帮助到一些需要用到Hadoop做数据分析,又苦于Hadoop技术门槛太高的公司能够快速应用Hadoop。
InfoQ: 目前国内公司对Hadoop接受程度是怎样的?
向磊:个人看法吧,国内有一些大的互联网公司比较早就已经开始用Hadoop分析业务数据,但是很多中小企业或者国企央企还是处于观望状态。我觉得主要还是由于Hadoop的技术门槛比较高,推广起来具有一定难度,对中小企业来说,Hadoop的实施成本比较高。然后国企央企可能认为假如自己上了Hadoop,维护和开发将是比较困难的事情。当前Hadoop的人才稀有,所以,国内很多人听说过Hadoop了,但是能够真正下决心在自己企业实施的还是少数。不过总的趋势还是好的,愿意尝试Hadoop的公司和个人越来越多了。主要我觉得是业务压力逼的,传统的关系型数据库做统计分析现在确实有些力不从心了。数据量越来越大,一个group by就内存溢出了。在量变已经无法满足需求的时候,就需要质变了。
InfoQ:Hadoop虽然很火,但是能够操作起来的公司和技术人员却不是很多,那么你认为是什么阻碍了Hadoop的“平民化”?EasyHadoop又是如何帮助开发者来降低门槛的?
向磊:这个就需要说到我在大赛演示的时候说的Hadoop的三高问题(不是血糖高血脂高血压高,哈哈,这三高由我来替大家承担)。
第一是硬件投入高,Hadoop是集群存储和计算,这就意味着无法由一台服务器完成,搭建集群的话,一台高配服务器大概需要2-4万左右。对于中小企业来说,哪怕搭建3-4台集群都是很大的成本压力。不过很高兴这次看到阿里云提供的云主机,可以大幅度降低硬件的成本投入,适合Hadoop用的主机用一年才几千块钱,10台下来一年才几万块钱,这可以说个人都是可以承受的了。
第二是技术门槛高,能够安装部署运维Hadoop集群的人极其稀少,因为分布式计算毕竟需要数台到数十台服务器的协同运作,这时故障就变成常态了。给我很深刻印象的是阿里云的唐洪博士做的报告,单台服务器的硬盘故障率是4%,但是当你是一个集群,有5000台服务器的时候,硬盘故障率就是99.6%了。而且服务器之间网络通信,任务调度都会出问题,这些问题对维护人员来说都提出了相当高的要求。不过,其实最早做EasyHadoop和phpHiveAdmin是为了降低自己工作中的重复劳动,因为Hadoop的集群部署和安装配置乃至使用都是非常繁琐且容易出错的。所以为了省事,写了这样一个东西,从一个安装脚本开始,后来慢慢越写越大。最后整理一下功能就开源出来了。里面把安装脚本都封装起来了,用户不需要关心Hadoop安装的繁琐步骤。只要泡杯茶,点根烟,点点鼠标就好了,运维中的查看日志和重启节点也只需要动动手指就完成了。
第三是开发成本高,每个公司对自己的数据需求都是不同的,而能够开发Map/Reduce程序的人又少又贵,这就造成了大数据分析的人力成本很高。以前淘宝的报告提到,淘宝的数据90%分析是通过Hive仓库完成的,在我目前的公司,可能比例更高,95%是Hive完成的。但是Hive本身是完全命令行操作的,除了技术人员可能都用不了。于是我就写了phpHiveAdmin用来做Hive数据仓库的管理和查询界面。这样,之前的mysql/oracle管理员可以不用开掉,留下来管理Hive仓库就好了。只要会写SQL就可以做大数据的分析了。并且我想提一个当初开发时候完全意料之外的改变,是管理流程上的变化。之前没有界面化,业务人员需要提交需求给技术人员。由技术人员编写HQL或者Map/Reduce,然后生成报表返回给业务人员,周期慢,中间对技术和业务人员对业务理解有偏差还要重新返工。写了phpHiveAdmin之后,业务人员只要简单培训一下HQL语言,很多数据他们可以自己去数据仓库里查询,而不需要通过技术人员了,节省了管理流程上的时间和成本。数据结果也更加直观。技术人员也能有更多的时间和精力去研发更多更重要的数据内容。这算是phpHiveAdmin为公司节省管理成本和数据研发成本做的一点贡献吧。
所以总结下来,云计算解决硬件成本问题,EasyHadoop解决技术门槛问题,phpHiveAdmin解决开发和管理成本高的问题,开源出来,算是对大家作出一点微不足道的帮助吧。
InfoQ:目前已经进入到了“大数据的时代”,比如王坚博士说阿里云是一家以“数据为中心的云计算服务公司”已经印证了这一点,那么您认为“大数据”带来的机遇和挑战分别是什么?开发者如何应该如何应对?
向磊:王坚博士演讲的时候我在场外展台,没有听到,但是我听说他的演讲中也提到了EasyHadoop,令我感到十分的荣幸。我十分同意王坚博士的观点,阿里系一直以来都是数据推动业务,才能获得今天雄霸整个中国电子商务市场和云计算市场的成就。关于大数据,我个人的看法是,大数据带来的也是大机遇和大挑战,不仅仅是技术层面上的,更是管理者眼界的问题。你打算靠什么来指导你自身的业务发展,是开所谓Brain Storm的拍脑袋会,还是用数据来证明,这是管理者需要改变思路的地方。
而作为开发者,也需要改变一些思维方式,从传统的单机思维,扩展到集群思维,大数据时代需要的是能够提出更快更好更创新的概念并实现。Hadoop和大数据我认为给我的一个启示是,个人英雄主义的单枪匹马作战方式将不再适用。集体和合作的力量将远大于个人的力量,用中国俗话来说,就是“三个臭皮匠,顶个诸葛亮”。对于技术人员来说也是这样,一个人再强也不是强,团队强才是真的强。更多分享和更多交流,是开发者需要加入到自己的时间表里的,而不仅仅是提高自己的技术和算法水平。团队协作不会降低你的社会地位和收入。
InfoQ: 在开发的过程中,你用到了阿里云的哪些服务?请列举这些服务的优点和需要改进的地方?
向磊:主要是用到了阿里云的ECS服务器,对Hadoop来说这就够了。优点嘛,就是执行速度快,内网间通信也非常快。需要改进的么,我了解了一下,阿里云为了保证数据安全,每个云主机里的数据都是备份3份的。然后如果用上Hadoop,Hadoop本身又是备份呢3份,这样数据就变成9份了。不知道阿里云能否有一种服务,用户可以自己定义主机数据的备份份数的。不过我觉得这会比较困难,因为这是云计算的底层服务,可能会很难改。算是个希望吧。
InfoQ: 你提到EasyHadoop是根据GPL协议进行开发的,主要贡献者是几个核心团队的人员,您认为这种开源方式有什么利弊?
向磊:GPL简单的说就是开源传染协议。我的想法是,我既然愿意开源出来,就意味这我愿意为需要的人作出一点贡献。而被提供帮助的人们不需要向我支付费用,只要把这种帮助一直延续下去就好了。“Pay it forward, not pay me”,目前代码贡献者主要是我个人,主要原因是语言和程序架构比较复杂,语言方面用到了php,shell,python三种。然后涉及操作系统的底层内容比较多,像异步调用,线程池,socket通信等等。然后趣游的程序员史东杰提交过phpHiveAdmin的HQL自动提示代码和其他修改意见。窝窝团的用户提交过phpHiveAdmin的HQL正则表达式bug问题,目前已经修复了。
利弊方面,有利的方面是能够让软件可持续发展下去,每个人的代码都会被公开出来。弊端就是不会得到商业的支持,也就是没有任何来自商业公司的赞助。我目前是这样看的。
InfoQ:请你分享一下获奖的感受?
向磊:首先得感谢阿里云提供了这样一个比赛,能够和很多优秀的开发者面对面交流开发技巧。获奖感受一个成语总结就是受宠若惊,确实没有想到能拿到奖,因为毕竟参赛人数很多,每个人的作品又都独具匠心,非常有想法和特色,有些技术水平也非常高。比如三等奖的一个作者,北航的研三学生蔺波写的僵尸网络仿真就很厉害,网络仿真本身就是一个比较偏技术和前沿的东西,很难想象是一个学生的作品。
InfoQ: EasyHadoop下一步的发展计划是什么?
向磊:首先来说还是会继续完善整个产品,继续简化用户操作,增加功能,增强监控,修正bug,提高代码的安全性和强壮性。我还有很多想法,慢慢会逐步实现出来。然后也会对其他Hadoop生态圈的周边软件进行界面化封装,比如Pig,Mahout等等。大家在大会上都看到了phpHiveAdmin的Logo,当时因为时间关系没有讲。在这里我也想借这个logo的诞生贫两句,这个Logo是我一个发小帮我设计的。当时我告诉了他三个关键词:蜜蜂,大象,和简单。大家都知道,Hive的标志是蜜蜂,Hadoop的标志是大象,phpHiveAdmin的标志就是简单。所以就诞生了这个又像蜜蜂,又像大象,又很抽象的类似于任天堂红白机感觉的Logo,我觉得他很好的诠释了我对这整个系列产品的概念,就是要让大家像打红白机一样简单的进入大数据的殿堂。只要你会用Mysql,你就可以用Hive,只要你会点鼠标,你就可以用Hadoop。极简是EasyHadoop和整个系列产品的发展目标和方向,这也是我为什么当初决定用php来开发的理由。

感谢阿里云,感谢InfoQ,感谢谷歌,感谢Doug Cutting,以及感谢为大数据作出贡献的每一个人。