一
1、HDFS(hadoop分布式文件系統)
是hadoop體系中數據存儲管理的基礎。他是一個高度容錯的系統,能檢測和應對硬件故障。
client:切分文件,訪問HDFS,與namenode交互,獲取文件位置信息,與DataNode交互,讀取和寫入數據。
namenode:master節點,在hadoop1.x中只有一個,管理HDFS的名稱空間和數據塊映射信息,配置副本策略,處理客戶 端請求。
DataNode:slave節點,存儲實際的數據,匯報存儲信息給namenode。
secondary namenode:輔助namenode,分擔其工作量:定期合並fsimage和fsedits,推送給namenode;緊急情況下和輔助恢復namenode,但其並非namenode的熱備。
2、mapreduce(分布式計算框架)
mapreduce是一種計算模型,用於處理大數據量的計算。其中map對應數據集上的獨立元素進行指定的操作,生成鍵-值對形式中間,reduce則對中間結果中相同的鍵的所有值進行規約,以得到最終結果。
jobtracker:master節點,只有一個,管理所有作業,任務/作業的監控,錯誤處理等,將任務分解成一系列任務,並分派給tasktracker。
tacktracker:slave節點,運行 map task和reducetask;並與jobtracker交互,匯報任務狀態。
map task:解析每條數據記錄,傳遞給用戶編寫的map()並執行,將輸出結果寫入到本地磁盤(如果為map—only作業,則直接寫入HDFS)。
reduce task:從map 它深刻地執行結果中,遠程讀取輸入數據,對數據進行排序,將數據分組傳遞給用戶編寫的reduce函數執行。
3、 hive(基於hadoop的數據倉庫)
由Facebook開源,最初用於解決海量結構化的日志數據統計問題。
hive定於了一種類似sql的查詢語言(hql)將sql轉化為mapreduce任務在hadoop上執行。
4、hbase(分布式列存數據庫)
hbase是一個針對結構化數據的可伸縮,高可靠,高性能,分布式和面向列的動態模式數據庫。和傳統關系型數據庫不同,hbase采用了bigtable的數據模型:增強了稀疏排序映射表(key/value)。其中,鍵由行關鍵字,列關鍵字和時間戳構成,hbase提供了對大規模數據的隨機,實時讀寫訪問,同時,hbase中保存的數據可以使用mapreduce來處理,它將數據存儲和並行計算完美結合在一起。
5、zookeeper(分布式協作服務)
解決分布式環境下的數據管理問題:統一命名,狀態同步,集群管理,配置同步等。
6、sqoop(數據同步工具)
sqoop是sql-to-hadoop的縮寫,主要用於傳統數據庫和hadoop之間傳輸數據。
數據的導入和導出本質上是mapreduce程序,充分利用了MR的並行化和容錯性。
7、pig(基於hadoop的數據流系統)
定義了一種數據流語言-pig latin,將腳本轉換為mapreduce任務在hadoop上執行。
通常用於離線分析。
8、mahout(數據挖掘算法庫)
mahout的主要目標是創建一些可擴展的機器學習領域經典算法的實現,旨在幫助開發人員更加方便快捷地創建智能應用程序。mahout現在已經包含了聚類,分類,推薦引擎(協同過濾)和頻繁集挖掘等廣泛使用的數據挖掘方法。除了算法是,mahout還包含了數據的輸入/輸出工具,與其他存儲系統(如數據庫,mongoDB或Cassandra)集成等數據挖掘支持架構。
9、flume(日志收集工具)
cloudera開源的日志收集系統,具有分布式,高可靠,高容錯,易於定制和擴展的特點。他將數據從產生,傳輸,處理並寫入目標的路徑的過程抽象為數據流,在具體的數據流中,數據源支持在flume中定制數據發送方,從而支持收集各種不同協議數據。
10、資源管理器(YARN和mesos)
隨着互聯網的高速發展,基於數據 密集型應用 的計算框架不斷出現,從支持離線處理的mapreduce,到支持在線處理的storm,從迭代式計算框架到 流式處理框架s4,...,在大部分互聯網公司中,這幾種框架可能都會采用,比如對於搜索引擎公司,可能的技術方法如下:網頁建索引采用mapreduce框架,自然語言處理/數據挖掘采用spark,對性能要求到的數據挖掘算法用mpi等。公司一般將所有的這些框架部署到一個公共的集群中,讓它們共享集群的資源,並對資源進行統一使用,這樣便誕生了資源統一管理與調度平台,典型的代表是mesos和yarn。

二:1.hadoop優點:
Hadoop 以一種可靠、高效、可伸縮的方式進行數據處理。
可靠性: Hadoop將數據存儲在多個備份,Hadoop提供高吞吐量來訪問應用程序的數據。
高擴展性: Hadoop是在可用的計算機集簇間分配數據並完成計算任務的,這些集簇可以方便地擴展到數以千計的節點中。
高效性: Hadoop以並行的方式工作,通過並行處理加快處理速度。
高容錯性: Hadoop能夠自動保存數據的多個副本,並且能夠自動將失敗的任務重新分配。
低成本: Hadoop能夠部署在低廉的(low-cost)硬件上。
2.spark優點:
計算速度快: 因為spark從磁盤中讀取數據,把中間數據放到內存中,,完成所有必須的分析處理,將結果寫回集群,所以spark更快。
Spark 提供了大量的庫: 包括Spark Core、Spark SQL、Spark Streaming、MLlib、GraphX。
支持多種資源管理器: Spark 支持 Hadoop YARN,及其自帶的獨立集群管理器
操作簡單: 高級 API 剝離了對集群本身的關注,Spark 應用開發者可以專注於應用所要做的計算本身。
聯系:Hadoop提供分布式數據存儲功能HDFS,還提供了用於數據處理的MapReduce。 MapReduce是可以不依靠spark數據的處理的。當然spark也可以不依靠HDFS進行運作,它可以依靠其它的分布式文件系統。但是兩者完全可以結合在一起,hadoop提供分布式 集群和分布式 文件系統,spark可以依附在hadoop的HDFS代替MapReduce彌補MapReduce計算能力不足的問題。
三:一方面,由於Hadoop生態系統中的一些組件所實現的功能,目前還是無法由Spark取代的,比如,Storm可以實現毫秒級響應的流計算,但是,Spark則無法做到毫秒級響應。另一方面,企業中已經有許多現有的應用,都是基於現有的Hadoop組件開發的,完全轉移到Spark上需要一定的成本。因此,在許多企業實際應用中,Hadoop和Spark的統一部署是一種比較現實合理的選擇。由於Hadoop MapReduce、HBase、Storm和Spark等,都可以運行在資源管理框架YARN之上,因此,可以在YARN之上進行統一部署。

