Hadoop不是万能,破除七大迷思让你做应用好大数据

Hadoop是Apache软件基金会(Apache Software Foundation)因应Cloud Computing与大数据发展所开发出来的技术,Hadoop使用Java撰写,并免费开放塬始码,在此背景之下,就足以让Hadoop在资讯技术发展史上占有一席之地。
 
像Yahoo就利用Hadoop Framework的技术,建立网页索引资料库的计算,同时使用1万个Linux平台的处理器核心,处理1兆个网页连结,从4PB的资料,运算得出300TB的索引数据。
 
然而,盛名之下必有所累--关于Hadoop的应用迷思也随之而起。而这些迷思可能会导致企业的资讯部门决策者过于乐观地制定相关决策。
 
资料与资料的使用量正以惊人的速度持续增长中,IDC(The International Data Corporation)在2013年1月所释出的分析报告就指出--今年在资料储存部份的增长速度将达到53.4%,而AT&T也指出--无线资料的流量在过去的5年内增加了200倍。
 
在IDC针对2012-2016年亚太区(不含日本)大数据市场所做的分析与预测报告:「APEJ大数据Technology and Services 2012-2016 Forecast and Analysis」指出,亚太区的大数据市场规模预估将从2012年的3亿美金成长到2016年的17.6亿美元,年复合成长率达47%;而台湾的市场规模则从2012年的1.13千万美元成长到2016年的4.61千万美元,年复合成长率亦达到40%。
 
所以,如果你也重视自己所拥有的对外互动管道的话,你会发现来自网路的内容、电子邮件、App讯息、社交讯息等数量正显着地增加中,这也是为什么从McKinsey到Facebook到Walmart等企业都将大数据的应用视为营运的重点之一。
 
但是,大数据会不会如同90年代的网路泡沫化与2000年的Web2.0泡沫化一样,让一些决策者做出斲伤企业的假设与决策?
 
Hadoop目前无疑是企业们用来因应大数据需求的主要投资项目之一,像Facebook、Yahoo这些大企业都宣称自己在应用Hadoop来处理大数据分析上有相当良好的成效,这将使得之后面临大数据问题的企业会起而效尤。
 
然而,这会不会造成Functional Fixedness(是指有时候人们会受制于过去的经验,自觉/不自觉地认定某个事物只具备某种特定功能用途,而习以为常地只朝特定方向去思索的认知结构)的认知偏差呢?
 
接着,就让我们跟随在云端服务领域已有多年经验的Adam Bloom,带领我们从几个不同面向来看Hadoop/大数据的应用。
 
大数据仅仅只是数据量爆增(Volume)的问题而已?
 
到目前为止,对于大数据尚未有统一的定义,因此,除了数据资料量的增加之外,你还会经常听到一些科技领导厂商与研究机构所提出的几个关于大数据的特性,像是像是Variety(异质资料多样性,指的是结构性、半结构性与非结构性资料,包含文字、影音、网页、串流等)、Velocity(即时性)和Value(价值)等。
 
大数据的特性并不只是数量上的成长——事实上,它正朝向用更好的方法,来达成在最佳时间内分析整合来自企业内部分散各地的结构性(Structured)/非结构性(Unstructured sources)资料,以探勘出隐藏的价值,提供给企业决策者做决策的参考依据。
 
处理结构化资料的SQL无法在Hadoop上使用?
 
当Facebook、Twitter、Yahoo等科技龙头企业,都选择Hadoop来处理自家内部大量资料的分析的同时,表示他们瞭解Hadoop主要是用来处理非结构化资料,因此,HDFS和MapReduce在处理结构化的资料上就必须选择像Hive、Pig与Sqoop等为工具。
 
由于SQL发展的历史已经超过25年了,这表示现在的许多资料是透过SQL来做管理的,Hadoop的掘起虽然是时势所驱,但,这并不表示我们已经不再需要SQL,更何况这两者的功能是互补的,因此,有些企业开始致力于Hadoop与SQL的相容性开发,以使其能发挥综效。
 
例如,EMCGreenplum所发佈的PivotalHD的元件HAWQ就是一个很棒的例子──它是一个与SQL相容的平行查询引擎,速度比Hadoop查询引擎要快上10–100倍之多,而且能够处理PB规模的资料量。
 
Hadoop将取代大型主机(Mainframe),成为唯一的IT资讯平台?
 
实务中,企业裡的IT产品组合中,有很多是需要长期投资的项目,像用来做伺服器的大型主机就应该跟随着企业系统(如,ERP、CRM、SCM等)的演进而做适当的调整。
 
资讯决策者若不想汰换大型主机,或还无法就现有的资讯架构做调整,就必须赋予它新的定位与存在的价值。
 
像我们公司有不少客户在大型主机的运作上都遇到了速度、规模与成本的问题,但还是有方法可以解决这些问题的,例如,VMware的云端计算应用平台vFabricSQLFire,就是利用虚拟化技术来处理大量资料,并藉由分散式快取技术节省磁碟存取次数,进而达到降低延迟时间与分散系统负荷的目的。
 
虚拟化技术对效能提升有帮助吗?
 
