Upload
hadoop-conference-japan
View
1.591
Download
1
Embed Size (px)
DESCRIPTION
■初めてのHadoopパッチ投稿 How to Contribute to Hadoop (Cloudera World Tokyo 2014 LT講演資料) 大山真実
Citation preview
初めての 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/doc
umentation/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日大変お疲れ様でした!