自分が把握しているHBaseのバージョンアップによる変更点。
|
HBaseはHadoopのサブプロジェクトだったが、2010-05-10(HBase0.20.4とHBase0.20.5の間)にApacheのトップレベルプロジェクトに昇格した。
それに伴って、ホームページのURLがhttp://hadoop.apache.org/hbase/
からhttp://hbase.apache.org/
に変更になった。
プロジェクト名は「Hadoop HBase」から「Apache
HBase」になったのではないかと思うが、元々「HBase」としか名乗っていなかったようなので、特に変わっていない感じがする。
(Javaソース(クラス)のパッケージ名は変わっていない…変わったらかなり大変だ(笑))
HBaseでは、Hadoopに合わせてバージョン番号が付いていた。HBase0.18はHadoop0.18対応、HBase0.20はHadoop0.20。
しかしHadoopのバージョンアップ(リリース)が遅くなってきたので、番号を連動するのはやめたらしい。
HBase0.21として予定されていたものは、HBase0.90となる。(0.20と0.90の間に、0.89が出る)
その後、HBase1.0が出る予定だそうだ。
HBase0.20.5(2010-06-24)の変更点。
変更対象 | 変更内容 |
---|---|
docs | ドキュメント内のURLがhttp://hbase.apache.org/ に変更になった。 |
ImmutableBytesWritableクラス | get()・getSize()・getLength()のJavadocコメントが変更されている。(仕様変更?) hashCode()・compareTo()・toString()の実装が変更になった。 |
mapreduce/HFileOutputFormatクラス | 現在時刻が更新日時にセットされるようになった。 |
util/Bytesクラス | toStringBinary()の実装が変更になった。 (たいていの記号がそのまま出力されるようになった) |
HBase0.20.6(2010-07-31)は、プログラマーのコーディング方法に関わるような変更は無さそう。[2010-08-07]
HBase0.20.5とHBase0.89.20100621の違い。
変更対象 | 変更内容 |
---|---|
bin/start-hbase.sh bin/stop-hbase.sh |
完全分散環境でない場合(つまり単独環境・擬似分散環境)の起動方法が変わった。 (ZooKeeperとRegionServerが起動されなくなった) |
bin/hbase | RESTサーバーが消えて、Avroサーバーが加わった。 また、Mavenに対応した模様。 HBase Shellも機能が増えている。[2010-07-07] |
bin/hirb.rb bin/HBase.rb bin/Formatter.rb |
HBase.rb・Formatter.rbが無くなった。 hirb.rbの中身もだいぶ変わっている。(減っている) |
conf/hbase-default.xml | プロパティーの増減の他、設定値の範囲が変更になっているプロパティーもあるようだ。 |
conf/hbase-env.sh | 環境変数HBASE_OPTSが(追加でなく)上書きされるようになっている。 |
contrib | contribが無くなっている。 たつやさんによると、今後はcontribという形では提供されず、個別にダウンロードする必要があるそうです。[2010-07-07] →HBase関連プロジェクトのページ |
hbase-webapps | 「webapps」が「hbase-webapps」になった模様。 そしてrestが無くなっている。 |
src/examples | SampleUploaderがHadoopのmapredからmapreduce(新API)を使う例に変更になった。 |
IndexBuilderが追加になった。索引テーブルをHadoopを使って作成する例らしい。 | |
src/main/java/〜 | 色々とクラス・メソッドが減ったり増えたりしている。 パッケージ単位では、restが無くなってavroが増えている。 |
HBase0.20で作ったテーブル・データはそのまま0.89で読めるっぽい。[2010-07-08]
(0.20のconfの定義(データファイルの場所)をそのまま0.89で使用できる)
ただし、そうしてデータファイルを使用したら、0.20で再度使うことは出来ないっぽい。(Windows上の擬似環境で試したら、クライアントからの接続が固まった(例外もタイムアウトも発生しない))
自分が興味あるところ(クライアントからのメソッドの呼び出し方)に関する変更点を調べてみた。
:
qulifier」形式)を引数に取るメソッドは廃止もしくは非推奨化された。[2010-07-07]クラス名(およびパッケージ名の一部) | 変更箇所(メソッド名) | 変更内容 | ||
---|---|---|---|---|
デ ー タ ア ク セ ス |
hbase | HBaseConfiguration | コンストラクター create() create(conf) |
コンストラクターは非推奨になった。 今後は自分でnewせず、HBaseConfiguration#create()を使用する。 |
addHbaseResources() | public staticメソッドになった。 (デフォルトの設定ファイルを追加するメソッド) |
|||
client | HBaseAdmin | createTable() …オーバーロード | メソッド追加(オーバーロードが増えた) | |
createTableAsync(HTableDescriptor desc, byte [][] splitKeys) | 引数splitKeysが増えた。 今までと同様の使い方をするには、たぶんnullを指定する。 |
|||
client | HTable | クラス定義 | HTableInterfaceをimplementsするようになった。 | |
prewarmRegionCache() serializeRegionInfo() deserializeRegionInfo() setRegionCachePrefetch() getRegionCachePrefetch() |
メソッド追加 | |||
getClosestRowBefore() | メソッド廃止 | |||
delete(final List<Delete> deletes) | 引数listの型がArrayListからListになった。 | |||
delete() put() checkAndPut() |
synchronized宣言が無くなった。 | |||
checkAndDelete() | メソッド追加 | |||
Cellを返すget() RowResultを返すgetRow() 引数がScan以外のgetScanner() deleteAll()やdeleteFamily()系 引数がGet以外のexists() 引数にBatchUpdateを使用するcommit()やcheckAndSave() |
メソッド廃止(deprecatedになっていたメソッド) | |||
client | HTablePool | コンストラクター | HTableInterfaceFactoryを引数にとるオーバーロードが増えた。[2010-07-07] | |
getTable() putTable() |
扱う対象がHTableからHTableInterfaceへ変更された。[2010-07-07] | |||
closeTablePool() | メソッド追加[2010-07-07] | |||
newHTable() | メソッド廃止[2010-07-07] 0.89ではHTablePool内部にHTableInterfaceFactoryを保持しているので、インスタンスはそれを使って生成する。 |
|||
io | BatchOperation BatchUpdate Cell RowResult |
クラス廃止 | ||
client | Put | コンストラクター | オーバーロードが増えた。 | |
setTimeStamp() | メソッド廃止 | |||
readFields()・write() | シリアライズ時にバージョン情報が付加されるようになった。 | |||
client | Delete | deleteColumns(byte [] column) | メソッド廃止 | |
readFields()・write() | シリアライズ時にバージョン情報が付加されるようになった。 | |||
client | Get | readFields()・write() | シリアライズ時にバージョン情報が付加されるようになった。 | |
client | Scan | setBatch() getBatch() |
メソッド追加 | |
setOldFilter() | メソッド廃止(deprecatedになっていたメソッド) | |||
getValue()・setValue()系・remove() | メソッド廃止 | |||
readFields()・write() | シリアライズ時にバージョン情報が付加されるようになった。 | |||
client | Scanner | クラス廃止 | ||
hbase | KeyValue | コンストラクター | テンポラリー用のコンストラクターは廃止された。 | |
makeColumn() createKeyValueFromKey() …オーバーロード hashCode() |
メソッド追加 | |||
getColumn() matchingColumn(byte[] column) |
メソッド廃止 | |||
client | Result | Cellを返すgetCellValue() getValue(byte[] column) RowResultを返すgetRowResult() |
メソッド廃止 | |
readFields()・write() | シリアライズ時にバージョン情報が付加されるようになった。 | |||
io | ImmutableBytesWritable | copyBytes() | メソッド追加 | |
フ ィ ル タ ー |
filter | Filter | filterRow(List<KeyValue> kvs) hasFilterRow() |
メソッド追加 |
filter | FilterBase | クラス新設 フィルター系のクラスは、Filterをimplementsするのではなく、FilterBaseをextendsするよう修正になっている。 |
||
filter | CompareFilter | NO_OP | オペレーションにNO_OPが追加された。 | |
filter | ColumnPaginationFilter DependentColumnFilter SingleColumnValueExcludeFilter |
クラス新設(フィルター) | ||
filter | ColumnValueFilter InclusiveStopRowFilter PageRowFilter PrefixRowFilter RegExpRowFilter StopRowFilter WhileMatchRowFilter |
クラス廃止(フィルター) | ||
filter | RowFilterInterface RowFilterSet |
クラス廃止 | ||
テ ー ブ ル 操 作 |
client | HTableFactory HTableInterface HTableInterfaceFactory |
クラス(インターフェース)新設 | |
hbase | HTableDescriptor | DEFAULT_DEFERRED_LOG_FLUSH DEFERRED_LOG_FLUSH DEFERRED_LOG_FLUSH_KEY |
定数追加 | |
isDeferredLogFlush() setDeferredLogFlush() |
メソッド追加 | |||
restSerialize() | メソッド廃止 | |||
hbase | HColumnDescriptor | DEFAULT_REPLICATION_SCOPE REPLICATION_SCOPE |
定数追加 | |
MAPFILE_INDEX_INTERVAL | 定数削除 | |||
コンストラクター | 引数の一部が変更 | |||
getBloomFilterType() setBloomFilterType() getScope() |
メソッド追加 | |||
getNameWithColon() isBloomfilter() setBloomfilter() restSerialize() setMapFileIndexInterval() |
メソッド廃止 | |||
H a d o o p |
mapreduce | BuildTableIndex IndexConfiguration IndexOutputFormat IndexRecordWriter IndexTableReducer LuceneDocumentWrapper |
クラス廃止 | |
mapreduce | MultiTableOutputFormat TableRecordReader TableRecordReaderImpl |
クラス新設 | ||
mapreduce | PutSortReducer SimpleTotalOrderPartitioner |
クラス新設(HFileOutputFormat関連) | ||
mapreduce | CopyTable ImportTsv |
クラス新設(ツール系) | ||
mapreduce | RowCounter | enum Counters | private→public | |
mapreduce | TableInputFormat | SCAN_COLUMN_FAMILY | プロパティー名の定数追加 | |
mapreduce | TableInputFormatBase | TableRecordReader | インナークラスだったが、独立したクラスになった。 | |
mapreduce | TableMapReduceUtil | initTableReducerJob() …オーバーロード addDependencyJars() …オーバーロード |
メソッド追加 | |
mapreduce | TableOutputFormat | QUORUM_ADDRESS REGION_SERVER_CLASS REGION_SERVER_IMPL |
プロパティー名の定数追加 | |
mapreduce | TableSplit | equals() | メソッド追加 | |
mapred | 未調査(でもmapreduceと同様っぽい) | |||
ユ ー テ ィ リ テ ィ ー |
util | Bytes | toBytes(char) toChar()・toChars() putChar()・putChars() toBigDecimal() putBigDecimal() |
メソッド廃止 |
startsWith() iterateOnSplits() |
メソッド追加 | |||
util | Pair | コンストラクター | finalクラスでなくなり、publicなデフォルトコンストラクターが追加された。 ハッシュコードの算出式が変わった。 |
|
setFirst() setSecond() |
メソッド追加 | |||
of() | メソッド廃止 | |||
util | FSUtils | getTableFragmentation() getTotalTableFragmentation() isAppendSupported() recoverFileLease() |
メソッド追加 | |
util | BloomFilter ByteBloomFilter DynamicByteBloomFilter |
クラス新設 | ||
util | EnvironmentEdge EnvironmentEdgeManager DefaultEnvironmentEdge IncrementingEnvironmentEdge |
クラス新設 | ||
util | JVMClusterUtil MD5Hash |
クラス新設 | ||
util | Migrate | クラス廃止 | ||
コ ネ ク シ ョ ン |
client | HConnection | getRegionServerWithoutRetries() | メソッド名がgetRegionServerForWithoutRetries()から変更になった。(Forが取れた) |
processBatchOfDeletes(List<Delete> list, 〜) | 引数listの型がArrayListからListになった。 | |||
processBatchOfPuts() setRegionCachePrefetch() getRegionCachePrefetch() prewarmRegionCache() |
メソッド追加 | |||
client | HConnectionManager | クラス定義 | HConstantsをimplementsするのをやめた。 (定数をソース内に書く為にimplementsしていた模様) |
|
clearRegionCache() getRegionServerWithoutRetries() |
メソッド追加 | |||
processBatchOfDeletes(List<Delete> list, 〜) | 引数listの型がArrayListからListになった。 | |||
processBatchOfPuts() setRegionCachePrefetch() getRegionCachePrefetch() prewarmRegionCache() |
メソッド追加 | |||
client | MultiPut MultiPutResponse |
クラス新設 (HConnectionManagerの中で使われるクラスであり、 Putの様なユーザーが使うクラスではない。[2010-07-07]) |
HBase0.89.20100621とHBase0.89.20100726(2010-08-10)の違い。[2010-08-15]
変更対象 | 変更内容 |
---|---|
bin/hbase | 変数binの内容を決める際のcdに「>/dev/null」が追加された。 restとhbckが追加になった。 (restは復活したと言うべきか?それともthriftやavroと同じになるように何かが修正された?HBase-2846) |
bin/hbase-config.sh bin/hbase-daemon.sh bin/hbase-daemons.sh bin/regionservers.sh bin/start-hbase.sh bin/stop-hbase.sh bin/zookeepers.sh |
変数binの内容を決める際のcdに「>/dev/null」が追加された。(HBase-2381) |
bin/local-master-backup.sh bin/local-regionservers.sh |
新規追加。 1台のマシン上で別のマスターやリージョンサーバーを稼動させるものらしい。 |
bin/replication/add_peer.rb | 新規追加。 Peerをクラスターへ追加するスクリプトらしい。 |
bin/replication/copy_tables_desc.rb | 新規追加。 あるクラスター内の全テーブルを別のクラスターに作り直すスクリプト。 (コピーされるのはテーブル定義だけで、データはコピーされない) |
conf/hbase-site.xml.psuedo-distributed.template | 新規追加。 擬似分散環境用のhbase-site.xmlのテンプレート。 |
lib/ | slf4jのバージョンが1.4.3→1.5.8(HBase-2850) |
pom.xml | ライブラリーのバージョンアップに伴う修正など。 |
クラス名 (およびパッケージ名の一部) |
変更箇所(メソッド名) | 変更内容 | ||
---|---|---|---|---|
デ ー タ ア ク セ ス |
hbase | HBaseConfiguration | コンストラクター | HBaseConfigurationを自分でnewするとログに警告が出るのだが、そのメッセージの綴りミスが修正されたw |
hbase | KeyValue | isDeleteColumnOrFamily() | メソッド追加。 | |
matchingFamily() matchingQualifier() |
別の引数をとるオーバーロードが追加。 | |||
matchingRow() | メソッド追加。 | |||
フ ィ ル タ ー |
filter | Filter.ReturnCode | NEXT_COL | ReturnCode列挙型にNEXT_COLが追加。 複数のバージョン(履歴)のデータを取得する場合、同一カラムでも複数のKeyValueが取得される。 それらをスキップして次のカラムへ行く為の指定だろう。 TimestampsFilterがNEXT_COLを使っている。 |
filter | TimestampsFilter | クラス新設。 指定されたタイムスタンプのデータだけを返すフィルター。 |
||
ユ ー テ ィ リ テ ィ ー |
util | Bytes | compareTo() | 引数の変数名が分かりやすくなった(笑) |
util | FSUtils | HDFSのappendがサポートされていない状態で動かした場合?に警告が出るようになった。 | ||
hbase | HConstants | REPLICATION_ENABLE_KEY | REPLICATION_ENABLE_KEY = "hbase.replication"が追加。 | |
そ の 他 |
ipc | HBaseServer | run() | run()内のcall()で例外が発生した場合のログ出力レベルがinfo→debug |
hbase | HServerAddress | アドレスが正しいかどうかのチェック処理が入った。 | ||
io | TimeRange | compare() | メソッド追加。 | |
client | HConnectionManager | ZooKeeperがらみで内部実装が何か変わっている。 | ||
executor | 色々 | 前回までディレクトリー内が空だったが、クラスが入っている。 | ||
replication | 色々 | ディレクトリー(パッケージ)が増えている。 | ||
ツ ー ル |
client | HBaseFsck | クラス新設。 hbaseシェルのhbckコマンドで呼ばれるクラス。 |
|
rest | Main | 何やらUsage(使い方)が変わった? |