文章目錄
- 大數據導論
- 第1章 大數據概述
- 第2章 大數據與雲計算、物聯網、人工智能
- 第3章 大數據技術
- 大數據技術的不同層面及其功能
- 傳統的數據採集與大數據採集的區別
- 互聯網爬蟲基本架構、爬取策略
- ETL概念
- 數據清洗的主要內容
- 大數據時代的數據存儲和管理技術
- 數據挖掘和機器學習算法、深度學習概念和應用領域
- 大數據處理分析技術類型及解決的主要問題
- 數據可視化概念
- 數據安全技術
- 第4、5、6章 大數據應用、大數據安全、大數據思維
- 第9章 Hadoop、HDFS、MapReduce、Hive、Spark簡介
大數據導論
第1章 大數據概述
數據類型、數據組織形式、數據的使用
數據類型
類型 | 含義 | 本質 | 舉例 | 技術 |
---|---|---|---|---|
結構化數據 | 直接可以用傳統關係數據庫存儲和管理的數據 | 先有結構,後有管理 | 數字、符號、表格 | SQL |
非結構化數據 | 無法用傳統關係數據庫存儲和管理的數據 | 難以發現同一的結構 | 語音、圖像、文本 | NoSQL,NewSQL,雲技術 |
半結構化數據 | 經過轉換用傳統關係數據庫存儲和管理的數據 | 先有數據,後有結構 | HTML、XML | RDF、OWL |
數據組織形式
計算機系統中的數據組織形式主要有兩種,即文件和數據庫。
-
文件:計算機系統中的很多數據都是以文件形式存在的,比如一個WORD文件、一個文本文件、一個網頁文件、一個圖片文件等等。
-
數據庫:計算機系統中另一種非常重要的數據組織形式就是數據庫,數據庫已經成爲計算機軟件開發的基礎和核心。
數據的使用
-
數據清洗
-
數據管理
-
數據分析
-
信息化浪潮、信息科技爲大數據時代提供技術支撐
- 存儲設備容量不斷增加
- CPU處理能力大幅提升
- 網絡帶寬不斷增加
大數據的概念(4V)
科學研究四種範式
-
實驗
-
理論
-
計算機
-
數據
第2章 大數據與雲計算、物聯網、人工智能
雲計算概念、雲計算服務模式和類型
五個特徵
-
寬帶接入
-
彈性架構
-
可測量服務
-
按需自服務
-
虛擬化的資源池
四個部署模型
-
公有云
-
私有云
-
混合雲
-
社區雲
服務模式
IaaS
(Infrastructure as a Service):基礎設施級服務。消費者通過因特網可以從完善的計算機基礎設施獲得服務。
IaaS通過網絡向用戶提供計算機(物理機和虛擬機)、存儲空間、網絡連接、負載均衡和防火牆等基本計算資源;用戶在此基礎上部署和運行各種軟件,包括操作系統和應用程序。例如,通過亞馬遜的AWS,用戶可以按需定製所要的虛擬主機和塊存儲等,在線配置和管理這些資源。
PaaS
(Platform as a Service):平臺級服務。PaaS實際上是指將軟件研發的平臺作爲一種服務,以SaaS的模式提交給用戶。因此,PaaS也是SaaS模式的一種應用。但是,PaaS的出現可以加快SaaS的發展,尤其是加快SaaS應用的開發速度。
平臺通常包括操作系統、編程語言的運行環境、數據庫和 Web服務器,用戶在此平臺上部署和運行自己的應用。用戶不能管理和控制底層的基礎設施,只能控制自己部署的應用。目前常見的PaaS提供商有CloudFoundry、谷歌的GAE等。
SaaS
(Software as a Service):軟件級服務。它是一種通過因特網提供軟件的模式,用戶無需購買軟件,而是向提供商租用基於Web的軟件,來管理企業經營活動,例如郵件服務、數據處理服務、財務管理服務等
大數據系統與雲安全、雲安全及其關鍵技術
-
認證授權問題
-
訪問控制問題
-
操作審計問題
-
敏感數據保護問題
-
認證授權問題
物聯網概念、物聯網三要素、物聯網層次架構
大數據與雲計算、物聯網的關係
人工智能概念、人工智能關鍵技術
人工智能(Artificial Intelligence),英文縮寫爲AI,是研究、開發用於模擬、延伸和擴展人的智能的理論、方法、技術及應用系統的一門新的技術科學。
關鍵技術:機器學習、專家系統、知識圖譜、計算機視覺、自然語言處理、生物特徵識別、人機交互、VR/AR、模式識別
大數據與人工智能的關係
- 人工智能需要數據來建立其智能,特別是機器學習
- 大數據技術爲人工智能提供了強大的存儲能力和計算能力
第3章 大數據技術
大數據技術的不同層面及其功能
傳統的數據採集與大數據採集的區別
互聯網爬蟲基本架構、爬取策略
- 將這些URL放入待抓取URL隊列;
- 讀取URL,Download對應頁面;
- 解析頁面,嗅探新的URL去重加入隊列;
- Goto step 3
ETL概念
ETL
(Extract、Transform、load)
ETL是數據獲取的重要手段,需要知道具體格式
數據清洗的主要內容
大數據時代的數據存儲和管理技術
- 分佈式文件系統
- NewSQL和NoSQL數據庫
數據挖掘和機器學習算法、深度學習概念和應用領域
大數據處理分析技術類型及解決的主要問題
大數據計算模式 | 解決問題 | 代表產品 |
---|---|---|
批處理計算 | 針對大規模數據的批量處理 | MapReduce、Spark等 |
流計算 | 針對流數據的實時計算 | Storm、S4、Flume、Streams、Puma、DStream、Super Mario、銀河流數據處理平臺等 |
圖計算 | 針對大規模圖結構數據的處理 | Pregel、GraphX、Giraph、PowerGraph、Hama、GoldenOrb等 |
查詢分析計算 | 大規模數據的存儲管理和查詢分析 | Dremel、Hive、Cassandra、Impala等 |
數據可視化概念
數據可視化是指將大型數據集中的數據以圖形圖像形式表示,並利用數據分析和開發工具發現其中未知信息的處理過程
數據安全技術
- 身份認證技術
- 防火牆技術
- 訪問控制技術
- 入侵檢測技術
- 加密技術
第4、5、6章 大數據應用、大數據安全、大數據思維
推薦系統、推薦方法、推薦系統
推薦系統是自動聯繫用戶和物品的一種工具,和搜索引擎相比,推薦系統通過研究用戶的興趣偏好,進行個性化計算。推薦系統可發現用戶的興趣點,幫助用戶從海量信息中去發掘自己潛在的需求。
大數據應用領域
- 互聯網領域
- 生物醫學領域
- 物流領域
- 城市管理領域
- 金融領域
- 汽車領域
- 零售領域
- 餐飲領域
- 電信領域
- 能源領域
- 體育和娛樂領域
- 安全領域
- 政府領域
大數據安全與傳統數據安全的不同
- 大數據成爲網絡攻擊的顯著目標
- 大數據加大隱私泄露風險
- 大數據技術被應用到攻擊手段中
- 大數據成爲高級可持續攻擊(APT)的載體
大數據思維方式
- 全樣而非抽樣
- 效率而非精確
- 相關而非因果
- 以數據爲中心
- 我爲人人,人人爲我
第9章 Hadoop、HDFS、MapReduce、Hive、Spark簡介
Hadoop的特性、項目結構
特性:
- 高可靠性
- 高效性
- 高可擴展性
- 高容錯性
- 成本低
- 運行在Linux平臺上
- 支持多種編程語言
項目結構:
組件 | 功能 |
---|---|
HDFS | 分佈式文件系統 |
MapReduce | 分佈式並行編程模型 |
YARN | 資源管理和調度器 |
Tez | 運行在YARN之上的下一代Hadoop查詢處理框架,它會將很多的mr任務分析優化後構建一個有向無環圖,保證最高的工作效率 |
Hive | Hadoop上的數據倉庫 |
HBase | Hadoop上的非關係型的分佈式數據庫 |
Pig | 一個基於Hadoop的大規模數據分析平臺,提供類似SQL的查詢語言Pig Latin |
Sqoop | 用於在Hadoop與傳統數據庫之間進行數據傳遞 |
Oozie | Hadoop上的工作流管理系統 |
Zookeeper | 提供分佈式協調一致性服務 |
Storm | 流計算框架 |
Flume | 一個高可用的,高可靠的,分佈式的海量日誌採集、聚合和傳輸的系統 |
Ambari | Hadoop快速部署工具,支持Apache Hadoop集羣的供應、管理和監控 |
Kafka | 一種高吞吐量的分佈式發佈訂閱消息系統,可以處理消費者規模的網站中的所有動作流數據 |
Spark | 類似於Hadoop MapReduce的通用並行框架 |
HDFS相關概念、體系結構、數據存取策略、數據錯誤與恢復
相關概念
-
塊
HDFS默認一個塊128MB,一個文件被分成多個塊,以塊作爲存儲單位。
- 支持大規模文件存儲
- 簡化系統設計
- 適合數據備份
-
NameNode和DataNode
NameNode DataNode 存儲元數據 存儲文件內容 元數據保存在內存中 文件內容保存在磁盤 保存文件,block,datanode之間的映射關係 維護了block id和datanode本地文件的映射關係 -
NameNode
-
在HDFS中,名稱節點(NameNode)負責管理分佈式文件系統的命名空間,保存了兩個核心的數據結構,即FsImage和EditLog
-
名稱節點記錄了每個文件中各個塊所在的數據節點的位置信息
-
-
FsImage文件
- FsImage文件包含文件系統中所有目錄和文件inode的序列化形式。
- FsImage文件沒有記錄塊存儲在哪個數據節點。而是由名稱節點把這些 映射保留在內存中
-
SecondaryNameNode
第二名稱節點是HDFS架構中的一個組成部分,它是用來保存名稱節點中對HDFS 元數據信息的備份,並減少名稱節點重啓的時間。SecondaryNameNode一般是單獨運行在一臺機器上
-
數據節點(DataNode)
- 數據節點是分佈式文件系統HDFS的工作節點,負責數據的存儲和讀取,會根據
客戶端或者是名稱節點的調度來進行數據的存儲和檢索,並且向名稱節點定期發
送自己所存儲的塊的列表
- 每個數據節點中的數據會被保存在各自節點的本地Linux文件系統中
-
HDFS體系結構
HDFS採用了主從(Master/Slave)結構模型,一個HDFS集羣包括一個名稱節點(NameNode)和若干個數據節點(DataNode)。名稱節點作爲中心服務器,負責管理文件系統的命名空間及客戶端對文件的訪問。集羣中的數據節點一般是一個節點運行一個數據節點進程,負責處理文件系統客戶端的讀/寫請求,在名稱節點的統一調度下進行數據塊的創建、刪除和複製等操作。每個數據節點的數據實際上是保存在本地Linux文件系統中的
數據存取策略
- 數據存放
- 第一個副本:放置在上傳文件的數據節點;如果是集羣外提交,則隨機挑選一臺磁
- 盤不太滿、CPU不太忙的節點
- 第二個副本:放置在與第一個副本不同的機架的節點上
- 第三個副本:與第一個副本相同機架的其他節點上
- 更多副本:隨機節點
- 數據讀取
- HDFS提供了一個API可以確定一個數據節點所屬的機架ID,客戶端也可以調用API獲取自己所屬的機架ID
- •當客戶端讀取數據時,從名稱節點獲得數據塊不同副本的存放位置列表,列表中包含了副本所在的數據節點,可以調用API來確定客戶端和這些數據節點所屬的機架ID,當發現某個數據塊副本對應的機架ID和客戶端對應的機架ID相同時,就優先選擇該 副本讀取數據,如果沒有發現,就隨機選擇一個副本讀取數據
數據錯誤與恢復
-
名稱節點出錯
HDFS設置了備份機制,把這些核心文件同步複製到備份服務器SecondaryNameNode上。當名稱節點出錯時,就可以根據備份服務器SecondaryNameNode中的FsImage和Editlog數據進行恢復。
-
數據節點出錯
-
每個數據節點會定期向名稱節點發送“心跳”信息,向名稱節點報告自己的狀態
-
當數據節點發生故障,或者網絡發生斷網時,名稱節點就無法收到來自一些數據節點的心跳信息,這時,這些數據節點就會被標記爲“宕機”,節點上面的所有數據都會被標記爲“不可讀”,名稱節點不會再給它們發送任何I/O請求
-
這時,有可能出現一種情形,即由於一些數據節點的不可用,會導致一些數據塊的副本數量小於冗餘因子
-
名稱節點會定期檢查這種情況,一旦發現某個數據塊的副本數量小於冗餘因子,就會啓動數據冗餘複製,爲它生成新的副本
-
HDFS和其它分佈式文件系統的最大區別就是可以調整冗餘數據的位置
-
-
數據出錯
-
每個數據節點會定期向名稱節點發送“心跳”信息,向名稱節點報告自己的狀態
-
當數據節點發生故障,或者網絡發生斷網時,名稱節點就無法收到來自一些數據節點的 心跳信息,這時,這些數據節點就會被標記爲“宕機”,節點上面的所有數據都會被標 記爲“不可讀”,名稱節點不會再給它們發送任何I/O請求
-
這時,有可能出現一種情形,即由於一些數據節點的不可用,會導致一些數據塊的副本
數量小於冗餘因子
- 名稱節點會定期檢查這種情況,一旦發現某個數據塊的副本數量小於冗餘因子,就會啓
動數據冗餘複製,爲它生成新的副本
- HDFS和其它分佈式文件系統的最大區別就是可以調整冗餘數據的位置
-
HDFS如何減輕名稱節點的負擔
MapReduce相較於傳統並行計算框架的優勢
傳統並行計算框架 | MapReduce | |
---|---|---|
集羣架構/容錯性 | 共享式(共享內存/共享存儲),容錯性差 | 非共享式,容錯性好 |
硬件/價格/擴展性 | 刀片服務器、高速網、SAN,價格貴,擴展性差 | 普通PC機,便宜,擴展性好 |
編程/學習難度 | what-how,難 | what,簡單 |
適用場景 | 實時、細粒度計算、計算密集型 | 批處理、非實時、數據密集型 |
MapReduce體系結構、應用程序執行過程
體系結構
MapReduce體系結構主要由四個部分組成,分別是:Client、JobTracker、TaskTracker以及Task
-
Client
- 用戶編寫的MapReduce程序通過Client提交到JobTracker端
- 用戶可通過Client提供的一些接口查看作業運行狀態
-
JobTracker
-
JobTracker負責資源監控和作業調度
-
JobTracker 監控所有TaskTracker與Job的健康狀況,一旦發現失敗,就將相
應的任務轉移到其他節點
-
JobTracker 會跟蹤任務的執行進度、資源使用量等信息,並將這些信息告訴任務調度器(TaskScheduler,可插拔,可自定義),而調度器會在資源出現空閒時,選擇合適的任務去使用這些資源
-
TaskTracker
-
TaskTracker 會週期性地通過“心跳”將本節點上資源的使用情況和任務的
運行進度彙報給JobTracker,同時接收JobTracker 發送過來的命令並執行相
應的操作(如啓動新任務、殺死任務等)
-
TaskTracker 使用”slot(槽)”等量劃分本節點上的資源量(CPU、內存等)。
-
一個Task 獲取到一個slot 後纔有機會運行,而Hadoop調度器的作用就是將各個TaskTracker上的空閒slot分配給Task使用。slot 分爲Map slot 和 Reduce slot 兩種,分別供MapTask 和Reduce Task 使用
-
-
Task
Task 分爲Map Task 和Reduce Task 兩種,均由TaskTracker 啓動
MapReduce應用程序執行過程
數據倉庫概念、 Hive特點
數據倉庫
(Data Warehouse)是一個面向主題的(Subject Oriented)、集成的(Integrated)、相對穩定的(Non-Volatile)、反映歷史變化(Time Variant)的數據集合,用於支持管理決策。
-
Hive是一個構建於Hadoop頂層的數據倉庫工具
-
支持大規模數據存儲、分析,具有良好的可擴展性
-
某種程度上可以看作是用戶編程接口,本身不存儲和處理數據
-
依賴分佈式文件系統HDFS存儲數據
-
依賴分佈式並行計算模型MapReduce處理數據
-
定義了簡單的類似SQL 的查詢語言——HiveQL
-
用戶可以通過編寫的HiveQL語句運行MapReduce任務
-
可以很容易把原來構建在關係數據庫上的數據倉庫應用程序移植到Hadoop平臺上
-
是一個可以提供有效、合理、直觀組織和使用數據的分析工具
Hive具有的特點非常適用於數據倉庫
- 採用批處理方式處理海量數據
- Hive需要把HiveQL語句轉換成MapReduce任務進行運行
- 數據倉庫存儲的是靜態數據,對靜態數據的分析適合採用批處理方式,不需要快速響應給出結果,而且數據本身也不會頻繁變化
- 提供適合數據倉庫操作的工具
- Hive本身提供了一系列對數據進行提取、轉換、加載(ETL)的工具,可以存儲、查詢和分析存儲在Hadoop中的大規模數據
- 這些工具能夠很好地滿足數據倉庫各種應用場景
Hive與Hadoop生態系統中其他組件的關係
-
Hive依賴於HDFS存儲數據
-
Hive依賴於MapReduce 處理數據
-
在某些場景下Pig可以作爲Hive的替代工具
-
HBase 提供數據的實時訪問
Spark特點、Spark基本概念
-
運行速度快:使用DAG執行引擎以支持循環數據流與內存計算
-
容易使用:支持使用Scala、Java、Python和R語言進行編程,可以通過Spark Shell進行交互式編程
-
通用性:Spark提供了完整而強大的技術棧,包括SQL查詢、流式計算、機器學習和圖算法組件
-
運行模式多樣:可運行於獨立的集羣模式中,可運行於Hadoop中,並且可以訪問HDFS、HBase、Hive等多種數據源
Spark與Hadoop的對比、Spark RDD
Hadoop存在如下一些缺點:
-
表達能力有限
-
磁盤IO開銷大
-
延遲高
-
任務之間的銜接涉及IO開銷
-
在前一個任務執行完成之前,其他任務就無法開始,難以勝任複雜、多階段的計算任務
相比於Hadoop MapReduce,Spark主要具有如下優點:
-
Spark的計算模式也屬於MapReduce,但不侷限於Map和Reduce操作,還提供了多 種數據集操作類型,編程模型比Hadoop MapReduce更靈活
-
Spark提供了內存計算,可將中間結果放到內存中,對於迭代運算效率更高
-
Spark基於DAG的任務調度執行機制,要優於Hadoop MapReduce的迭代執行機制
MapReduce | Spark |
---|---|
數據存儲結構:磁盤HDFS文件系統的split | 使用內存構建彈性分佈式數據集RDD 對數據進行運算和cache |
編程範式:Map + Reduce | DAG: Transformation + Action |
計算中間結果落到磁盤,IO代價大 | 計算中間結果在內存中維護 存取速度比磁盤高几個數量級 |
Task以進程的方式維護,需要數秒時間才能啓動任務 | Task以線程的方式維護 對於小數據集讀取能夠達到亞秒級的延遲 |
Spark RDD
RDD提供了一個抽象的數據架構,我們不必 擔心底層數據的分佈式特性,只需將具體的應用邏輯表達爲一系列轉換處理,不同RDD之間的轉換操作形成依賴關係,可以實現管道化,避免中間數據存儲
RDD典型的執行過程如下:
-
RDD讀入外部數據源進行創建
-
RDD經過一系列的轉換(Transformation)操作,每一次都會產生不同的RDD,供給下一個轉換操作使用
-
最後一個RDD經過“動作”操作進行轉換,並輸出到外部數據源
RDD特性
-
高效的容錯性
現有容錯機制:數據複製或者記錄日誌
RDD:血緣關係、重新計算丟失分區、無需回滾系統、重算過程在不同
節點之間並行、只記錄粗粒度的操作
-
中間結果持久化到內存,數據在內存中的多個RDD操作之間進行傳遞,避免 了不必要的讀寫磁盤開銷
擔心底層數據的分佈式特性,只需將具體的應用邏輯表達爲一系列轉換處理,不同RDD之間的轉換操作形成依賴關係,可以實現管道化,避免中間數據存儲
RDD典型的執行過程如下:
-
RDD讀入外部數據源進行創建
-
RDD經過一系列的轉換(Transformation)操作,每一次都會產生不同的RDD,供給下一個轉換操作使用
-
最後一個RDD經過“動作”操作進行轉換,並輸出到外部數據源
RDD特性
-
高效的容錯性
現有容錯機制:數據複製或者記錄日誌
RDD:血緣關係、重新計算丟失分區、無需回滾系統、重算過程在不同
節點之間並行、只記錄粗粒度的操作
-
中間結果持久化到內存,數據在內存中的多個RDD操作之間進行傳遞,避免 了不必要的讀寫磁盤開銷