原创 Java內隱類(Java Inner Class)

內隱類是一個定義在Class中的Class,有static和非static兩種。inner class是外部類的一個成員變量。non-static的inner class可以訪問外部類的所有變量。因爲inner class是外部類的一個成

原创 Hadoop字符轉碼的實現

Hadoop默認使用的是UTF-8編碼方式。在Hadoop使用過程中,需要將其他的編碼方式進行轉碼以防止亂碼的出現。 在Hadoop中出現亂碼的情景是TextFileInputFormat,即處理Text的情景。在這種情況下,Value

原创 HDFS Client如何從Datanode讀取block

Datanode中包含DataXceiverServer。DataXceiverServer是一個socket server,負責接收client發起的socket連接。DataXceiverServer接收到一個socket連接後,啓動

原创 Java並行編程

class Particle { protected int x; protected int y; protected final Random rng = new Random(); public Particle(int

原创 HBase基本原理

HBase以表的形式存儲數據。與關係型數據庫一樣,在HBase中,表由行和列組成。與關係型數據庫不同的是,HBase還有“列簇”(column family)的概念。一個表有若干“列簇”組成,每一個“列簇”包含若干列(column)。

原创 H2DBEngine——Driver的設計與實現

首先,我們通過下面的代碼看一下JDBC是如何使用Driver的。 Connection conn = null; String driver = "oracle.jdbc.driver.OracleDriver"; Class.forNa

原创 HDFS DatanodeProtocol——sendHeartbeat

Datanode週期性的向Namenode發送心跳信息,心跳信息的發送通過sendHeartbeat方法來完成。sendHeartbeat向Namenode表明Datanode依然存活並且完好。sendHeartbeat還向Nameno

原创 RCFileInputFormat的使用方法

在使用RCFileInputFormat時可以設置需要讀取的列的序號:   /**    * Sets read columns' ids(start from zero) for RCFile's Reader. Once a col

原创 HDFS DatanodeProtocol——register

每當Datanode啓動的時候,Datanode需要向Namenode註冊自己。對於Datanode來說,註冊的目的有兩個:1)報告Datanode當前正在提供的存儲(storage);2)從Namenode獲取registration

原创 Hadoop框架排序和分組的理解

MapReduce框架會確保每一個Reducer的輸入都是按Key進行排序的。一般,將排序以及Map的輸出傳輸到Reduce的過程稱爲混洗(shuffle)。每一個Map都包含一個環形的緩存,默認100M,Map首先將輸出寫到緩存當中

原创 Hadoop Reducer個數設置

在默認情況下,一個MapReduce Job如果不設置Reducer的個數,那麼Reducer的個數爲1。具體,可以通過JobConf.setNumReduceTasks(int numOfReduceTasks)方法來設置Reducer

原创 Hadoop依賴包處理方式

在編寫MapReduce程序時,有時需要很多依賴的Jar包,那麼如何處理依賴的Jar包呢? 方法一: 其中最簡單的一種方式是,在項目的根目錄下創建lib文件夾,將所依賴的所有Jar包都放在該目錄下。在將程序進行打包時將lib一併打包。J

原创 HDFS Datanode與Client之間的數據傳輸

在HDFS之中,Datanode與Namenode之間是通過RPC進行通信的;在Datanode和Client之間的通信通過兩種方式來完成,一種是通過RPC(主要有三個方法recoverBlock、getBlockInfo、getBloc

原创 自定義實現Hadoop Key-Value

自定義實現Value: 如果需要自定義一個一個Value類型,那麼需要實現Hadoop預定義接口org.apache.hadoop.io.Writable。Writable包含兩個重要的方法:readFields和write,主要用於數據

原创 HDFS Datanode數據存儲格式分析

首先在Datanode中,每一個block都對應一個數據存儲文件,數據存儲文件以_blk開頭;同時,每一個block還對應一個元數據文件,元數據文件以.meta結尾(注意:meta file的命名格式如下blokcFileName_ge