Storm 實戰:構建大數據實時計算

Storm 實戰:構建大數據實時計算

隨著大數據實時處理需求的強勁增長,Storm的出現填補了大數據處理生態系統的缺失,並被越來越多的公司所採用。阿里巴巴集團數據平台事業部商家數據業務部正是最早使用Storm的技術團隊之一。

《Storm實戰:構建大數據實時計算 》是一本系統並且具有實踐指導意義的Storm工具書和參考書,對Storm整個技術體系進行了全面的講解,不僅包括對基本概念、特性的介紹,也涵蓋了一些原理說明。

實戰性很強,各章節都提供了一些小案例,同時對於本地,以及集群環境的部署有詳細介紹,易於理解,操作性強。

《Storm實戰:構建大數據實時計算 》一共分為10章:第1章全面介紹了Storm的特性、能解決什麼問題,以及和其他流計算系統的對比;第2章通過實際運行一個簡單的例子,以及介紹本地環境和集群環境的搭建,讓讀者對Storm有了直觀的認識;第3章深入講解了Storm的基本概念,同時實現一個Topology運行;第4章和第5章闡述了Storm的並發度、可靠處理的特性;第6章~第8章詳細而系統地講解了幾個高級特性:事務、DRPC和Trident;第9章以實例的方式講解了Storm在實際業務場景中的套用;第10章總結了幾個在大數據場景套用過程中遇到的經典問題,以及詳細的排查過程。

編輯推薦

Storm以其簡單、靈活、健壯而著稱。隨著大數據實時處理需求的強勁增長,Storm的出現填補了大數據處理生態系統的缺失,並被越來越多的公司所採用。

《Storm實戰:構建大數據實時計算 》來自阿里巴巴集團數據平台事業部商家數據業務部一線經驗的分享。團隊專注於“數據讓生意更簡單”的大數據套用使命,一直致力於解決商家的大數據套用需求。並開發出量子恆道店鋪經、江湖策、御膳房等重量級大數據開發、計算和分析工具。團隊很早便開始使用Storm來處理實時大數據,結合實際的套用場景,積累了豐富的實踐經驗。《Storm實戰:構建大數據實時計算》正是這些經驗和心得的結晶,它一一解答了是Storm是什麼,怎么做,如何做更好等關鍵的實際問題,對於從事大數據處理與分析的讀者而言,是一本相當有價值的學習參考手冊。

阿里巴巴集團技術叢書是抱持著為工程師服務的理念誕生的。

阿里的快速發展,使我們有機會見證技術變革的強大力量。在這過程中,我們經歷了技術的變遷、興衰、成敗,既有收穫也有教訓。如今,阿里已成為一家令人矚目的網際網路公司,站在這樣的時點上,回顧過去,放眼四周,我們深刻地覺得有必要將沉澱下來的一線經驗與智慧,結集出版,理由有三。

1.回報。我們獲得的種種經驗與教訓,只有在阿里這樣快速成長、體量巨大的公司中才有機會親歷。這樣的技術環境並不是每個工程師都有機緣遇到的。這些經歷幫助了我們個人能力的提升,也幫助阿里成為一家技術實力過硬的公司。我們願意把這些內容分享出來,幫助即將或已經面臨類似問題的朋友們,如果他們可以從閱讀中獲得一些啟發而少走彎路的話,將是我們最大的欣慰。

2.交流。在這套叢書里,我們同樣會拋出我們的困惑、問題,藉助叢書的平台,擴大工程師溝通的圈子,以書會友,共同探索、學習、提高。

3.溫故知新。以結集的形式,將以往的經驗與知識固化下來,既可便於以後查閱,也可以幫助我們系統地梳理思路,更為全面地審視、洞察、並理解過去發生的種種,為未來的變化做好更充分、紮實的準備。

基於以上的考慮,阿里巴巴集團技術叢書將立足於實踐,著眼於問題,從工程師的視角解讀技術的內涵。

讓思考成為我們生活的樂趣,讓閱讀成為我們進步的階梯!

內容提要

隨著大數據實時處理需求的強勁增長,Storm的出現填補了大數據處理生態系統的缺失,並被越來越多的公司所採用。阿里巴巴集團數據平台事業部商家數據業務部正是最早使用Storm的技術團隊之一。

