掌握Hadoop高級數據分析技術
學習高級分析技術,并利用現有工具包使分析應用更加強大、精確和高效!《Hadoop高級數據分析 使用Hadoop生態系統設計和構建大數據系統》將架構、設計及實現信息恰當地融為一體,將指導你創建超越基礎方法(SF分類、聚類、推薦)的分析系統。
在《Hadoop 高級數據分析 使用Hadoop 生態系統設計和構建大數據系統》中,最佳實踐強調“確保連貫、高效的開發”。將使用包含工具箱、庫、可視化組件和報表代碼在內的標準第三方組件,借助集成“組合件”開發一個可運行的、可擴展的、端到端的完整示例系統。
《Hadoop 高級數據分析 使用Hadoop 生態系統設計和構建大數據系統》強調以下四點:
● 具有分析組件及合理可視化結果的完整、靈活、可配置、高性能數據管道系統的重要性。深入探討的主題包括Spark、H2O、Vopal Wabbit(NLP)、Stanford NLP、Apache Mahout,以及其他適用的工具包、庫和插件。
● 最佳實踐和結構化設計原則。包括重要主題及示例部分。
● 用混合搭配或混合系統實現應用目標的重要性。你在學習深度示例時可體會到混合方法的重要性。
● 使用現有第三方庫是有效開發的關鍵。在開發示例系統時,深度示例將展示一些第三方工具包的功能。
前 言
Apache Hadoop軟件庫逐漸受到重視。它是許多公司、政府機構、科研設施進行高級分布式開發的基礎。Hadoop生態系統現在包含幾十個組件用于搜索引擎、數據庫和數據倉庫進行圖像處理、深度學習及自然語言處理。隨著Hadoop2的出現,不同的資源管理器可用于提供更高級別的復雜性和控制力。競爭對手、替代品以及Hadoop技術和架構的繼承/變種比比皆是,包括Apache Flink、Apache Spark等。軟件專家和評論員多次宣布“Hadoop的死亡”。
我們必須正視一個問題:Hadoop死了嗎?這取決于Hadoop本身的感知界限。我們是否認為Apache Spark是Hadoop批處理文件方法的內存繼承者,是Hadoop家族的一部分,僅僅因為Apache Spark也使用了Hadoop文件系統HDFS?存在很多“灰色區域”的其他例子,其中較新的技術取代或增強了原有的“Hadoop經典”功能。分布式計算是一個不斷移動的目標,是Hadoop和Hadoop生態系統的分界線,在短短幾年間已經發生了顯著變化。在本書中,我們試圖展示Hadoop及其相關生態系統的一些多樣的、動態的方面,并試圖說服你,盡管Hadoop發生變化,但它依然非常活躍、與當前的軟件開發相關并且使數據分析程序員特別感興趣。
Kerry Koitzsch在計算機科學、圖像處理和軟件工程等領域擁有超過二十年的工作經驗,致力于研究Apache Hadoop和Apache Spark技術。Kerry擅長軟件咨詢,精通一些定制的大數據應用,包括分布式搜索、圖像分析、立體視覺和智能圖像檢索系統。Kerry目前就職于Kildane軟件技術股份有限公司,該公司是加州桑尼維爾市的一個機器人系統和圖像分析軟件提供商。
目錄
第Ⅰ部分概念
第1章概述:用Hadoop構建數據分析系統3
1.1構建DAS的必要性4
1.2HadoopCore及其簡史4
1.3Hadoop生態系統概述5
1.4AI技術、認知計算、深度學習以及BDA6
1.5自然語言處理與BDAS6
1.6SQL與NoSQL查詢處理6
1.7必要的數學知識7
1.8設計及構建BDAS的循環過程7
1.9如何利用Hadoop生態系統實現BDA10
1.10“圖像大數據”(IABD)基本思想10
1.10.1使用的編程語言12
1.10.2Hadoop生態系統的多語言組件12
1.10.3Hadoop生態系統架構13
1.11有關軟件組合件與框架的注意事項13
1.12ApacheLucene、Solr及其他:開源搜索組件14
1.13建立BDAS的架構15
1.14你需要了解的事情15
1.15數據可視化與報表17
1.15.1使用EclipseIDE作為開發環境18
1.15.2本書未講解的內容19
1.16本章小結21
第2章Scala及Python進階23
2.1動機:選擇正確的語言定義應用23
2.2Scala概覽24
2.3Python概覽29
2.4錯誤診斷、調試、配置文件及文檔31
2.4.1Python的調試資源32
2.4.2Python文檔33
2.4.3Scala的調試資源33
2.5編程應用與示例33
2.6本章小結34
2.7參考文獻34
第3章Hadoop及分析的標準工具集35
3.1庫、組件及工具集:概覽35
3.2在評估系統中使用深度學習方法38
3.3使用Spring框架及SpringData44
3.4數字與統計庫:R、Weka及其他44
3.5分布式系統的OLAP技術44
3.6用于分析的Hadoop工具集:ApacheMahout及相關工具45
3.7ApacheMahout的可視化46
3.8ApacheSpark庫與組件46
3.8.1可供選擇的不同類型的shell46
3.8.2ApacheSpark數據流47
3.8.3SparklingWater與H2O機器學習48
3.9組件使用與系統建立示例48
3.10封包、測試和文檔化示例系統50
3.11本章小結51
3.12參考文獻51
第4章關系、NoSQL及圖數據庫53
4.1圖查詢語言:Cypher及Gremlin55
4.2Cypher示例55
4.3Gremlin示例56
4.4圖數據庫:ApacheNeo4J58
4.5關系數據庫及Hadoop生態系統59
4.6Hadoop以及UA組件59
4.7本章小結63
4.8參考文獻64
第5章數據管道及其構建方法65
5.1基本數據管道66
5.2ApacheBeam簡介67
5.3ApacheFalcon簡介68
5.4數據源與數據接收:使用ApacheTika構建數據管道68
5.5計算與轉換70
5.6結果可視化及報告71
5.7本章小結74
5.8參考文獻74
第6章Hadoop、Lucene、Solr與高級搜索技術75
6.1Lucene/Solr生態系統簡介75
6.2Lucene查詢語法76
6.3使用Solr的編程示例79
6.4使用ELK棧(Elasticsearch、Logstash、Kibana)85
6.5Solr與Elasticsearch:特點與邏輯93
6.6應用于Elasticsearch和Solr的SpringData組件95
6.7使用LingPipe和GATE實現定制搜索99
6.8本章小結108
6.9參考文獻108
第Ⅱ部分架構及算法
第7章分析技術及算法概覽111
7.1算法類型綜述111
7.2統計/數值技術112
7.3貝葉斯技術113
7.4本體驅動算法114
7.5混合算法:組合算法類型115
7.6代碼示例116
7.7本章小結119
7.8參考文獻119
第8章規則引擎、系統控制與系統編排121
8.1規則系統JBossDrools介紹121
8.2基于規則的軟件系統控制124
8.3系統協調與JBossDrools125
8.4分析引擎示例與規則控制126
8.5本章小結129
8.6參考文獻129
第9章綜合提升:設計一個完整的分析系統131
9.1本章小結136
9.2參考文獻136
第Ⅲ部分組件與系統
第10章數據可視化:可視化與交互分析139
10.1簡單的可視化139
10.2AngularJS和Friends簡介143
10.3使用JHipster集成SpringXD
和AngularJS143
10.4使用d3.js、sigma.js及其他
工具152
10.5本章小結153
10.6參考文獻153
第Ⅳ部分案例研究與應用