狠狠撸

狠狠撸Share a Scribd company logo
初めての Hadoopパッチ投稿 
How to Contribute to Hadoop 
Cloudera World Tokyo 2014 LT 大山真実
自己紹介 
大山真実 おおやま まさのり 
某SIerでHadoopと戯れています 
入社3年目 Hadoopソースコードリーディングの お手伝いとかやってます
その0 はじめにやること
まずはこのドキュメントを読みましょう↓ 
「How to Contribute to Hadoop Common」 
http://wiki.apache.org/hadoop/ 
?環境構築からビルド、パッチの投稿まで全部 説明されてます
? 
これからパッチ投稿までの大まかな流れを紹 介します、が、細かい点は前述のドキュメント を確認して下さい。 
? 
初心者向けのTipsを中心に紹介します。 
まずは公式ドキュメントに目を通しましょう! 
Tipsその1
※ Mac + IntelliJを対象 
その1 Hadoop開発環境の準備
Git を Get! 
? 
gitをインストールしましょう 
? 
インストール方法は省略 
? 
日本語の情報も豊富なのでググってお好み の方法でインストールして下さい
Hadoopプロジェクトをgit clone 
? 
かなり時間かかります! 
? 
古い情報に注意! ? git://github.com/apache/hadoop-common.git →ブログなどの情報は参考程度に 
$ git clone git://git.apache.org/hadoop.git 
※ git://github.com /apache/hadoop.git のほうが早いとの噂 
まずは公式ドキュメントに目を通しましょう! 
Tipsその1 
大事なことなので二度言います!
ビルド環境構築 
? 
git clone してきたHadoopプロジェクト内の BUILDING.txtを読みましょう! #Windows向けのビルド方法も書いてあります。
ビルドに必要なもの 
? 
MacではHomebrewでインストールできます http://brew.sh/index_ja.html 
Requirements: 
* Unix System 
* JDK 1.6+ 
* Maven 3.0 or later 
* Findbugs 1.3.9 (if running findbugs) 
* ProtocolBuffer 2.5.0 
* CMake 2.6 or newer (if compiling native code), must be 3.0 or newer on Mac 
* Zlib devel (if compiling native code) 
* openssl devel ( if compiling native hadoop-pipes ) 
* Internet connection for first build (to fetch all Maven and Hadoop dependencies)
? 
必要なProtocolBufferのバーションは2.5.0 「Homebrewでバージョンを指定してインストールする」 http://qiita.com/tamasally/items/a7bc7eca85bbc70dda49 →brew install protobufだと2.6がインストールされビルドできません。 
? 
zlibのインストール方法に注意(Macのみ) dupesリポジトリを作成してからインストールする必要があります。 $ brew tap homebrew/dupes $ brew install zlib https://github.com/Homebrew/homebrew-dupes 
ProtocolBufferのバージョンに注意! 
Tipsその2
Hadoopをビルドしてみよう! 
$ mvn package -Pdist -DskipTests -Dtar 
オプションの説明などはBUILDING.txtに書いてあります! 
ビルド失敗しても慌てない! 
落ち着いてエラーメッセージを読みましょう! 
Tipsその3 
? 
必要なソフトウェアは全部インストールされていますか? 
? 
環境変数の設定忘れてませんか? 
? 
MavenのOOMエラーで失敗してませんか? export MAVEN_OPTS="-Xms256m -Xmx512m"
IntelliJにインポート 
? 
省略します。 
? 
初めての人にはこちらが参考になります。 「How-to: Create an IntelliJ IDEA Project for Apache Hadoop」 http://blog.cloudera.com/blog/2014/06/how-to-create-an-intellij-idea- project-for-apache-hadoop/ git clone元が古い情報になっているので注意
IntelliJのCode Styleの設定を変更しましょう 
Tipsその4 
? 
インデントの設定は2 アプリケーションメニュー>IntelliJ IDEA>preference>Code Style>Java>Tabs and Indents Tab size → 2 Indent 2 → 2 
? 
importで同じパッケージをまとめない アプリケーションメニュー>IntelliJ IDEA>preference>Code Style>Java>Imports Class count to use import with '*' → 99
その2 初心者向けチケットの探し方
JIRA登録 
? 
HadoopはASF ( apache software foundation ) のJIRAで管理しています https://issues.apache.org/jira/browse/HADOOP/ 
? 
まずはJIRAのアカウントを作成しちゃいましょ う!
初心者向けチケットを探す 
? 
初心者向けチケットはnewbieというラベルで 分類されています。 
? 
newbieの中でもドキュメント関連は比較的取 り組みやすいです。 
newbieチケットに取り組んでみましょう! 
Tipsその5
? 
「More」に「label」と入力するとlabelで検索できるように なります。 projects : Hadoop common, Hadoop HDFS, Hadoop Map/Reduce, Hadoop YARN statuses : OPEN Users/Groups : Unassigned Label : newbie
ブランチ作成 
? 
取り組むチケットが決まったらブランチを作成しま しょう! 
? 
trunkに移動 $ git checkout trunk 
? 
trunkからチケット番号名のブランチ作成 $ git branch チケット番号(例えばHDFS-99999) 
? 
ブランチに移動 $ git checkout チケット番号
Gitについて 
? 
Gitに詳しくない人は一番ハマるところな気がしま すが、今回は省略させて下さい。 
? 
基本的には 「Git and Hadoop」 http://wiki.apache.org/hadoop/GitAndHadoop を見ていただければ大丈夫だと思います。
コードをいじる 
? 
「How to Contribute to Hadoop Common」 をよく読んでコーディング 
? 
ドキュメントの場合 
– 
APTフォーマットで書く http://maven.apache.org/doxia/references/apt- format.html 
– 
1行80文字まで制限に注意! http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-136091.html#313
パッチ作成 
? 
コードの追加修正が終わったらパッチ作成 $ git diff --no-prefix trunk > HDFS-99999-1.patch 
? 
無事パッチ作成できました!やったね!
その3 パッチの投稿方法
パッチをアップロード
コメントを書く 
最初は 
I attached patch. 
とかで大丈夫!(たぶん)
Submit Patchをクリック
Submit Patchをクリック 
よくわからなければ何も書かないで大丈夫! 
# 気づいた人が直してくれます!(たぶん)
コミュニティメンバのコメント 
? 
コミッタはじめ色々な人が“優しく”コメントして くれます。 
? 
間違いを指摘されたら直しましょう! 
? 
コミットされるまでのルールは下記参照 http://hadoop.apache.org/bylaws.html
OSSコミュニティ特有?の略語に注意! 
Tipsその6 
? 
+1:賛成!(コミットするに一票!) 
? 
?1:反対! 
? 
LGTM:Looks good to me:いいね! 
? 
+1(non-binding): (コミッタじゃないけど…)賛成! 
? 
参考 http://qiita.com/uasi/items/86c3a09d17792ab62dfe
まとめ
ぜひ!Hadoopコミュニティに参加して Hadoopに関するあなたの 
?ちょっとここ不便だなぁ 
?このドキュメントはわかりにくいよね 
?バグだーーー! 
といった、いろいろな”気付き”をコミュニティに 還元してください!
ありがとうございました! 
皆様も本日は1日大変お疲れ様でした!

More Related Content

初めてのHadoopパッチ投稿 / How to Contribute to Hadoop (Cloudera World Tokyo 2014 LT講演資料)