1、 Hadoop基本介紹
1.1Hadoop是什麼
- Hadoop是一個由Apache基金會所開發的分布式系統基礎架構
- 主要解決,海量資料的存儲和海量資料的分析計算問題
- 廣義上來說,Hadoop通常是指一個更廣泛的概念——Hadoop生态圈
1.2Hadoop發展史
1、Lucene架構是Doug Cutting(Hadoop創始人) 開創的開源軟體,用Java寫的,實作與Google類似的全文搜尋功能,它提供了全文檢索引擎的架構,包括完整的查詢引擎和索引引擎
2、2001年年底Lucene成為了Apache基金會的一個子項目
3、對于海量資料的場景,Lucene面對與Google同樣的困難,存儲資料困難,檢索速度慢
4、學習和模仿Google解決了這些問題:建立了微型版的Nutch
5、可以說Google是Hadoop的思想之源(Google在大資料方面的三篇論文)
- GFS——>HDFS
- Map-Reduce——>MR
-
BigTable——>HBase
6、2003-2004年,Google公開了部分GFS和MapReduce思想的細節,以此為基礎Doug Cutting等人用了2年業餘時間實作了DFS和MapReduce·機制,使得Nutch
性能飙升
7、2005年Hadoop作為Lucene的子項目,Nutch的一部分正式引入Apache基金會
8、2006年3月份,Map-Reduce和Nutch Distnbuted File System(NDFS)分别被納入Hadoop項目中,Hadoop就此正式誕生,标志着大資料時代來臨
1.3Hadoop的優勢(4高)
- 高可靠性:Hadoop底層維護多個資料副本,是以即使Hadoop某個計算元素或存儲出現故障,也不會導緻資料的丢失
- 高擴充性:在叢集間配置設定任務資料,可以友善的擴充數以千計的節點
- 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任務處理速度
- 高容錯性:能夠自動将失敗的任務重新配置設定
2、Hadoop的組成
2.1Hadoop1.x和Hadoop2.x的差別
2.2HDFS架構
- NameNode(nn):存儲檔案的中繼資料,如檔案名,檔案目錄結構,檔案屬性(生成時間,副本數、檔案權限),以及每個檔案的塊清單和塊所在的DataNode等
- DataNode(dn):在本地檔案系統存儲檔案塊資料,以及塊資料的校驗和
- Secondary NameNode(2nn):用來監控HDFS狀态的輔助背景程式,每隔一段時間擷取HDFS中繼資料的快照
2.3YARN架構
2.4MapReduce架構
MapReduce将計算過程分為兩個階段:Map和Reduce
- Map階段:并行處理輸入資料
- Reduce階段:對Map結果進行彙總
3、大資料技術生态體系
- Sqoop:Sqoop是一款開源的工具,主要用于在Hadoop、Hive與傳統的資料庫(MySql)間進行資料的傳遞,可以将一個關系型資料庫(例如 :MySQL,Oracle 等)中的資料導進到Hadoop的HDFS中,也可以将HDFS的資料導進到關系型資料庫中。
- Flume:Flume是Cloudera提供的一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸的系統,Flume支援在日志系統中定制各類資料發送方,用于收集資料;同時,Flume提供對資料進行簡單處理,并寫到各種資料接受方(可定制)的能力。
-
Kafka:Kafka是一種高吞吐量的分布式釋出訂閱消息系統,有如下特性:
(1)通過O(1)的磁盤資料結構提供消息的持久化,這種結構對于即使數以TB的消息存儲也能夠保持長時間的穩定性能。
(2)高吞吐量:即使是非常普通的硬體Kafka也可以支援每秒數百萬的消息。
(3)支援通過Kafka伺服器和消費機叢集來分區消息。
(4)支援Hadoop并行資料加載。
- Storm:Storm用于“連續計算”,對資料流做連續查詢,在計算時就将結果以流的形式輸出給使用者。
- Spark:Spark是目前最流行的開源大資料記憶體計算架構。可以基于Hadoop上存儲的大資料進行計算。
- Oozie:Oozie是一個管理Hdoop作業(job)的工作流程排程管理系統。
- Hbase:HBase是一個分布式的、面向列的開源資料庫。HBase不同于一般的關系資料庫,它是一個适合于非結構化資料存儲的資料庫。
- Hive:Hive是基于Hadoop的一個資料倉庫工具,可以将結構化的資料檔案映射為一張資料庫表,并提供簡單的SQL查詢功能,可以将SQL語句轉換為MapReduce任務進行運作。 其優點是學習成本低,可以通過類SQL語句快速實作簡單的MapReduce統計,不必開發專門的MapReduce應用,十分适合資料倉庫的統計分析。
- R語言:R是用于統計分析、繪圖的語言和操作環境。R是屬于GNU系統的一個自由、免費、源代碼開放的軟體,它是一個用于統計計算和統計制圖的優秀工具。
- Mahout:Apache Mahout是個可擴充的機器學習和資料挖掘庫。
- ZooKeeper:Zookeeper是Google的Chubby一個開源的實作。它是一個針對大型分布式系統的可靠協調系統,提供的功能包括:配置維護、名字服務、 分布式同步、組服務等。ZooKeeper的目标就是封裝好複雜易出錯的關鍵服務,将簡單易用的接口和性能高效、功能穩定的系統提供給使用者。
比如:下圖為一個推薦系統項目架構