Spark - 大数据Big Data处理框架
Spark是一個針對超大數據集合的低延遲的集群分布式計算系統,比MapReducer快40倍左右。
Spark是hadoop的升級版本,Hadoop作為第一代產品使用HDFS,第二代加入了Cache來保存中間計算結果,并能適時主動推Map/Reduce任務,第三代就是Spark倡導的流Streaming。
Spark兼容Hadoop的APi,能夠讀寫Hadoop的HDFS HBASE 順序文件等。
傳統Hadoop如下圖 性能慢原因有:磁盤IO 復制和序列化等等,涉及圖中的HDFS
而在Spark中,使用內存替代了使用HDFS存儲中間結果:
Spark架構圖
Spark的編程模型
彈性的分布數據集(RDD) :分布式對象集合能夠跨集群在內存中保存。多個并行操作,失敗自動恢復。
使用內存集群計算, 內存訪問要比磁盤快得多。有Scala Java Python API,能夠從Scala和Python訪問。
下面是一個簡單的對日志log計數的代碼:
/*** SimpleJob.scala ***/
import spark.SparkContext
import SparkContext._
object SimpleJob {
def main(args: Array[String]) {
val logFile = "/var/log/syslog" // Should be some file on your system
val sc = new SparkContext("local", "Simple Job", "$YOUR_SPARK_HOME",
List("target/scala-2.9.3/simple-project_2.9.3-1.0.jar"))
val logData = sc.textFile(logFile, 2).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
}
}
運行原理圖:
當進行filter操作是,是一種transformed RDD,RDD跟蹤這種轉換,當有數據丟失失敗時,重新計算 得到這個數據。
Spark支持物流logistic表達式,如下圖:
物流表達式相比Hadoop的遍歷性能:
支持以下數據分析操作:
Spark流處理
以推流方式處理數據:
Shark
Shark是基于Spark上的“Hive”,看看基于hadoop的Hive:
而Shark的結構圖:
Hive是記錄每行記錄一個對象,而shark是每列記錄:
執行SQL時間對比:
總結
以上是生活随笔為你收集整理的Spark - 大数据Big Data处理框架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python调用MongoDB使用心得
- 下一篇: Hbase 建表基本命令总结