32
初めての Hadoopパッチ投稿 How to Contribute to Hadoop Cloudera World Tokyo 2014 LT 大山真実

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

初めての Hadoopパッチ投稿

How to Contribute to Hadoop

Cloudera World Tokyo 2014 LT 大山真実

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

自己紹介

大山真実 おおやま まさのり

某SIerでHadoopと戯れています

入社3年目

Hadoopソースコードリーディングの

お手伝いとかやってます

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

その0 はじめにやること

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

まずはこのドキュメントを読みましょう↓

「How to Contribute to Hadoop Common」

http://wiki.apache.org/hadoop/

• 環境構築からビルド、パッチの投稿まで全部

説明されてます

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

• これからパッチ投稿までの大まかな流れを紹

介します、が、細かい点は前述のドキュメント

を確認して下さい。

• 初心者向けのTipsを中心に紹介します。

まずは公式ドキュメントに目を通しましょう!

Tipsその1

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

※ Mac + IntelliJを対象

その1 Hadoop開発環境の準備

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

Git を Get!

• gitをインストールしましょう

• インストール方法は省略

• 日本語の情報も豊富なのでググってお好み

の方法でインストールして下さい

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

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 大事なことなので二度言います!

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

ビルド環境構築

• git clone してきたHadoopプロジェクト内の

BUILDING.txtを読みましょう!

#Windows向けのビルド方法も書いてあります。

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

ビルドに必要なもの

• 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)

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

• 必要な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

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

Hadoopをビルドしてみよう!

$ mvn package -Pdist -DskipTests -Dtar

オプションの説明などはBUILDING.txtに書いてあります!

ビルド失敗しても慌てない! 落ち着いてエラーメッセージを読みましょう!

Tipsその3

• 必要なソフトウェアは全部インストールされていますか?

• 環境変数の設定忘れてませんか?

• MavenのOOMエラーで失敗してませんか?

export MAVEN_OPTS="-Xms256m -Xmx512m"

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

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元が古い情報になっているので注意

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

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

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

その2 初心者向けチケットの探し方

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

JIRA登録

• HadoopはASF ( apache software foundation )

のJIRAで管理しています https://issues.apache.org/jira/browse/HADOOP/

• まずはJIRAのアカウントを作成しちゃいましょ

う!

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

初心者向けチケットを探す

• 初心者向けチケットはnewbieというラベルで

分類されています。

• newbieの中でもドキュメント関連は比較的取

り組みやすいです。

newbieチケットに取り組んでみましょう!

Tipsその5

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

• 「More」に「label」と入力するとlabelで検索できるように

なります。 projects : Hadoop common, Hadoop HDFS,

Hadoop Map/Reduce, Hadoop YARN

statuses : OPEN

Users/Groups : Unassigned

Label : newbie

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

ブランチ作成 • 取り組むチケットが決まったらブランチを作成しま

しょう!

• trunkに移動

$ git checkout trunk

• trunkからチケット番号名のブランチ作成

$ git branch チケット番号(例えばHDFS-99999)

• ブランチに移動

$ git checkout チケット番号

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

Gitについて

• Gitに詳しくない人は一番ハマるところな気がしま

すが、今回は省略させて下さい。

• 基本的には

「Git and Hadoop」

http://wiki.apache.org/hadoop/GitAndHadoop

を見ていただければ大丈夫だと思います。

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

コードをいじる • 「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

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

パッチ作成

• コードの追加修正が終わったらパッチ作成

$ git diff --no-prefix trunk > HDFS-99999-1.patch

• 無事パッチ作成できました!やったね!

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

その3 パッチの投稿方法

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

パッチをアップロード

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

コメントを書く

最初は I attached patch. とかで大丈夫!(たぶん)

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

Submit Patchをクリック

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

Submit Patchをクリック

よくわからなければ何も書かないで大丈夫! # 気づいた人が直してくれます!(たぶん)

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

コミュニティメンバのコメント

• コミッタはじめ色々な人が“優しく”コメントして

くれます。

• 間違いを指摘されたら直しましょう!

• コミットされるまでのルールは下記参照

http://hadoop.apache.org/bylaws.html

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

OSSコミュニティ特有?の略語に注意!

Tipsその6

• +1:賛成!(コミットするに一票!)

• −1:反対!

• LGTM:Looks good to me:いいね!

• +1(non-binding):

(コミッタじゃないけど…)賛成!

• 参考 http://qiita.com/uasi/items/86c3a09d17792ab62dfe

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

まとめ

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

ぜひ!Hadoopコミュニティに参加して

Hadoopに関するあなたの

・ちょっとここ不便だなぁ

・このドキュメントはわかりにくいよね

・バグだーーー!

といった、いろいろな”気付き”をコミュニティに

還元してください!

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

ありがとうございました!

皆様も本日は1日大変お疲れ様でした!