初めてのHadoopパッチ投稿 / How to Contribute to Hadoop (Cloudera World Tokyo 2014...

Post on 07-Jul-2015

1.592 views 1 download

description

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

Transcript of 初めてのHadoopパッチ投稿 / How to Contribute to Hadoop (Cloudera World Tokyo 2014...

初めての 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日大変お疲れ様でした!