《Storm實戰:構建大數據實時計算 》是一本系統並且具有實踐指導意義的Storm工具書和參考書,對Storm整個技術體系進行了全面的講解,不僅包括對基本概念、特性的介紹,也涵蓋了一些原理說明。

實戰性很強,各章節都提供了一些小案例,同時對於本地,以及集群環境的部署有詳細介紹,易於理解,操作性強。

《Storm實戰:構建大數據實時計算 》一共分為10章:第1章全面介紹了Storm的特性、能解決什麼問題,以及和其他流計算系統的對比;第2章通過實際運行一個簡單的例子,以及介紹本地環境和集群環境的搭建,讓讀者對Storm有了直觀的認識;第3章深入講解了Storm的基本概念,同時實現一個Topology運行;第4章和第5章闡述了Storm的並發度、可靠處理的特性;第6章~第8章詳細而系統地講解了幾個高級特性:事務、DRPC和Trident;第9章以實例的方式講解了Storm在實際業務場景中的套用;第10章總結了幾個在大數據場景套用過程中遇到的經典問題,以及詳細的排查過程。

目錄

第1 章 Storm 基礎 1

1.1 Storm 能做什麼 ............................................... 2

1.2 Storm 特性 ...................................................... 3

1.3 其他流計算系統 .............................................. 8

1.4 套用模式 ....................................................... 13

第2 章 Storm 初體驗 17

2.1 本地環境搭建 ............................................... 18

2.2 Storm 集群 .................................................... 25

第3 章 構建Topology 41

3.1 Storm 基本概念 ............................................. 42

3.2 構建Topology ............................................... 53

3.3 小結 .............................................................. 61

第4 章 Topology 的並行度 62

4.1 並行元素 ....................................................... 63

4.2 配置並行度 ................................................... 65

4.3 一個運行中Topology 的例子 ....................... 68

4.4 如何更新運行中的Topology 的並行度 ........ 71

第5 章 訊息的可靠處理 73

5.1 簡介 .............................................................. 74

5.2 理解訊息被完整處理 .................................... 74

5.3 訊息的生命周期 ............................................ 76

5.4 可靠相關的API ............................................ 79

5.5 高效地實現tuple tree .................................... 84

5.6 選擇合適的可靠性級別 ................................ 87

5.7 集群的各級容錯 ............................................ 89

5.8 小結 .............................................................. 91

第6 章 一致性事務 92

6.1 簡單設計一:強順序流 ................................ 93

6.2 簡單設計二:強順序batch 流 ...................... 95

6.3 CoordinateBolt 的原理 .................................. 96

6.4 Transactional Topology .................................. 98

第7 章 DRPC 105

7.1 Storm DRPC ................................................ 106

7.2 總體概述 ..................................................... 106

7.3 LinearDRPCTopologyBuilder ...................... 108

7.4 本地模式DRPC .......................................... 110

7.5 遠程模式DRPC .......................................... 111

7.6 一個複雜的例子 .......................................... 113

7.7 非線性DRPC 拓撲 ..................................... 117

7.8 LinearDRPCTopologyBuilder 工作過程 ...... 117

7.9 高級進階 ..................................................... 118

第8 章 Trident 的特性 119

8.1 理解Trident ................................................ 120

8.2 結合多個Trident 任務 ................................ 124

8.3 消費和生產Field ........................................ 126

8.4 State(狀態保存) ...................................... 128

8.5 Trident Topology 的執行過程 ...................... 136

8.6 總結 ............................................................ 137

第9 章 Storm 實例 138

9.1 一個簡單的實例 .......................................... 139

9.2 複雜一點的實例 .......................................... 150

9.3 其他 ............................................................ 161

第10 章 常見套用問題分析 162

10.1 性能問題排查與定位 ................................ 163

10.2 系統中常見的問題與排查 ......................... 167

10.3 業務問題的定位與排查 ............................ 170

作者簡介

