2015-08-24 128 views
1

我新的火花......一些基本的東西要通過基本面的時候我不明白:星火基礎

查詢1.分發處理 - 可以激發無HDFS的工作 - 在羣集上的Hadoop文件系統(如通過創建它自己的分佈式文件系統),還是需要一些基本的分佈式文件系統,如HDFS,GPFS等的必備條件。

查詢2.如果我們已經有一個文件加載到HDFS中塊) - 然後將再次將Spark轉換爲塊並在其級別重新分配(用於分佈式處理),或者將按照Haddop HDFS羣集使用塊分配。

查詢3.除定義DAG外,SPARK還創建像MapReduce那樣的分區並將分區拖動到Reducer節點以進行進一步計算? 我很困惑,因爲直到創建DAG,很明顯,在每個Worker節點上工作的Spark Executor將數據塊加載爲內存中的RDD,並且按照DAG應用計算....但是部件需要用於分區數據按照Keys的要求,並將它們帶到Reducer任務將執行的其他節點(就像mapreduce),這是如何在內存中完成的?

回答

1

這會更好地被要求作爲單獨的問題,問題3很難理解。無論如何:

  1. 不,Spark不需要分佈式文件系統。
  2. 默認情況下,Spark將爲每個HDFS塊創建一個分區,並在可能的情況下將計算與數據共同定位。
  3. 您正在問什麼shuffle。隨機播放器會在映射器上創建塊,以便減速器從中取出。 spark.shuffle.memoryFraction參數控制要分配多少內存來洗刷塊文件。 (默認爲20%)。spark.shuffle.spill參數用於控制當內存用完時是否將隨機播放塊溢出到本地磁盤。
+1

感謝@Daniel回答所有三個問題,下次會更加清楚。 你是對的我的查詢只與Shuffle有關....從你的回答中得到更多我假設參數:spark.shuffle.memoryFraction和spark.shuffle.spill都適用於映射器 - 當Shuffle創建塊時使用。 Reducer節點會發生什麼?它會直接在內存中獲取混洗塊,還是首先將塊寫入Reducer節點磁盤,然後加載到內存中進行計算。 – Kansingh

+0

偉大的問題!我認爲減速器也可能泄漏到磁盤。這些問題最好通過檢查代碼來解決,但洗牌代碼的結構相當複雜。也許這是這個地方:https://github.com/apache/spark/blob/v1.4.1/core/src/main/scala/org/apache/spark/shuffle/hash/HashShuffleReader.scala#L55 –

0

查詢1.對於分發處理 - Spark可以在沒有HDFS的情況下工作嗎?

對於分佈式處理,星火不需要HDFS。但它可以讀/寫HDFS系統的數據。對於某些用例,它可能會將數據寫入HDFS。對於teragen排序世界紀錄節目,它使用HDFS排序數據而不是使用in-memoery。

Spark不提供分佈式存儲。但是與HDFS的集成是存儲的一種選擇。但星星之火可以在本文使用其他存儲系統,如Cassnadra等深入瞭解更多詳情:https://gigaom.com/2012/07/11/because-hadoop-isnt-perfect-8-ways-to-replace-hdfs/

查詢2.如果我們已經在HDFS加載的文件(如分佈式塊) - 然後將再次星火將其轉換爲塊並在其級別重新分配

我同意Daniel Darabos的迴應。 Spark將爲每個HDFS塊創建一個分區。

問題3:在洗牌

根據數據的大小,將洗牌在內存中進行或者它可以使用磁盤(例如teragen分選),或者它可以使用兩者。在Spark shuffle上看看這個優秀的article

很好。如果您沒有足夠的內存來存儲整個「地圖」輸出會怎麼樣?您可能需要將中間數據泄露到磁盤。參數spark.shuffle.spill負責啓用/禁用溢出,默認情況下啓用溢出

在將溢出溢出到磁盤之前可用於存儲「映射」輸出的內存量爲「JVM堆大小」* spark.shuffle.memoryFraction * spark.shuffle.safetyFraction,默認值爲「JVM堆大小」* 0.2 * 0.8 =「JVM堆大小」* 0.16。

0

查詢1. 是的,它也可以與其他人一起工作。如果你有相應的RDD實現它,當你實際上通過在HDFS中打開一個文件來創建一個RDD時,它固有地創建了一個HADOOP RDD,它具有理解HDFS的實現,如果你編寫自己的分佈式文件系統可以編寫你自己的實現,並實例化它完成的類。但是將連接器RDD寫入我們自己的DFS是一項挑戰。對於更多你可以看看在火花代碼

查詢2.它不會重新創建,而是我的HADOOP/HDFS RDD連接器的手段,它知道塊的位置。它也會嘗試使用相同的紗線節點運行jvm任務來執行處理。

查詢3.不知道這

0

查詢1: - 對於簡單的火花提供分發,因爲抽象RDD(是輕快分發數據集)的處理,沒有這HDFS提供水溼分配存儲。

問題2: - 無它不會recreate.Here火花將提供每塊作爲分區(這意味着參考該塊),所以它相同的塊上啓動紗線

問題3: - 不知道。