官术网_书友最值得收藏!

關于本書

誰應該閱讀本書

本書的目標是向讀者傳授一種可伸縮的編程風格。為了做到這一點,我們將涉及一些你可能不熟悉的編程或技術圖書。其他圖書可能只會介紹某一個函數庫,而本書則會涉及許多函數庫——既有內置的模塊,比如functools和itertools,也有第三方庫,比如toolz、pathos和mrjob。其他的圖書可能只會涉及某一項技術,而本書會涉及很多技術,包括Hadoop、Spark和Amazon Web Services(AWS)。我們選擇覆蓋更廣泛的技術是為了承認這樣一個事實:為了讓代碼具有可伸縮性,你需要能夠適應新的情況。然而,在所有這些技術中,我會強調Python中的“map和reduce”編程風格。

你會發現,在不斷變化的環境中,這種代碼風格能夠始終如一,這也是我最初采用它的原因。你可以使用它來快速調整代碼以適應新的情況。最終,本書的目的是教你如何通過map和reduce編程風格來擴展代碼。在這個過程中,我還打算教你使用一些大數據工具,比如Spark、Hadoop和AWS。

本書是為開發人員或者數據科學家所編寫的,因為他們知道自己正面臨著數據量太大的問題。如果你知道如何解決自己的問題,但卻不能足夠快地處理大規模的數據,那么本書就是為你準備的。如果你對Hadoop和Spark感興趣,本書會很適合你。如果你正在尋找一些關于如何在云端處理大數據的方法,那么本書可能會幫到你。

本書是如何組織的:路線圖

在第1章中,我將介紹map和reduce編程風格,以及其他將在本書中討論的內容。我們將討論并行編程的好處、分布式計算的基礎知識、用于并行和分布式計算的工具,以及云計算。我還為在本書中所涉及的材料提供了一個概念模型。

在第2章中,我將介紹map和reduce編程風格中的map部分,并討論如何并行化一個問題,以便更快地解決它。我將介紹Python的對象持久化過程,即Python如何在并行化期間共享數據,并通過一個示例來演示如何使用并行化來加速Web抓取工作。

在第3章中,我們將使用map函數來執行復雜的數據轉換。在本章中,我將教你如何將小的功能拼接到一起,形成函數管道或者函數鏈,從而產生巨大的效果。我還將演示如何并行化這些函數鏈,以便在大型數據集上更快地解決問題。

在第4章中,我將介紹惰性(laziness)的概念,以及如何利用惰性來加快大數據工作流的處理速度。我將展示如何用惰性函數在本地處理大型數據集問題,如何創建自己的惰性函數,以及如何最佳地結合使用惰性和非惰性的編程方式。我們將使用這些惰性方法來解決一個模擬問題。

在第5章中,我將介紹如何使用reduce函數進行累加轉換。我還會教你如何使用匿名函數(lambda)。在本章中,我們將使用reduce函數來計算大型數據集的匯總統計信息。

在第6章中,我將介紹使用map和reduce的高級并行化技術。你將學習Python中用于并行化的高級函數,以及如何、何時尋求問題的并行解決方案。在本章中,你還將學習如何實現并行的reduce工作流。

在第7章中,我將介紹分布式計算的基礎及Hadoop和Spark等技術。你將使用Hadoop和Spark來編寫一個入門程序,并了解每種框架的優點。我們還將討論Hadoop優于Spark和Spark優于Hadoop的情況。

在第8章中,我將介紹如何使用Hadoop在分布式集群上流式運行map和reduce編程風格的代碼。我還將介紹一個用Python來編寫Hadoop作業的mrjob庫。在此,我將介紹如何在Hadoop的多個作業步驟之間移動復雜的數據類型。我們將通過分析Web流量數據和網球比賽日志的示例來鞏固對這些原則的理解。

在第9章中,我們將深入討論如何使用Spark來讓Python代碼分布式化。我將介紹Spark的RDD數據結構,以及如何使用RDD的方法來實現map和reduce編程風格。我們還將對第8章中的網球比賽日志數據實現經典的PageRank算法。

在第10章中,我們將討論Spark最流行的應用之一:并行機器學習。在本章中,我將介紹機器學習的一些基礎知識。我們將通過實現決策樹和決策森林來實踐這些原則,從而預測一堆蘑菇是否有毒。

在第11章中,我將介紹云計算的基礎知識和云存儲的本質。我們將通過使用Web GUI和基于Python的AWS API包裝庫——boto3,將數據加載到Amazon S3,從而將我們的學習內容付諸實踐。

在第12章中,我們將使用Amazon Elastic MapReduce在云中運行分布式的Hadoop和Spark作業。你將了解如何使用mrjob從控制臺和基于AWS瀏覽器的GUI來搭建一個彈性的Hadoop集群。一旦你掌握了本章的知識內容,就可以處理任何大小的數據集。

關于代碼

在使用Python掌握如何處理大型數據集的過程中,你將會需要一些工具,首先是Python的最新版本。在本書中,Python 3.3+的任何版本都可以使用。在大多數情況下,你可以通過一條pip命令來安裝剩下的軟件:

如果你想搭建一個虛擬的環境,使本書中安裝的包與你當前安裝在路徑上的Python包區分開來,就可以使用如下幾行代碼:

如果你搭建好了一個虛擬環境,記得需要運行source命令來激活它,這樣就可以訪問其內部的庫了。

除Python之外,本書所需的唯一軟件是Hadoop。安裝Hadoop最簡單的方法是到Hadoop的官方網站,按照指示下載Hadoop的說明(參見鏈接1[1])。Hadoop是用Java編寫的,因此你還需要安裝一個Java開發工具包(JDK)來運行它。我建議使用OpenJDK。你可以從OpenJDK的網站上進行下載(參見鏈接2)。

最后,為了學習本書最后兩章的內容,你需要一個AWS賬戶。你可以訪問鏈接3,選擇“登錄到控制臺”(Sign in to the Console)選項,然后創建一個新的AWS賬戶。為了創建自己的賬戶,你需要提供一種支付方式。Amazon將使用該支付方式向你收取使用資源的費用。對于本書而言,你在AWS上需要的資源花費不超過5美元。為了確保消費金額不會超出自己的承受范圍,你可以申請一張預付的Visa卡,并將其設置為自己的支付方式。

讀者服務

微信掃碼回復:40368

■ 獲取各種共享文檔、線上直播、技術分享等免費資源

■ 加入讀者交流群,與更多讀者互動

■ 獲取本書博文視點學院在線課程、電子書20元代金券


[1] 請訪問http://www.broadview.com.cn/40368下載本書提供的附加參考資料。本書中提及參見“鏈接1”“鏈接2”等時,可在下載的“參考資料.pdf”文件中查詢。

主站蜘蛛池模板: 社会| 登封市| 新蔡县| 夏津县| 桓仁| 望谟县| 永定县| 蓬莱市| 平顶山市| 尼勒克县| 酒泉市| 榆中县| 黄浦区| 商都县| 新宁县| 宜黄县| 三台县| 金坛市| 霍邱县| 无锡市| 钟山县| 平舆县| 渭源县| 基隆市| 石河子市| 鄂州市| 南召县| 南京市| 镇宁| 平陆县| 海淀区| 岳普湖县| 古交市| 那坡县| 桂东县| 新野县| 紫阳县| 彭山县| 宁陵县| 太仆寺旗| 民权县|