原创 Job的初始化—EagerTaskInitializationListener

       客戶端用戶在向JobTracker節點成功地提交了一個Job之後,JobTracker節點並不會馬上對這個作業進行調度,因爲任何作業在被任務調度器TaskSchedule調度之前,都必須先被初始化,這一點筆者曾經在講解Had

原创 JobTracker節點後臺線程之ExpireTrackers

      在Hadoop的集羣中,所有的TaskTracker在啓動之後都會向Master節點JobTracker進行註冊,通過TaskTracker的註冊,JobTracker節點就知道集羣中那些Slave節點可用,即可以給它們分配任

原创 Hadoop下join操作的幾點優化意見

    1. 概述        在傳統數據庫(如:MYSQL)中,JOIN操作是非常常見且非常耗時的。而在HADOOP中進行JOIN操作,同樣常見且耗時,由於Hadoop的獨特設計思想,當進行JOIN操作時,有一些特殊的技巧。本文首先介

原创 MarkSweepPolicy的初始化: 內存代大小的計算

      基於標記-清除思想的GC策略MarkSweepPolicy是串行GC(UseSerialGC)/默認GC(用戶在啓動JVM時未顯示配置GC)的標配,目前只能用於基於內存分代管理的內存堆管理器(GenCollectedHeap)

原创 內存代管理器DefNewGeneration對垃圾對象的回收(Minor Gc)

    內存堆管理器GenCollectedHeap在執行Gc回收垃圾對象的時候,無論是它自己還是垃圾回收策略MarkSweepPolicy都沒有具體去規定一個垃圾對象應該如何被回收,而只是在整體上決策這次的Gc應該回收那些內存代中的垃圾

原创 內存代管理器TenuredGeneration對垃圾對象的回收

   內存代管理器TenuredGeneration作爲基於內存分代管理的內存堆管理器GenCollectedHeap默認的舊生代管理器,它對垃圾對象的回收算法要比年青代Gc要複雜的多,但其主體思路就是:標記-清除-壓縮.本文主要圍繞內存

原创 MapFile和BloomMapFile文件

一. MapFile文件    前面說過,SequenceFile文件是用來存儲key-value數據的,但它並不保證這些存儲的key-value是有序的,而MapFile文件則可以看做是存儲有序key-value的SequenceFil

原创 詳談JobInProgress中Map/Reduce任務分配

    衆所周知,JobTracker節點使用配置的任務調度器TaskScheduler來爲某一個具體的TaskTracker節點分配任務,同時這個任務調度器只能決定給該TaskTracker節點分配哪一個Job或者那些Job的任務以及分

原创 HDFS-2.0社區版的HA+Federation的實現解析

    在Hadoop的1.x版本中,NN的單點處理能力成爲HDFS的主要(容量擴展/性能/可用性)瓶頸,主要表現在:一.NN在管理大規模的命名空間時,所消耗的內存堆必定在10GB/100GB級別,無論是觸發的Full Gc(32GB需要

原创 內存代管理器TenuredGeneration的對象內存分配

  內存代管理器TenuredGeneration是基於內存分代管理的內存堆管理器GenCollectedHeap默認的舊生代管理器,對於java對象的內存分配處理還是比較簡單的,但在垃圾對象回收方面.它的實現可能要遠比新生代管理器要複雜

原创 內存代管理器DefNewGeneration的對象內存分配

    內存代管理器DefNewGeneration是所有基於內存分代管理的內存堆管理器的默認年青代管理器,同時它也只能用於年青代的內存管理而不能用於舊生代的內存管理.它的基本思路就是將整個內存代分配爲三個區: Eden區, From區,

原创 HDFS集羣的啓動(8)——NameNode任務線程之FSNamesystem$SafeModeMonitor

    HDFS集羣啓動之後並不能馬上進入工作模式爲用戶提供服務,而是先要進入安全模式狀態,因爲主節點要確定當前集羣中的絕大多數數據塊Block處於安全可用的狀態以確保爲用戶提供更可靠的讀服務。這個工作主要是交由主節點上的FSNamesy

原创 內存堆Gc時公認的根對象

    內存堆的Gc就是回收內存堆中垃圾對象(非active對象),那麼這裏就有一個問題了,如何尋找垃圾對象?換個思路來解,就是如何找到所有的active的對象,那麼剩下的就是垃圾對象了.HotSpot是通過首先找到所謂的根對象,然後根據

原创 java對象的內存分配入口

一.GC策略檢查        一個JVM實例在創建之前是要經過大量的配置信息檢查的, 來檢查用戶對jvm配置的正確性、合理性. 不正確的配置, JVM會創建失敗,java程序也就無法運行了; 不合理的配置, JVM會調整. 既然本文主要

原创 Paxos算法與Zookeeper分析

1 Paxos算法 1.1 基本定義 算法中的參與者主要分爲三個角色,同時每個參與者又可兼領多個角色: ⑴proposer 提出提案,提案信息包括提案編號和提議的value; ⑵acceptor 收到提案後可以接受(accep