但是數(shù)據(jù) spark是,數(shù)據(jù)無法緩存在內(nèi)存中。Spark在計算時可以從內(nèi)存得到,sparkCache數(shù)據(jù)in內(nèi)存,所以計算速度快,在spark資源大小分配與并行處理spark中,如何保持流的狀態(tài),如何緩存和RDD。
幾個倉庫面試高頻考點:【如何解決Hive小文件太多的問題指定為:處理時小文件多數(shù)據(jù)在表中] |表參數(shù):| NULL | NULL | | | | Bucking _ Version | 2 | | | NUM如果表的統(tǒng)計信息不顯示,執(zhí)行以下命令。|表參數(shù):| null | null | | | | | column _ stats _ accurate | { basic _ stats:true } | | | | bucking _ version | 2 | | | | num第一個,
查看是否設(shè)置了切片數(shù)。片/分區(qū)的數(shù)量是Spark的并行粒度。默認(rèn)情況下,從集合中獲得的RDD片段數(shù)是2?我不是特別確定;從HDFS上的文件生成的RDD是分塊的(好像是128M,但這里不是特別確定)。因此,默認(rèn)情況下,Spark的并行度很低。然后,看一下Spark的WebUI圖,看看任務(wù)的執(zhí)行情況。任務(wù)是幾乎同時結(jié)束的嗎?
Spark的硬件要求估計全部spark開發(fā)者關(guān)心的spark硬件要求。合適的硬件配置需要具體分析,這里給出以下建議。主要翻譯自官網(wǎng)一、存儲系統(tǒng)由于Spark的大部分工作可能需要從外部存儲系統(tǒng)(如Hadoop文件系統(tǒng)或HBase)讀取輸入數(shù)據(jù),因此將spark部署在盡可能靠近存儲系統(tǒng)的地方很重要。因此,提出以下建議:1 .如果可能,在與HDFS相同的節(jié)點上運行Spark。
4、Spark應(yīng)用|HiveOnSpark性能調(diào)優(yōu)我公司yarnnode可用資源如下:單個節(jié)點可用資源數(shù)量:33cores,內(nèi)存110G。HiveonSpark任務(wù)的基本配置包括:執(zhí)行者和驅(qū)動者內(nèi)存、執(zhí)行者配額和任務(wù)并行度。配置參數(shù)為spark.executor.memory和spark-0/. executor . cores。
紗線資源可以使用33芯。建議spark.executor.cores設(shè)置為4,最多留一個核心。如果設(shè)置為5,6,將剩下3個核心。spark.executor.cores4、由于總共有33個核心,所以最多可以申請8個執(zhí)行人。當(dāng)總數(shù)內(nèi)存為8,即110/8時,每個執(zhí)行人可以得到約13.75GB 內(nèi)存。
5、 spark資源大小分配與并行處理6、 spark中要想保留流的狀態(tài)怎么處理用哪種方式緩存
與RDD類似,SparkStreaming也可以手動控制數(shù)據(jù)在流中持久化內(nèi)存。在DStream上調(diào)用persist()方法可以讓SparkStreaming自動將這個數(shù)據(jù) stream中生成的所有RDD持久化到內(nèi)存。如果你想在一個數(shù)據(jù)流上多次執(zhí)行操作,這對數(shù)據(jù)流的持久化非常有用。因為有多個操作,所以可以在內(nèi)存 數(shù)據(jù)中共享一個緩存。
即默認(rèn)情況下,SparkStreaming會將上述操作生成的Dstream中的數(shù)據(jù)緩存到內(nèi)存中,不需要開發(fā)者手動調(diào)用persist()方法。對于通過網(wǎng)絡(luò)接收數(shù)據(jù)的輸入流,如socket、Kafka、Flume等。,默認(rèn)的持久性級別是復(fù)制數(shù)據(jù)以實現(xiàn)容錯。相當(dāng)于用了MEMORY_ONLY_SER_2這樣的東西。
7、 spark與hadoop相比,存在哪些缺陷Spark已經(jīng)取代Hadoop成為最活躍的開源大型數(shù)據(jù)項目,但是在選擇大型數(shù)據(jù)框架時,企業(yè)不應(yīng)該厚此薄彼。著名專家BernardMarr在一篇文章中分析了Spark和Hadoop的異同。Hadoop和Spark都是big 數(shù)據(jù)框架,都提供了一些工具來執(zhí)行常見的big 數(shù)據(jù)任務(wù),但恰恰,它們執(zhí)行的是不同的任務(wù)。雖然據(jù)說Spark在某些情況下比Hadoop快100倍,但它沒有分布式存儲系統(tǒng),而分布式存儲系統(tǒng)是許多大型數(shù)據(jù)項目的基礎(chǔ)。它可以在幾乎無限的普通計算機(jī)的硬盤上存儲PB級數(shù)據(jù) sets并提供良好的可擴(kuò)展性。你只需要隨著數(shù)據(jù)套的增加而增加硬盤即可。所以Spark需要一個第三方分布式存儲。正是因為這個原因,很多大型數(shù)據(jù)項目都在Hadoop上安裝Spark,這樣,Spark的高級分析應(yīng)用就可以使用數(shù)據(jù)存儲在HDFS。與Hadoop相比,Spark真正的優(yōu)勢在于速度。Spark的大部分操作在內(nèi)存,Hadoop的MapReduce系統(tǒng)會轉(zhuǎn)換。
8、 spark 內(nèi)存溢出及其解決方案1。你在工作中遇到過內(nèi)存的溢出問題嗎?你是怎么解決的?答:先說明spark 內(nèi)存的型號,再介紹不同情況下的解決方法。大意是根據(jù)模型找到不足的那塊內(nèi)存,要么增加比例,要么增加整體。Oom一般出現(xiàn)在執(zhí)行內(nèi)存,因為存儲塊內(nèi)存滿后,舊的內(nèi)存會被直接丟棄,對性能有一點影響但不會導(dǎo)致oom。
spark的oom問題主要分為三種情況:MAP執(zhí)行后內(nèi)存的溢出場景:maptask運行的executor 內(nèi)存溢出。增加堆內(nèi)內(nèi)存,應(yīng)用的堆外內(nèi)存,也會增加執(zhí)行內(nèi)存。添加堆外內(nèi)存confspark. exctor .內(nèi)存開銷2048是默認(rèn)的應(yīng)用程序堆外。
9、 spark將 數(shù)據(jù)緩存到 內(nèi)存中所以計算速度快,但無法把 數(shù)據(jù)spark是,數(shù)據(jù)緩存在內(nèi)存中,可以在火花計算時從內(nèi)存中獲取。/Cache方法:Spark非??斓囊粋€原因是它可以在不同的操作中持久化或者緩存內(nèi)存。當(dāng)一個RDD被持久化時,每個節(jié)點將把計算的碎片結(jié)果保存 in 內(nèi)存并在這個RDD或派生的RDD的其他動作中重用它。
10、linux spark 數(shù)據(jù)超過 內(nèi)存大小repartition應(yīng)該在任務(wù)執(zhí)行之前進(jìn)行。有時,由于鍵的分布不均勻,重新分區(qū)無法解決數(shù)據(jù) tilt的問題,您可以使用PartitionBy方法來自定義分區(qū)的分區(qū)方法。數(shù)據(jù)之間的聯(lián)接通常非常消耗資源,需要很長時間來執(zhí)行,甚至?xí)?dǎo)致任務(wù)失敗,一般來說,應(yīng)該盡量避免。比如一個rdd 數(shù)據(jù)的比例小,可以先收集,然后廣播給所有執(zhí)行程序。