原创 Spark性能調優---JVM調優之調節executor堆外內存與連接等待時長

一、executor堆外內存 ①理論 在實際項目中,有時候需要處理大量的數據,比如上億、數十億條數據,發現項目時不時地報錯:shuffle file not found,executor lost,task lost,out of mem

原创 SparkStreaming性能調優

一、數據接收並行度調優——創建更多的輸入DStream和Receiver 通過網絡接收數據時(比如Kafka,Flume),會將數據反序列化,並存儲在Spark的內存中。如果數據接收成爲系統的瓶頸,可以考慮並行化數據接收。每個輸入DStr

原创 SparkSQL性能優化

一、設置Shuffle過程中的並行度 設置參數:SQLContext.setConf("spark.sql.shuffle.prititions",xxx);   二、設置合理的數據類型 在Hive數據倉庫建設過程中,合理設置數據類型,比

原创 Spark streaming實時計算程序的性能優化

一、並行化數據接收 這個 方法在處理多個topic的數據是比較有效。 int numStreams = 5; List<JavaPairDStream<String, String>> kafkaStreams = new ArrayL

原创 Spark SQL數據傾斜解決方案

由於Spark都是基於RDD的特性,所以可以用純RDD的方法,實現和Spark SQL一模一樣的功能。 之前在Spark Core中的數據傾斜的七種解決方案,全部都可以直接套用在Spark SQL上。 Spark SQL的數據傾斜解決方案

原创 Spark streaming實時計算程序的HA高可用

一、設置checkpoint目錄 在程序中,如果用到了updateStateByKey、window等有狀態的操作,自動進行checkpoint,必須設置checkpoint目錄。 checkpoint目錄:容錯的文件系統的目錄,比如說,

原创 數據傾斜解決方案之原理以及現象分析

一、什麼是數據傾斜 數據傾斜是大數據類型項目中最棘手的性能問題。數據傾斜一般會有兩種表現: 大部分task執行很快,只有極少數的task執行得特別慢,可能耗費數個小時。 大部分task很快執行完,但有的task會突然報OOM內存溢出

原创 troubleshooting---線上問題解決

一、控制shuffle reduce端緩衝大小以避免OOM reduce端的task讀取數據時,並不是等到map端task將屬於自己的那份數據全部寫入磁盤文件之後再去拉取,而是先把數據拉取進緩衝區,然後才用後面的executor分配的堆內

原创 Spark性能調優---算子調優

一、MapPartitions提升Map類型操作性能 Spark中,每個task處理一個RDD的partition。 ①MapPartitions的優點 如果是普通的map,比如一個partition中有一萬條數據,那麼function需

原创 Spark性能調優---JVM調優之原理概述及降低cache操作的內存佔比

一、原理概述 ①理論 Spark是用Scala開發的。Spark的Scala代碼調用了很多java api。Scala也是運行在JVM中的,所以Spark也是運行在JVM中的。 ②JVM可能會產生什麼樣的問題? 內存不足——RDD的緩存、

原创 shuffle原理及調優

一、原理概述 ①什麼是shuffle? 以reduceByKey爲例,要把分佈在集羣各個節點上的數據中的同一個key對應的values集中到一塊,集中到集羣中同一個節點上。更嚴格地說,集中到同一個節點的同一個executor的task中。

原创 Spark性能調優(四)---其他幾個性能調優策略

一、廣播大變量 被大量task使用的變量,使用廣播。被廣播的變量,在Driver中存在一個初始副本。這樣,就不需要每個task都擁有一個變量的副本,節省網絡傳輸的資源和內存的資源;每一個BlockManager有一個變量的副本,Block

原创 Spark性能調優(三)---在實際項目中重構RDD架構以及RDD持久化

一、爲什麼要重構RDD,持久化RDD ①爲什麼需要重構RDD 如上圖所示, RDD2和RDD3是RDD1執行相同的算子得到的RDD,是相同的RDD。對於這種需要被重複使用,差不多的RDD,可以抽取爲一個共同的RDD,供後面的RDD計算時

原创 Spark性能調優(二)---在實際項目中調節並行度

一、什麼是並行度 並行度,其實就是指,Spark作業中 ,各個stage的task數量,也就代表了Spark作業在各個階段(stage)的並行度。   二、並行度過低的危害 假如,在spark-submit腳本里面,給Spark作業分配了

原创 Spark性能調優(一)---在項目中分配更多的資源

一、分配更多資源 性能調優的王道,就是增加和分配更多的資源,性能和速度上會得到很大提升。基本上,在一定的範圍之內,增加的資源和性能的提升是成正比的。所以,性能調優的第一步是增加資源,調節最優的資源配置;第二步,能夠分配的資源達到能力範圍的