Hadoop是什麼
- Hadoop是Apache基金會開發的分佈式系統基礎架構
- Hadoop主要被用來解決海量數據的存儲和海量數據的分析計算
- 廣義上來說,Hadoop通常是指一個更廣泛的概念----Hadoop生態圈
Hadoop發展歷史
- Lucene框架是Doug Cutting開創的開源軟件,用Java書寫代碼,實現與Google類似的全文搜索功能,它提供了全文檢索引擎的架構,包括完整的查詢引擎和索引引擎。
- 2001年年底Lucene成爲Apache基金會的一個子項目。
- 對於海量數據的場景,Lucene面對與Google同樣的困難,存儲數據困難,檢索速度慢。
- 學習和模仿Google解決這些問題的辦法 :微型版Nutch。
- 可以說Google是Hadoop的思想之源(Google在大數據方面的三篇論文)
GFS----> HDFS
Map-Reduce---->MR
BigTable---->HBase- 2003-2004年,Google公開了部分GFS和MapReduce思想的細節,以此爲基礎Doug Cutting等人用了2年業餘時間實現了DFS和MapReduce機制,使Nutch性能飆升。
- 2005 年Hadoop 作爲 Lucene的子項目 Nutch的一部分正式引入Apache基金會。
- 2006 年 3 月份,Map-Reduce和Nutch Distributed File System (NDFS) 分別被納入到 Hadoop 項目中,Hadoop就此正式誕生,標誌着大數據時代來臨。
- Hadoop名字的來源於Doug Cutting兒子的玩具大象
Hadoop三大發行版本
Hadoop三大發行版本:Apache、Cloudera、Hortonworks
· Apache 版本最原始(最基礎)的版本,對於入門較好
· Cloudera 在大型互聯網中用的較多,其配置較爲簡單,可以一鍵進行集羣的部署
· Hortonworks 國外用的較多,文檔較好
- Apache Hadoop
官網地址: http://hadoop.apache.org/releases.html
下載地址: https://archive.apache.org/dist/hadoop/common/- Cloudera Hadoop
官網地址: https://www.cloudera.com/downloads/cdh/5-10-0.html
下載地址: http://archive-primary.cloudera.com/cdh5/cdh/5/- Hortonworks Hadoop
官網地址: https://hortonworks.com/products/data-center/hdp/
下載地址 https://hortonworks.com/downloads/#data-platform
Hadoop優勢(4高)
- 高可靠性: Hadoop底層維護多個數據副本,所以即使Hadoop某個計算元素或存儲出現故障,也不會導致數據的丟失。
- 高擴展性: 在集羣間分配任務數據,可方便的擴展數以千計的節點。
- 高效性: 在MapReduce的思想下,Hadoop是並行工作的,以加快任務處理速度。
- 高容錯性: 能夠自動將失敗的任務重新分配。
Hadoop組成(重點)
Hadoop1.x和Hadoop2.x區別
在Hadoop1.x時代,Hadoop中的MapReduce同時處理業務邏輯運算和資源的調度,耦合性較大,在Hadoop2.x時代,增加了Yarn。Yarn只負責資源的調度,MapReduce只負責運算。
HDFS(Hadoop Destribute File System)架構概述
- NameNode(NN):
存儲文件的元數據,如文件名,文件目錄結構,文件屬性(生成時間、副本數、文件權限),以及每個文件的塊列表和塊所在的DataNode等。
元數據;描述數據本身信息的數據
- DataNode(DN):
在本地文件系統存儲文件塊數據,以及塊數據的校驗和。
- Secondary NameNode(2NN):
用來監控HDFS狀態的輔助後臺程序,每隔一段時間獲取HDFS元數據的快照。
但是2NN並不是NN的熱備份。如果將NN比做做手術的主刀醫生,那麼2NN就相當於遞鉗子,手術刀的醫生,當主刀醫生掛了,遞刀的醫生可以代替主刀醫生嗎?顯然是夠嗆。所以2NN相比於NN,更多是輔助的作用。
Yarn架構概述
- ResourceManager(RM):
- 處理客戶端的請求
- 監控NodeManager
- 啓動或監視AppilcationMaster
- 資源的分配與調度
- NodeManager(NM):
- 管理單個節點上的資源
- 處理來自ResourceManager的命令
- 處理來自ApplicationMaster的命令
- ApplicationMaster(AM):
- 負責數據的切分
- 爲應用程序申請資源,並分配給內部的任務
- 任務的監控與容錯
- Container:
Container是Yarn中的資源抽象,它封裝了某個節點上的多維度資源,如內存、CPU、磁盤、網絡等
ResourceMaster相當於大隊長,然後有個任務ApplicationMaster來了,大隊長覺得這個任務太小了,不值得他出手,於是他就指派NodeManager爲"臨時大隊長"來處理這個任務,但是“臨時大隊長”發現這個任務他完成不了,於是就拿着ApplicationMaster給大隊長說:“我的的資源不夠處理這個任務”,於是大隊長通過ApplicationMaster調度別的NodeManager的Container的資源來並行處理
MapReduce架構概述
MapReduce將計算過程分爲兩個階段:Map和Reduce
- Map階段並行處理輸入數據
- Reduce階段對Map結果進行彙總
大數據技術生態體系
名詞解釋:
- Sqoop: Sqoop是一款開源的工具,主要用於在Hadoop、Hive與傳統的數據庫(MySql)間進行數據的傳遞,可以將一個關係型數據庫(例如 :MySQL,Oracle 等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關係型數據庫中。
- Flume: Flume是Cloudera提供的一個高可用的,高可靠的,分佈式的海量日誌採集、聚合和傳輸的系統,Flume支持在日誌系統中定製各類數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各種數據接受方(可定製)的能力。
- Kafka: Kafka是一種高吞吐量的分佈式發佈訂閱消息系統,有如下特性:
- 通過O(1)的磁盤數據結構提供消息的持久化,這種結構對於即使數以TB的消息存儲也能夠保持長時間的穩定性能。
- 高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒數百萬的消息。
- 支持通過Kafka服務器和消費機集羣來分區消息。
- 支持Hadoop並行數據加載。
- Storm: Storm用於“連續計算”,對數據流做連續查詢,在計算時就將結果以流的形式輸出給用戶。
- Spark: Spark是當前最流行的開源大數據內存計算框架。可以基於Hadoop上存儲的大數據進行計算。
- Mahout: Apache Mahout是個可擴展的機器學習和數據挖掘庫。
- Oozie: Oozie是一個管理Hdoop作業(job)的工作流程調度管理系統。
- Hbase: HBase是一個分佈式的、面向列的開源數據庫。HBase不同於一般的關係數據庫,它是一個適合於非結構化數據存儲的數據庫。
- Hive: Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射爲一張數據庫表,並提供簡單的SQL查詢功能,可以將SQL語句轉換爲MapReduce任務進行運行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。
- ZooKeeper: Zookeeper是Google的Chubby一個開源的實現。它是一個針對大型分佈式系統的可靠協調系統,提供的功能包括:配置維護、名字服務、 分佈式同步、組服務等。ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。
推薦系統項目框架