HBase の開発をはじめたいのですが、どこから始めればいいでしょうか？

# 質問
HBase の開発をはじめたいのですが、どこから始めればいいでしょうか？

* ソースはどこからダウンロードすればいいんでしょうか？
* コンパイル・ビルドはどのように行えばいいのでしょうか？
* テストはどのように行えばいいのでしょうか？
* レビューはどのように行えばいいのでしょうか？
* パッチの投稿はどのように行えばいいのでしょうか？

# 回答

## HBase開発環境構築[完了]
### 参考サイト
http://hbase.apache.org/book.html#developer
上記サイトの通り作業を行えば大体問題ない(上記では不十分な点は以下を見れば解決できる)

### リポジトリ
#### SVN
svn co http://svn.apache.org/repos/asf/hbase/trunk hbase-core-trunk 

#### Git
git clone git://git.apache.org/hbase.git 

HBaseのリポジトリはSVNがオリジナルらしく、参考サイトもSVNでの環境構築方法が記載しているので、GitではなくSVNで作業を実施した

### Eclipseプラグイン
以下を予めインストールしておく

* subversive
* m2ecliplse

### Eclipse Code Formatting の設定
https://issues.apache.org/jira/browse/HBASE-3678 参照
CodeFormatのインポートだけでなくJava EditorのSave Actionの設定も忘れずに


### SVNチェックアウト
Eclipse上から以下に相当する処理を行う(subversive管理下にしたかったので)

svn co http://svn.apache.org/repos/asf/hbase/trunk hbase-core-trunk

ターミナルより以下を実行
```
mvn eclipse:eclipse
```

参考サイトではM2_REPOのクラスパス変数が必要とあるが、すでに定義済みであった
また、以下の対処は既に行われているようであった

------ 抜粋Start　------ 
If you install the m2eclipse and import the HBase pom.xml in your workspace, you will have to fix your eclipse Build Path. Remove target folder, add target/generated-jamon and target/generated-sources/java folders. You may also remove from your Build Path the exclusions on the src/main/resources and src/test/resources to avoid error message in the console 'Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.6:run (default) on project hbase: 'An Ant BuildException has occured: Replace: source file .../target/classes/hbase-default.xml doesn't exist'. This will also reduce the eclipse build cycles and make your life easier when developing.
------ 抜粋End　------ 

### Eclipse固有の問題
Bytes.java,ResourceChecker.java でsunパッケージのクラスでAccess restrictionが発生
参考サイトでは回避不能とあったが、以下で解決できる

Preference -> Java -> Compiler -> Errors/Warnings
Deprecated and restricted API Forbidden reference を Error から Warning に変更する

### HBase tarballのビルド
参考サイトどおり以下のコマンドを実行してもうまくいかない

```
MAVEN_OPTS="-Xmx2g" mvn clean site install assembly:single -Dmaven.test.skip -Prelease
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.SmallTests
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
```

以下のコマンドでテストをスキップして実行が成功する(pom.xmlより勘で判明)

```
MAVEN_OPTS="-Xmx2g" mvn clean site install assembly:single -Dmaven.test.skip -Dmaven.test.skip.exec -Prelease
```


### Adding an HBase release to Apache's Maven Repository
Mavenレポジトリにリリースする方法は今必要ないので省略

### Publishing a new version of hbase.apache.org
これも恐れ多いのでもちろん省略

### JUnit実行方法
SmallTestとMediumTestを実行(デフォルト)

```
mvn test
```

セキュリティプロファイルを有効にしてテスト
mvn test -P security

全テスト実行
```
mvn test -P runAllTests
```

個別テストの実行例
```
mvn test -P localTests -Dtest=MyTest
mvn test -P localTests -Dtest=MyTest1,MyTest2,MyTest3
mvn test -P localTests -Dtest=org.apache.hadoop.hbase.client.*
mvn test -P security,localTests -Dtest=TestGet
```
hbasetests.shから実行
```
./dev-support/hbasetests.sh
./dev-support/hbasetests.sh runAllTests
./dev-support/hbasetests.sh replayFailed
```

## JIRAチケット調査[作業中]
まず、JIRAに慣れるべくJIRAを巡回してまわった。
自分が着手できそうなJIRAを選別中 以下候補

https://issues.apache.org/jira/browse/HBASE-5960
https://issues.apache.org/jira/browse/HBASE-5921
https://issues.apache.org/jira/browse/HBASE-5659
https://issues.apache.org/jira/browse/HBASE-5273
https://issues.apache.org/jira/browse/HBASE-5164
https://issues.apache.org/jira/browse/HBASE-4113




# 注意
この投稿は、Hadoop Hackathon in Tokyo の QA サイト閉鎖に伴う移行作業により作成されたものです。
移行元URL: http://glowing-moon-7493.herokuapp.com/questions/191/hbase