1. 程式人生 > >初步接觸Hadoop

初步接觸Hadoop

Hadoop是什麼
  Hadoop是大資料的解決方案,是一個基礎架構,也是一個適合大資料的分散式儲存和計算的平臺。Hadoop是由Apache基金會所開發的分散式基礎架構,能以一種可靠、高效、可伸縮的方式進行資料處理。而且Hadoop的成本比較低,任何人都可以使用,而且Hadoop是開源的,許多中小型企業都在使用。
  Hadoop主要有以下優點:
1.高可靠性。Hadoop按位儲存和處理資料的能力值得人們信賴。
2.高擴充套件性。Hadoop是在可用的計算機集簇間分配資料並完成計算任務的,這些集簇可以方便地擴充套件到數以千計的節點中。
3.高效性。Hadoop能夠在節點之間動態地移動資料,並保證各個節點的動態平衡,因此處理速度非常快。
4.高容錯性。Hadoop能夠自動儲存資料的多個副本,並且能夠自動將失敗的任務重新分配。
5.低成本。與一體機、商用資料倉庫以及QlikView、Yonghong Z-Suite等資料集市相比,hadoop是開源的,專案的軟體成本因此會大大降低。
Hadoop由哪些部分組成


  Hadoop主要由三部分組成,而其中Hadoop的框架最核心的設計就是:HDFS和MapReduce。
  HDFS(Hadoop Distributed File System)是Hadoop分散式儲存系統,它是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的資料訪問,適合那些有著超大資料集(large data set)的應用程式。在使用了之後就會發現,它有著一套自己的檔案體系,和Linux中的檔案體系分離開來了。
  HDFS 的架構是基於一組特定的節點構建的,這是由它自身的特點決定的。這些節點包括 NameNode(僅一個),它在 HDFS 內部提供元資料服務;DataNode,它為 HDFS 提供儲存塊。由於僅存在一個 NameNode,因此這是 HDFS 的一個缺點(單點失敗)。儲存在 HDFS 中的檔案被分成塊,然後將這些塊複製到多個計算機中(DataNode)。這與傳統的 RAID 架構大不相同。塊的大小和複製的塊數量在建立檔案時由客戶機決定。NameNode 可以控制所有檔案操作。HDFS 內部的所有通訊都基於標準的 TCP/IP 協議。
  MapReduce是用於並行處理大資料集的軟體框架,實現分散式批處理方式,是一套從海量源資料提取分析元素最後返回結果集的程式設計模型,將檔案分散式儲存到硬碟是第一步,而從海量資料中提取分析我們需要的內容就是MapReduce做的事了。
  除了這兩個之外,第三部分就是Hadoop Common。 在0.20及以前的版本中,包含HDFS、MapReduce和其他專案公共內容,從0.21開始HDFS和MapReduce被分離為獨立的子專案,其餘內容為Hadoop Common。
Hadoop主要工具有哪些

Hadoop
  Hive是一種資料倉庫工具,可以將結構化的資料檔案對映為一張資料庫表,並提供簡單的sql查詢功能,可以將sql語句轉換為MapReduce任務進行執行。
  HBase是一個分散式的、面向列的開源資料庫。不同於一般的關係資料庫,Hbase是一個適合於非結構化資料儲存的資料庫。另一個不同的是,HBase基於列的而不是基於行的模式。與HDFS不同的是,HDFS儲存的是不可變的資料,比如有分析資料、歷史資料,Hbase儲存的是可變的、實時的資料。
  Zookeeper主要負責協調工作流程。隨著計算節點的增多,叢集成員需要彼此同步並瞭解去哪裡訪問服務和如何配置。
  Sqoop是一種匯入匯出工具,幫助實現MySQL,HDFS,Hbase,ctl之間的資料匯入匯出。
  Mahout主要是用於機器學習,提供一些可擴充套件的機器學習領域經典演算法的實現,旨在幫助開發人員更加方便快捷地建立智慧應用程式。
  Avro:新的資料序列化格式與傳輸工具,將逐步取代Hadoop原有的IPC機制。
  Pig: 大資料分析平臺,為使用者提供多種介面。
  Ambari:Hadoop管理工具,可以快捷的監控、部署、管理叢集。
  Hcatalog是apache開源的對於表和底層資料管理統一服務平臺。
其他的大資料框架

  除了Hadoop之外,還有一些其他的大資料框架,比如Apache Storm、Apache Samza、 Apache Spark、 Apache Flink等等
Apache Storm是一種側重於極低延遲的流處理框架,也許是要求近實時處理的工作負載的最佳選擇。該技術可處理非常大量的資料,通過比其他解決方案更低的延遲提供結果。
  Apache Samza是一種與Apache Kafka訊息系統緊密繫結的流處理框架。雖然Kafka可用於很多流處理系統,但按照設計,Samza可以更好地發揮Kafka獨特的架構優勢和保障。該技術可通過Kafka提供容錯、緩衝,以及狀態儲存。
  Apache Spark是一種包含流處理能力的下一代批處理框架。與Hadoop的MapReduce引擎基於各種相同原則開發而來的Spark主要側重於通過完善的記憶體計算和處理優化機制加快批處理工作負載的執行速度。
  Apache Flink是一種可以處理批處理任務的流處理框架。該技術可將批處理資料視作具備有限邊界的資料流,藉此將批處理任務作為流處理的子集加以處理。為所有處理任務採取流處理為先的方法會產生一系列有趣的副作用。