我們是Hadoop的新手,我們認識到hadoop是用於處理大數據,以及笛卡爾產品如何非常昂貴。然而,我們正在進行一些實驗,我們正在運行類似於MapReduce設計模式書中的笛卡爾產品工作,除了計算所有中間結果的平均值的簡化器(僅包括A * B的上半部分,所以總和爲A * B/2)。 我們的設置:3節點簇,塊大小= 64M,我們測試了從 5000點(130KB)到10000點(260KB)範圍內的不同數據集大小。混亂的hadoop如何分裂工作
觀察:
1-所有地圖任務在一個奴隸的一個節點上運行,有時主計算機上,其他時間,但它從來沒有超過一個machine.Is有沒有辦法處理迫使hadoop分配分割因此映射任務在機器之間?基於什麼因素決定了hadoop決定哪臺機器將要處理地圖任務(在我們的例子中,一旦它決定了主人,在另一種情況下,它決定了一個奴隸)。 2-在所有我們測試同一作業的不同數據大小的情況下,我們得到4個地圖任務。由於我們的數據大小小於塊大小,爲什麼我們有4個分塊不是1.
3-有沒有辦法查看有關正在運行的作業的精確分割的更多信息。
在此先感謝
感謝您的澄清,是的,我們正在使用hadoop 2.0。 關於第二點,儘管我們的數據大小小於塊大小,但我們總是得到四個拆分, – user17476
機器是否具有大量內存? YARN實際上會監視羣集上的資源,除非有足夠的空間來啓動JVM,否則它不會啓動任務。可以解釋一些你在#1中看到的問題。 將一些日誌語句添加到CartesianInputFormat代碼可能有助於解釋正在從作業生成什麼輸入分割。它只能創建一個小於塊大小的輸入映射任務。 –