王家林:Spark亞太研究院院長(zhǎng)和首席專(zhuān)家,中國(guó)目前唯一移動(dòng)互聯(lián)網(wǎng)和云計(jì)算大數(shù)據(jù)集大成者。Android架構(gòu)師、高級(jí)工程師、咨詢顧問(wèn)、培訓(xùn)專(zhuān)家;通曉Android、HTML5、Hadoop,迷戀英語(yǔ)播音和健美;致力于Android、HTML5、Hadoop的軟、硬、云整合的一站式解決方案。
Apache Spark是一個(gè)新興的大數(shù)據(jù)處理的引擎,主要特點(diǎn)是提供了一個(gè)集群的分布式內(nèi)存抽象,以支持需要工作集的應(yīng)用。
這個(gè)抽象就是RDD(Resilient Distributed Dataset),RDD就是一個(gè)不可變的帶分區(qū)的記錄集合,RDD也是Spark中的編程模型。Spark提供了RDD上的兩類(lèi)操作,轉(zhuǎn)換和動(dòng)作。轉(zhuǎn)換是用來(lái)定義一個(gè)新的RDD,包括map, flatMap, filter, union, sample, join, groupByKey, cogroup, ReduceByKey, cros, sortByKey, mapValues等,動(dòng)作是返回一個(gè)結(jié)果,包括collect, reduce, count, save, lookupKey。
Apache Spark是一個(gè)圍繞速度、易用性和復(fù)雜分析構(gòu)建的大數(shù)據(jù)處理框架。最初在2009年由加州大學(xué)伯克利分校的AMPLab開(kāi)發(fā),并于2010年成為Apache的開(kāi)源項(xiàng)目之一。
與Hadoop和Storm等其他大數(shù)據(jù)和MapReduce技術(shù)相比,Spark有如下優(yōu)勢(shì)。
首先,Spark為我們提供了一個(gè)全面、統(tǒng)一的框架用于管理各種有著不同性質(zhì)(文本數(shù)據(jù)、圖表數(shù)據(jù)等)的數(shù)據(jù)集和數(shù)據(jù)源(批量數(shù)據(jù)或?qū)崟r(shí)的流數(shù)據(jù))的大數(shù)據(jù)處理的需求。
Spark可以將Hadoop集群中的應(yīng)用在內(nèi)存中的運(yùn)行速度提升100倍,甚至能夠?qū)?yīng)用在磁盤(pán)上的運(yùn)行速度提升10倍。
Spark讓開(kāi)發(fā)者可以快速的用Java、Scala或Python編寫(xiě)程序。它本身自帶了一個(gè)超過(guò)80個(gè)高階操作符集合。而且還可以用它在shell中以交互式地查詢數(shù)據(jù)。
除了Map和Reduce操作之外,它還支持SQL查詢,流數(shù)據(jù),機(jī)器學(xué)習(xí)和圖表數(shù)據(jù)處理。開(kāi)發(fā)者可以在一個(gè)數(shù)據(jù)管道用例中單獨(dú)使用某一能力或者將這些能力結(jié)合在一起使用。
在這個(gè)Apache Spark文章系列的第一部分中,我們將了解到什么是Spark,它與典型的MapReduce解決方案的比較以及它如何為大數(shù)據(jù)處理提供了一套完整的工具。