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