商家數據業務部, 隸屬於阿里巴巴集團數據平台事業部,致力於“數據讓生意更簡單”的大數據套用使命。幾年來,一直專注於解決商家的大數據套用需求,通過量子恆道店鋪經已支撐起超過400萬商家的日常經營決策,並為100萬商家提供淘寶官方流量管理工具——江湖策,讓深度探索、最佳化流量成為可能。2013年開創性地推出雲數據平台——御膳房,作為完善的大數據開放、計算和分析雲平台,打通了“阿里大數據”與“開放平台和服務市場體系”,為淘寶生態中的ISV和賣家提供海量豐富的阿里大數據、強大穩定的雲計算處理能力和安全的數據套用開發容器,支持淘寶生態圈發展基於大數據分析的創新套用,深度助力賣家降低經營成本、提升效率,已為數百萬的商家提供經營鏈路中的大數據套用解決方案。
支撐這些的,是對大數據的分散式計算、倉庫建設、數據挖掘、高並發網站構建、數據可視化等各個領域前沿技術的深入探索和套用。

前言

實時流計算

網際網路從誕生的一刻起,對世界的最大改變就是讓信息能夠實時互動,從而大大提高各個環節的效率。正因為大家對信息實時回響、實時互動的需求,軟體行業除了個人作業系統之外,資料庫(更精確地說是關係型資料庫)應該是軟體行業發展最快、收益最為豐厚的產品了。記得20 世紀90年代,很多銀行別說實時轉賬,連實時查詢都做不到,但是資料庫和高速網路改變了這個情況。

網際網路的進一步發展,從Portal 信息瀏覽型到Search 信息搜尋型再到SNS 關係互動傳遞型,以及電子商務、網際網路旅遊生活產品等,將人們生活中的流通環節線上化。對效率的要求讓大家對實時性的要求進一步提升,而信息的互動和溝通正在從點對點向信息鏈甚至信息網的方向發展,這樣必然帶來數據在各個維度的交叉關聯,數據爆炸已不可避免。因此流式處理加NoSQL 產品應運而生,分別解決實時處理框架和數據大規模存儲計算的問題。

早在2000 年初,諸如UC 伯克利、斯坦福等大學就開始了對流式數據處理的研究,但是由於更多地關注於金融行業的業務場景或者網際網路流量監控的業務場景,以及當時網際網路數據場景的限制,造成了研究多是基於對傳統資料庫處理的流式化,對流式框架本身的研究偏少。目前這樣的研究逐漸沒有了聲音,工業界將更多的精力轉向了實時資料庫。

2010 年Yahoo!對S4 的開源,2011 年Twitter 對Storm的開源,改變了這個現狀。以前網際網路的開發人員在做一個實時套用的時候,除了要關注套用邏輯計算處理本身,還要為數據的實時流轉、互動、分布大傷腦筋。現在的情況卻大為不同,以Storm 為例,開發人員可以快速搭建一套健壯、易用的實時流處理框架,配合SQL 產品或者NoSQL 產品或者MapReduce 計算平台,就可以以低成本做出很多以前很難想像的實時產品,比如量子恆道品牌旗下的多個產品就是構建在Storm 實時流處理平台上的。

本書是一本對Storm 的基礎介紹手冊,但是我們也希望它不僅僅是一本Storm 的使用手冊,我們會在其中加入更多在實際數據生產過程中的經驗和套用架構,最終的目的是幫助所有願意使用實時流處理框架的技術同仁,同時也默默地改變這個世界。

在本書即將出版之際,Storm 已經成功發布了0.9.0 版本,追加了一些新的特性,如使用Netty 作為新的訊息傳輸層、提供日誌查看UI 等,同時修復了大量跟穩定性相關的BUG。本次發布對茁壯成長的Storm 來說是一次巨大的進步。新版本的Storm 在系統結構及使用方式方面,並沒有太多變化,本書可以幫助你快速掌握套用Storm 的知識和技能。

本書由團隊中多位同學先後參與合作完成,為體現阿里巴巴的文化,這裡列出所有涉及同學的花名:張中、太奇、鳴世、曦軒、嗚珂、民瞻、九翎、淵虹、國相、晨炫、木晗、毅山、宋智、澄蒼,是大家的合作與努力才讓此書得以成行。同時感謝劉皎等編輯的辛苦工作,是你們把這本書呈獻給讀者,感謝你們!同樣要感謝支持我們工作的同事們:冰夷、王賁,有你們的幫助和支持才讓我們有決心和毅力來完成這項工作。

相關詞條

相關搜尋

熱門詞條

聯絡我們