Hadoop筆記:
1、combiner優化方案:
combiner優化類似于reduce函數那樣對本地數據進行處理(如:需要去有兩個任務需要取出最大值,那么可以使用combiner對單個mapper進行最大值計算,在作為reduce的輸入)?
優點:減少mapper和reduce之間的數據傳輸量,得到的結果不會變?
缺點:并不是所有的數據處理都適合使用combiner(如:需要計算平均值就不能使用combiner,?
因為平均值和所有的數據都有聯系的,而最大值始終不變)
2.4.3 運行分布式Mapreduce作業
優勢一、同一個程序將完整的數據中運行,簡單的說就是一個處理程序可以處理整個分布式的數據集。
優勢二、允許擴充數據大小和硬件規模
2.5 Hadoop流
Hadoop提供了一個API來運行MapReduce,除了允許用Java之外的語言來編寫自己的map和reduce函數
第三章 Hadoop分布式文件系統
3.1 HDFS的設計
HDFS是為以流式數據訪問模式存儲超大文件而設計的文件系統。
大數據技術的廣泛應用使其成為引領眾多行業技術進步、促進效益增長的關鍵支撐技術。根據數據處理的時效性,大數據處理系統可分為批式(BATCH)大數據和流式(STREAMING)大數據兩類。其中,批式大數據又被稱為歷史大數據,流式大數據又被稱為實時大數據。?
舉個例子來說:我們把數據當成水庫的話,水庫里面存在的水就是批式大數據,進來的水是流式大數據。
流式大數據實時處理是大數據時代信息化的重要抓手。采用“事中”甚至“事前”模式實現感知、分析、判斷、決策等功能的智能系統需要流式大數據實時處理平臺的支撐。
此外,流式大數據實時處理可以為大數據驅動的深度學習提供計算框架支撐。“流立方”流式大數據實時處理平臺可為研制融合邏輯推理、概率統計、眾包、神經網絡等多種形態的下一代人工智能統一計算框架提供支持。
特點:?
超大文件、流式數據訪問、商用硬件、低時間延遲的數據訪問、大量的小文件、多用戶寫入,任意修改文件
3.2 HDFS概念
3.2.1 數據塊
磁盤進行讀寫的最小單位,HDFS默認數據塊大小為128MB,每個數據塊作為獨立的存儲單元。不同的是HDFS文件塊大小小于整個塊時候不會占用整個塊的空間。
特點:?
1、一個文件的大小可以大于網絡中任意一個磁盤的容量。?
2、大大簡化了存儲子系統的設計。?
3、適合數據備份而提供數據的容錯能力和提高可用性。
3.2.2 namenode和datanode
HDFS有兩類節點,即管理節點和工作節點:
namenode:是管理節點,管理文件系統的命名空間。它維護著整個文件系統樹和整棵樹內所有的文件和目錄。保留著名命空間鏡像文件和編輯日志文件到本地。
datanode:也記錄著文件中各個塊所在的數據節點信息,但并不是永久保存的,會隨著啟動主機而變化。會定期的發送數據塊信息給namenode
客戶端:代表用戶通過namenode和datanode交互來訪問整個文件系統。
Hadoop提供的容錯機制:
1、備份那些組成文件系統元數據持久狀態的文件,可以配置namenode在多個文件系統上保存文件元數據持久狀態。?
2、運行一個輔助的namenode,但它不能作為namenode使用。作用是定期合并編輯日志和命名空間鏡像,輔助namenode必須在單獨的物理機器上運行,在namenode故障時啟用。
3.2.3 快緩存
針對于被頻繁訪問的數據塊,將其緩存在datanode的內存中,以堆外塊的形式存在
3.2.4 聯邦HDFS
保存文件和數據塊的引用關系:
1、命名空間卷:由命名空間的元數據和一個數據塊池組成。名命空間卷之間是相互獨立的,兩兩之間并不相互通信。?
2、數據塊池:數據塊池包含了該命名空間下文件所有的數據塊。因此集群中的datanode需要注冊到每個namenode,并且儲存著來自多個數據塊池中的數據。
3.2.5 HDFS的高可用性
恢復一個失效的namenode:?
1、啟動一個保存有元數據副本的namenode,?
2、重演編輯日志?
3、接收到獨自多得datanode的數據塊報告,并退出安全模式
高可用支持目標架構需要做的修改:
namenode之間需要通過高可用存儲實現編輯日志的共享,當備用namenode接管工作后,它通過讀取共享編輯日志至末尾實現與活動的namenode的狀態同步。
datanode需要同時向兩個namenode發送數據塊處理報告,因為數據映射存儲在namenode的內存中,而非磁盤。
客戶端使用特定的機制來處理namenode失效問題,這一機制對用戶是透明的。
輔助namenode的角色被備用namenode所包含,備用namenode為活動的namenode命名空間設置周期性檢查點。
故障規避與切換:
故障轉移控制器管理著將活動namenode轉移為備用的namenode的過程,默認使用Zookeeper來確保有且僅有一個活動的namenode。監視宿主namenode是否失效。
3.3 命令行接口
3.4 Hadoop文件系統
Java抽象類org.apache.hadoop.fs.FileSystem,定義了Hadoop中一個文件系統的客戶端接口,并且有幾個具體實現類:
文件系統URL方案實現類描述
Localfilefs.LocalFileSystem使用客戶端校驗和的本地磁盤文件系統
HDFShdfshdfs.DistributedFileSystemHadoop分布式文件系統,將HDFS設計成mapreduce可以實現高性能
WebHDFSwebhdfshdfs.Web.WebHdfsFileSystem基于HTTP的文件系統,提供對HDFS文件的認證讀/寫訪問
HFTPhftphdfs.HfitFileSystem一個在HTTP上提供對HDFS只讀訪問的文件系統
HSFTPhsftphdfs.HsftpFileSystem在HTTPS上提供對HDFS只讀訪問的文件系統
hadoop提供許多文件系統的接口,它一般使用URI 方案選取合適的文件系統實例來交互。盡管在運行那些可以訪問任何文件系統的mapreduce程序,但是在處理大數據的時候,仍然需要選擇最優的文件系統。
RPC
遠程過程調用協議 編輯RPC(Remote Procedure Call)—遠程過程調用,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通信程序之間攜帶信息數據。在OSI網絡通信模型中,RPC跨越了傳輸層和應用層。RPC使得開發包括網絡分布式多程序在內的應用程序更加容易。?
RPC采用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。首先,客戶機調用進程發送一個有進程參數的調用信息到服務進程,然后等待應答信息。在服務器端,進程保持睡眠狀態直到調用信息到達為止。當一個調用信息到達,服務器獲得進程參數,計算結果,發送答復信息,然后等待下一個調用信息,最后,客戶端調用進程接收答復信息,獲得進程結果,然后調用執行繼續進行。?
有多種 RPC模式和執行。最初由 Sun 公司提出。IETF ONC 憲章重新修訂了 Sun 版本,使得 ONC RPC 協議成為 IETF 標準協議。現在使用最普遍的模式和執行是開放式軟件基礎的分布式計算環境(DCE)。
Thrift:
thrift是一個軟件框架,用來進行可擴展且跨語言的服務的開發。它結合了功能強大的軟件堆棧和代碼生成引擎,以構建在 C++, Java, Go,Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 這些編程語言間無縫結合的、高效的服務。 Thrift支持的數據類型:
基本類型
容器
服務類型
Thrift將Hadoop文件系統展示為一個Apache Thrift服務來彌補這個不足,使得任何有Thrift綁定的語言都能輕松的與Hadoop文件系統互動,如HDFS 文件系統。?
使用Thrift API,需運行提供Thrift服務的Java服務器,以代理的方式訪問hadoop文件系統,提供了:
C語言庫
PUSE
webDAV
HTTP
FTP
3.5 JAVA 接口
本章需要了解:
Hadoop的Filesystem文件系統
Hadoop交互的API
3.5.1 從Hadoop URL中讀取數據