2013年3月14日,“2013年中国CIO论坛--北京行暨中国信息化领导力与CIO调研报告的发布会”活动在北京大学英杰交流中心隆重举行,会议上来自业界的信息化专家学者和各行业CIO、以及厂商代表们共聚一堂,共同探讨中国信息化发展大计,以及CIO角色的发展与变化转型。本次论坛分为上午的“2013中国CIO论坛主论坛”以及下午的“云计算分论坛”和“移动信息化分论坛”。
EasyHadoop创始人童小军先生在云计算分论坛上发表题为《运用Hadoop云架构补充现有(IOE)架构应对大数据时代》的主题演讲,以下为演讲实录:
EasyHadoop创始人童小军先生
大家好,很难得来到这里跟大家分享我们从互联网公司角度出发的基于Hadoop大规模数据应用的案例,还有从互联网延伸到非互联网IT公司的一些案例和实践场景。今天的题目是“运用Hadoop分布式架构来补充传统架构(IOE)迎战大数据”。这个题目是怎么由来的呢?在互联网上,比如淘宝、百度、阿里提出一些比较大的架构的调整,就是“去IOE”,当然这种大的架构调整背后有一套分布式体系的支撑。这个分布式体系支撑点,中间有基于Hadoop分布式计算,还有通过Reduce并行计算形成集群替代了原来的IBM IOE小型机在EMC存储和Oracle数据库组成的传统架构体系。
在我们出来做企业咨询和培训过程当中发现,其实在企业中要过渡到去除IOE几乎是不可能的。中间我会讲一些细节和由来。我们提出了新的想法,通过互联网、云计算、Hadoop来补充,我们提出补充IOE的设想来重新定位在企业中如何实施分布式架构。
首先我做个个人介绍。我本身是Easy Hadoop开源社区创始人,在国内推广基于Hadoop为主的分布式架构和体系,也做了很多培训的工作,我也有幸是Cloudera认证获得者,我之前在暴风影音从事平台研发经理,在互联网公司运用Hadoop处理大数据。我们社区举办了很多活动,在广州、上海等多地举办过培训和活动。通过这些培训活动我们搜集到了IT企业和互联网企业各种各样的需求应用。我们的宗旨是希望让Hadoop更简单、更易用,为国内企业提供大数据分析的能力。
首先说一下基于Hadoop架构中的组成部分。第一个问题,Hadoop是什么? Hadoop由多个组建组成,分别由Hadoop,包括外围很多软件组成。它从原来最早的处理框架转变成了分布式操作系统。在逐渐发展过程当中已经形成生态系统架构。基础的是解决存储+计算的问题。比如HDFS+MapReduce。再往上还有其他的。它本身从最基础的开始往上更丰富的应用层在逐渐的出现。比如数据挖掘算法、骚扰和搜索引擎这种组建,还有能够把数据从Oracle数据库倒到其他组建。等等。它形成了一个相当健全的生态系统。
Hadoop这个软件如果从云计算分类上来说,它属于哪块呢?我们分为三类,IAAS、SAAS、PAAS。Hadoop组建是在PAAS,起到平台支撑作用,一解决分布式存储和运算。按照对象分,有公有云、私有云、混合云。Hadoop在互联网公司构建私有云上有相当大的作用。当然也有企业用Hadoop构件公有云。我们可以把云计算技术分成两个端:一种是分的技术,把机器分成很多小机器,提高各个利用率,实现多个机器之间虚拟化的迁移,保证高可用。这是分的技术。另外一端是合的技术,把一堆小的机器组成大的集群。比如把存储组合成HDFS。充分利用内容可以使用HBase,可以用Reduce等模型进行并行计算。这块技术就是合的技术。把一堆机器合成一个大的集群。
[page] 在分与合技术之间,在传统的IOE架构和虚拟化技术我们分析一下它的瓶颈点。比如说Oracle、IBM还EMC存储。EMC存储是针对这一点,这个时候当服务器要读取数据进行计算的时候必须要把数据移动到服务器上进行计算,这个过程是有瓶颈的,包括磁盘瓶颈和带宽瓶颈。其实磁盘和带宽是最核心的两大组成部分。我们来看计算能力可以通过横向扩充机器解决,但是IO能力是受限制的。
基于Hadoop的架构是如何解决问题呢?在Hadoop会把一个文件切成很多小的文件分别存在不同硬盘上。当我计算时,它里面通过存储HDFS组建,把存储整合成一个大的集群。数据切成块存储起来,需要进行计算时会起动MAP和Reduce,MAP可以把任务分发到快的机器上计算。再执行Reduce,把MAP完了的结果做个规避。我们可以先求每个块的大小,再求总的大小。这样每个机器IO能力就可以充分发挥。它能实现什么呢?能实现整个系统IO能力的提升。计算能力和机器数量可以通过横向扩展机器解决。IO能力和机器数量几乎是成正比的。大规模的集群,比如淘宝网,它有3200台机器。如果说我们把3200台机器连成一个大的集群,用传统架构几乎是无法实现的。
IO能力拓展可以通过横向机器的扩展,当然中间也会不可避免的出现数据的流动,Map和Reduce之间会出现网络数据传输。这里可以通过优化方法来解决。
刚才说的这些应用并不是说Hadoop完全替代IOE。我们说得是补充的意思。我们可以把数据分成归档、整合、交互等等,如果使用Hadoop进行替换现有的Oracle数据还是有很多问题的。当然Hadoop本身生态系统能力在逐渐拓展。在企业里我们用它存储海量非结构化数据,例如日志、网页等信息。现在有的公司开始用它存储视频以及做视频的监控。
我们现阶段在企业里面如何使用Hadoop?可以用它补充原来在企业里面传统IOE在性能上出现问题的地方。比如说日志、图片、文档等存储和计算问题。
这个技术在现今来说还处于春秋战国时代,虽然它的发展有将近几年了但它有大量的版本。比如说英特尔,最初是Apache的版本。还有Cloudera、MapR,Hotonworks,这些根源都是Apache,最近还出来了英特尔的解决方案。国内也有很多厂商,比如浪潮、惠普、曙光都推出自己的一体机,推出了自己的解决方案。所以基于这种开源的解决方案,各个厂商可以基于自己的需求定制版本,给自己的客户提供特殊化定制服务。在这个中间英特尔在大力推广自己的版本。其实有时候也纳闷,英特尔作为CPU芯片厂商为什么要介入大数据呢?这中间其实蕴含着X86架构和小型机架构的竞争,所以英特尔推广这一套架构,也是在中国投放了大量广告来推广。
云架构解析,它最初发源地是Google。Google有三篇论文,在2002到2004年分别发出了三篇论文,包括HDFS、Map Reduce等等。这三篇论文出来之后在互联网界出来一套对应的Hadoop解决方案,所以这个本源是Google的“三架马车”。
比如说HDFS。HDFS由命名结点(音)和数字结点组成的。这些数据结点刚才我们提过了,可以横向扩容。所以优势是拥有了像HDFS这样的存储组建可以横向扩展。不光是纵向拓展,也可以通过横向拓展机器提高它的存储能力。通过HDFS,还有一个配套的MapReduce框架,它可以充分利用上HDFS存储的优势来通过它进行并行计算,实现自动的高并行化和可靠性。比如其中有一个任务挂掉了,因为它在另外一个机器上也存在,所以照样可以重新运行起来,整个任务可以正常运行起来,不会受限于单个结点的故障。第三个核心组建是HBase。数据库有一个特点,除了提供很快的查询能力之外,还有大量存储,还要解决高并发问题。其实HDFS和Map Reduce是面向批处理的,而HBase是面向实时处理系统。大家可以认为它是在线事物的数据库。当然它不具备像Oracle这么强大的搜索能力。它有一个很大的优势在于通过横向拓展机器提高并发能力。
基于Hadoop平台案例,我们做了一个测试,也给大家也做一下汇报。这个测试是基于阿里云平台的测试。我准备了20台机器,分别是4G,500G存储空间。我们测了一下它的性能,当数据达到100亿的时候,它顺序扫描只需要3分钟就返回。而一亿和一百亿之间差距并不大。也就是说系统不会随着数据量巨大膨胀时间也会大量增加,它可以通过并行MapReduce增多来提升整体性能。
当我们做分组查询的时候,信息在一百亿的时候可以达到54分钟返回。而别的系统在这里就容易出错,会暴露出一些问题,甚至是无解的问题。MapReduce之后,虽然数据移动产生了一定影响,但是影响还不至于特别大,还是可以做到相对比较快的返回。
对于使用Hadoop集群预算我们做了一下对比。在大数据的应用里头,在IOE时代,如果说要构件一款大规模数据分析系统要花费的成本从百万到千万都有可能。所以这块是极少的银行、电信、政府才能用得起。大数据时代,随着Hadoop推广这个慢慢走向平民化。我算了一下我们集群大概花费在60万左右。如果说到达云平台,基于阿里云平台价格可以降更低。我当测这个集群的时候发现这个只需要十几万就可以买到,当然这中间也有硬件损耗等费用了。
云平台这块有个特点是,当大家把存储能力在提升的时候,比如从10T到100T的时候就不划算。因为它的存储容量相对还是比较贵的。实施周期,在IOE时代可以按月来说。而Hadoop,我们遇到最大的问题是在用这个系统时,学习培训时间特别长。最大的问题一个是学习时间。从2008年到调研,2011年才实施上。迁移的时间花了一年的时间。当然光单纯的部署和安装简单了,主要是学习时间长。如果使用云平台,部署安装会简单一些,按天按周就能实现,一点击就有十几台机器的集群了,也是有可能的。另外维护成本也很重要,IOE时代需要依赖于专业的硬件人员和软件厂商售后服务。费用也比较贵,据说是按小时收费。如果自建Hadoop最大问题在于学习和人才培养的成本,而这块在互联网公司也是非常稀缺的。云平台,在国外有了。但是在国内没有一款基于Hadoop的云平台出现,目前还是空白。
基于Hadoop的集群我们有几个案例。第一个是智慧交通应用。需要把车牌号数据存在一个集群里,然后进行很快的扫描和比对出来。刚才我给大家看的测试报告就来源于这个应用案例,有将近100亿的数据。优化方面,我们希望从小时级优化到分钟级。这个很轻松的实现了。基于Hadoop如果再优化可以到秒级。这是交通的例子,比如说摄像头拍到一个车牌号可以存储到集群里,这个时候可以识别这个车是不是年检了,是否有套牌,是否有违章。其实这块周期是相当长的,就是从拍到车出什么问题到我们接收到报告的时候是相当长的时间。如果我们把系统再优化就可以变得更实时,达到分钟级甚至秒级,你可以马上收到信息比如说“你超速了”,如果你及时改正就可以避免一些事故的发生。我们可以把想象空间再放大一下,这个系统存在不是说只为出一个报表而已。而是实现系统更近乎实时的反馈能力。
很多通信公司的应用也是特别多,之后我会举移动和联通的例子。移动公司有一个“大云计划”,上线这个系统时做了价格的对比,比如16结点集群和原来小型机对比,他是做数据挖掘的应用,原来投资270万但是迁到Hadoop上只花了36万。而数据挖掘和性能都有提高。原来商用小型机投入也是几百万的,但是基于Hadoop会降低,性能也会提升7-15倍。
这个是联通的例子。联通详单查询,原来是基于IBM做的,只能存放三个月数据。查询达到100条查询/秒。所以只能通过控制用户查询来解决问题。基于Hadoop性能就有了很大提升,存储容量达到400多T,查询达到每秒两万条。当然随着硬件性能提升,也能解决容量扩容问题。
这是一个架构图,有主结点还有存储结点等等组成,这是淘宝的例子。淘宝有将近3200台机器,当然这个集群还在增加。每日新增数据20T(这是比较老的数据了)。在淘宝有三大战略:平台、数据、金融三大战略。阿里金融是特别能改变银行业的应用,它提供了小额贷款,金额很小,放贷速度很快而且无担保。整个体系相当于国家的金融中心了,所以它的含金量还是很高的。因为它拥有大量数据能够把各种各样数据计算和存储。如果更多人愿意在上面做生意、贷款,这也是数据的一个正循环。通过这个图可以看出阿里对于各种业务的重要性,像这些技术本身不需要大规模计算来完成。
上次“双十一”179亿成交额,中间会产生大量的数据。都需要快速处理和响应才能应对。它用的什么解决方案呢?他们有一个数据工场的概念,它会跑在Hadoop集群上同时还有其他一些组建,比如实时处理组建。这有一个理念,数据工场不再是局限于给个别人用,而是开放给公司的业务人员、平台人员。这个时候建设人员可以建设这个平台,用户不是层级式提交查询报告再返回的方式,而是直接查询数据工场最原始的数据。这也是一个非常重大的革新。这在传统数据库里要实现的话,有可能系统会崩溃。
[page] 这是暴风影音的案例。在暴风影音从三个结点扩充到八个结点,再扩容到30个结点。投入也不贵,每天处理日志1.2T,20亿行。通过几十万投资就搞定了。它承载了暴风影音的广告系统、用户行为分析、产品分析等等。所以在中国大规模的集群,例如百度、阿里,投资都很大。那些案例更多的公司其实是集群规模在一百台以下的,大部分公司起步的时候都是很小的集群规模。所以我们希望能把这些案例做成中国经典案例。
数据系统经历了第一代(直接数据系统),再经历了第二代物(数据仓库),当然也实施失败了,出现了一些技术问题。最根本的就是IOE问题没有解决。第三代系统,我把数据录入到Hadoop集群里通过并行计算来解决,这个问题才得以解决。
当时也耽误了我们将近大半年的时间,我们选机器选了单磁盘的机器,性能很差。甚至快要放弃了。其实Hadoop难在哪呢?很多人不知道它的原理,其实当你拥有合理硬件的时候Hadoop的性能是可以发挥出来的。我们用三台线上机器测试,拥有大量磁盘的机器,结果性能很不错。
这种架构设计好了,大半年都不用更改。之后我在培训和服务过程当中发现,从互联网行业逐渐转向交通领域、安防领域、电信领域、银行领域等等。
当然我们实施过程当中也遇到了一些障碍。虽然这些障碍可能不属于我们管理,但是这个事情是值得思考的。就是大数据价值问题,商业模式转变问题。
大集群和大数据、大需求的问题,这是第一座大山。不是所有公司都有大集群和大量需求、大数据的。所以应用的人也就少。第二个问题,就是原有系统改造问题。很多公司都是IT外包,依赖于IOE架构,所以迁移改造会有很多羁绊。不像互联网公司自己研发、自己上线那么轻松。当然还有版本等一系列的问题。第三个问题,大量资金投进去看不到产出。这是大数据和云计算的一个很大的问题。当然上这些系统时我尝试着说服领导,其实这个是理念的问题,我们值得投资。
大数据的服务方式。现在这个时代用户直接去数据库里查。编辑人员会编辑。2.0时代是编辑人员和产品研发转变成了规则制定者。规则制定者研发逻辑而不是具体内容,他不再产生内容。然后用户产生内容,通过逻辑挖掘之后回馈给用户。最后用户每个人都拥有一份自己的报告和唯一独特的数据服务。这中间必然需要大规模计算。
在企业里面,报表和数据的闭环。我们可以把这一层想象成企业的内循环。这一层是外循环,就是用户和企业之间的循环。那么这中间我们做出来的东西不仅仅是报表,而是向用户直接服务。这种更实时的线上的系统,是大数据发挥的价值。当然它的维度越细、精准度越高,价值就越高。
开源Hadoop之路有哪些难点?管理难、实施难、各种各样的研发难。这些问题我们遇到了,相信别人照样会遇到。我们是希望提供安装、部署、学习等等问题,扫平一系列障碍。从原来的命令行模式转变成界面模式。通过社区和培训方式让大家知道Hadoop大数据能干嘛,怎么用以及如何落地。我们也希望为大家提供层层的解决方案。当然这些是逐渐形成的,还没有方案成型。从Hadoop开始扩展算法、管理工具等组建和解决方案。
这是我参考了一下移动大云项目。其实移动大云里我们可以把其中的模块抓起来,就会发现它也是基于Hadoop构件的。当然这套系统并不是完全成功,但某些点是成功的。我们可以基于这个架构做出每个公司都有自己的移动大云。
这个是RedHadoop项目。希望立足于安全性,因为我们发现Hadoop安全性是很大的问题,各种关口暴露、文件系统访问权限等等,这都存在大量问题。所以我们希望做出努力来完善这个系统。
国内现在也出了很多一体机,这块我们倾向于合作模式。现在有一个抢眼的公司在跟我们合作。这里有很多硬件是可以优化的。在互联网领域有一家公司可以把4U的机器里面塞入45块硬盘,能提供180T的存储空间。如果把这种机器实现,那我们30台机器集群就可以压缩到3台,成本也会有大量下降。
因为软件开源性可以自己修改、定义。比如说这个目录是在高密度计算集群里,这个是在高密度存储集群里,那我们可以用积极的资源实现。一方面是计算,还有历史数据的备份。这中间有开源的方式所以可以自己修改和改动。
软件版本方面我们是立足于开放的平台,在网上构件应用层,结构化数据库和非结构化数据库的解决方案。提供从原来的命令行到界面化的查询。
这是显示的是不同版本的区别。在这个过程当中我们也接触了很多客户,比如联通公司,这是我们最近在做的一个培训案例。在Easy Hadoop和RedHadoop产品构建过程中,Easy Hadoop核心是让Hadoop更简单,而RedHadoop是让Hadoop更安全。基于这两点,我们再持续不断的完善它。
我之前在暴风做的工作是偏研发的。那么我们以CIO的角度如何去实施呢?解决现有系统要从它的瓶颈点着手。比如说原来需要7小时,现在可以优化到10分钟。所以公司使用Hadoop归根结底是要解决问题。比如说报表算慢了,是不是通过它能让速度快起来。先从一个点先切入。接下来我们从非核心,离线非交易的分析业务开始。从小规模集群开始,而不是大量硬件投资。国内有很多机器出现空跑现象,也是很浪费的。然后从依赖于Web团队转化到自主培养人才。
今天的报告就介绍到这,谢谢大家!