Hadoop最初的设计只是在实体伺服器上运行,然而随着行动商务与网路商机的发展,为了能更方便分享及取用资料,企业纷纷把资料从大型主机转移到Web服务供应商的资料中心(DataCenter);而服务供应商为了提供更稳定与更迅速的服务,也需要一个新的服务架构,把运算资源与储存空间做更有效率的利用。
 
随着云端服务的兴起,许多企业开始希望Hadoop能把上述的需求整合在一起,以延伸传统资料中心的功能。而基于成本与效能的考量,虚拟化技术也开始受到重视。
 
为什么企业需要虚拟化技术?
 
我们首先考虑到的就是:弹性。你可以想像,如果我们能够动态地调整计算资源,就能够将大量且复杂的计算程序自动拆解成多个较小的子程序,再由多部伺服器所组成的丛集进行分散和平行计算分析,将处理结果回传给云端使用者。
 
也就是虚拟化技术能让电脑分工合作,让系统的运作与使用者利用资讯的方式更有效率。
 
资讯架构也可以透过租赁方式取得?
 
2012年,被VMware(虚拟化技术应用大厂之一,同时也是云端计算发展的领导企业之一)收购的Cetas,是一家提供软件即服务(Softwareasa Service,SaaS)基础架构的云端服务厂商。
 
Cetas所提供的云端服务,让他的企业用户不需要花大量的时间与费用来建置专属的资料中心(Data Center),透过其所提供的服务就可以在云端上运行Hadoop、SQL与资料的即时分析(Real-Time Analytics),取得自己所需要的设备与技术服务,而不必再自己从无到有评估软件授权、硬体与软件建置/安装/升级等。
 
对于建立公有云(Public Cloud,通常与「租赁」有关,也就是建立云端资料中心后,不只是提供自己使用,还可以把多余的运算资源分租给别人,也就是透过收取费用把云端资料中心的服务与资源「分享」给其他对象)的企业来说,使用Java的开发人员,或许可以从VMware针对ApacheHadoop所推出的Spring Data产品,以及从GitHub所提供的线上版本控制服务所提供的免费/付费资源中获益。
 
虚拟化技术只会提高企业的成本?
 
Hadoop通常在商用伺服器上运行,因此有人会认为新增虚拟层(Virtualization Layer)除了会带来额外的成本支出之外,能不能获得对等的价值回馈还是一个未知数。然而,这个观点其实存在缺失--实务中,资料和资料分析都是进行动态处理的,而动态处理的机制要做到好还要更好,所耗费的资源是非常可观的。
 
如果你希望藉由Hadoop这个工具来平衡企业内部因应大数据所带来的问题,举凡资讯架构的调整,增进系统间互动的效率,资料探勘所带来的创新价值等,你就必须瞭解企业内部的资料是存放在不同的位置与系统中的,以及为了进行分析这些分散的资料所必须花费的时间与速度等。
 
导入虚拟化的资讯基础架构可以减少你不断採购硬体所占用的土地面积,而且,它会让企业的CAPEX(Capital Expenditures,资本支出)和採购非虚拟的设备相差不多,但,透过虚拟化技术,却能让使用者享受到比传统资料传输方式更为快速、简单且更优惠的好处,进而降低企业的OPEX(Operating Expense,运营成本)。
 
Hadoop无法在SAN(Storage Attachment Network)或NAS(Network Attached Storage)架构中运行?
 
Hadoop通常都在区域性的磁碟上运行,但中小型的丛集在共用的SAN环境裡,运行的效能也不错,但这视丛集的成本和效能而有不同。
 
另外,高频宽的网路,像10GB的乙太网路、FoE(Powerover Ethernet,指透过网路线来获取电力)、iSCSI(Internet SCSI,将传统上只能用于本机传输的SCSI协定,可以透过TCP/IP网路承载,以达到资料高速传输的需求)等都有益于效能的提升。
 
备注:(1)SAN,是一种连接外接储存设备和伺服器的架构,特点是,连接到伺服器的储存设备,将被作业系统视为直接连接的设备;(2)NAS,是将储存设备透过一台用来进行资料存取的档案伺服器直接连到区域网路上,因此,企业内其他的伺服器就不须同时兼负资料存取的动作,藉以优化效能。
 
本文主要的目的在于,藉由以上所提及的几项思考,能协助对BigData应用有兴趣你,用更客观的角度来看待相关的问题。Hadoop只是一个用来协助处理大量数据分析的工具之一,它并不是市场中唯一的选择,你应该依据实际的需求与环境来採购适合企业的应用工具,所以,如果你面临的是处理大量数据的时效性(Velocity)问题,那么GemFire与SQLFire或许是最好的选择。
 
而像RabbitMQ这类讯息导向(Message-Oriented)的中介软件(Middleware),可以利用来在不同的程式语言、平台、与电脑之间交换讯息。
 
当然,如果你期望将企业的产品更快地推向市场,可能就意味着你需要一个提供SaaS基础建设的云端服务供应商,而CETAS、Redis更能满足你的需求。

推荐阅读文章

大数据工程师在阿里面试流程是什么?

学习大数据需要具备怎么样基础?

年薪30K的大数据开发工程师的工作经验总结?

你可能感兴趣的:(大数据,IT资讯,互联网科技,人工智能,大数据,程序员,编程语言)