Spark和Hadoop對于大數據的關系?
Hadoop生態
Apache?Hadoop?項目開發了用于可靠,可擴展的分布式計算的開源軟件。
Apache Hadoop軟件庫是一個框架,該框架允許使用簡單的編程模型跨計算機集群對大型數據集進行分布式處理。 它旨在從單個服務器擴展到數千臺機器,每臺機器都提供本地計算和存儲。 庫本身不是設計用來依靠硬件來提供高可用性,而是設計為在應用程序層檢測和處理故障,因此可以在計算機集群的頂部提供高可用性服務,而每臺計算機都容易出現故障。
1、hadoop1.0時期架構
2、hadoop2.0時期架構
3、hdfs架構
Active Namenode
主 Master(只有一個),管理 HDFS 的名稱空間,管理數據塊映射信息;配置副本策略;處理客戶端讀寫請求
Secondary NameNode
NameNode 的熱備;定期合并 fsimage 和 fsedits,推送給 NameNode;當 Active NameNode 出現故障時,快速切換為新的 Active NameNode。
Datanode
Slave(有多個);存儲實際的數據塊;執行數據塊讀 / 寫
Client
與 NameNode 交互,獲取文件位置信息;與 DataNode 交互,讀取或者寫入數據;管理 HDFS、訪問 HDFS。
4、MapReduce
源自于 Google 的 MapReduce 論文
發表于 2004 年 12 月
Hadoop MapReduce 是 Google MapReduce 克隆版
MapReduce特點
良好的擴展性
高容錯性
適合 PB 級以上海量數據的離線處理
5、yarn架構
6、hadoop1.0與hadoop2.0比較圖
7、Hive(基于MR的數據倉庫)
由Facebook開源,最初用于海量結構化日志數據統計;ETL(Extraction-Transformation-Loading)工具構建在Hadoop之上的數據倉庫;數據計算使用 MapReduce,數據存儲使用HDFS
Hive 定義了一種類 SQL 查詢語言——HQL
類似SQL,但不完全相同
通常用于進行離線數據處理(采用 MapReduce);可認為是一個 HQL→MR 的語言翻譯器
8、Hbase(分布式數據庫)
源自 Google 的 Bigtable 論文
發表于 2006 年 11 月
Hbase 是 Google Bigtable 克隆版
SparkApache Spark是用于大規模數據處理的統一分析引擎。 它提供Java,Scala,Python和R中的高級API,以及支持常規執行圖的優化引擎。 它還支持豐富的高級工具集,包括用于SQL和結構化數據處理的Spark SQL,用于機器學習的MLlib,用于圖形處理的GraphX和用于增量計算和流處理的結構化流。
速度
運行工作負載的速度提高了100倍。
Apache Spark使用最新的DAG調度程序,查詢優化器和物理執行引擎,為批處理數據和流數據提供了高性能。
使用方便
使用Java,Scala,Python,R和SQL快速編寫應用程序。
Spark提供了80多個高級操作員,可輕松構建并行應用程序。 您可以從Scala,Python,R和SQL Shell交互使用它。
通用
結合使用SQL,流和復雜的分析。
Spark為包括SQL和DataFrames,用于機器學習的MLlib,GraphX和Spark Streaming在內的一堆庫提供支持。 您可以在同一應用程序中無縫組合這些庫。
無處不在
Spark可在Hadoop,Apache Mesos,Kubernetes,獨立或云中運行。 它可以訪問各種數據源。
您可以在EC2,Hadoop YARN,Mesos或Kubernetes上使用其獨立集群模式運行Spark。 訪問HDFS,Alluxio,Apache Cassandra,Apache HBase,Apache Hive和數百種其他數據源中的數據。