32
Hadoopコース攻略のヒント 佐々木邦暢 (@ksasakims) 日本マイクロソフト株式会社

Tuning maniax 2014 Hadoop編

Embed Size (px)

DESCRIPTION

Tuning Maniax 2014 スタートアップセミナーの資料です。Microsoft Azure上のHadoopであるHDInsightの説明と、コース攻略のヒントを紹介します。

Citation preview

Page 1: Tuning maniax 2014 Hadoop編

Hadoopコース攻略のヒント

佐々木邦暢 (@ksasakims)

日本マイクロソフト株式会社

Page 2: Tuning maniax 2014 Hadoop編

2

Apache Hadoop

HDInsight 登場

クラスターの作成と管理

競技ルールの説明とチューニングのポイント

結果の提出方法

本日の内容

Page 3: Tuning maniax 2014 Hadoop編
Page 4: Tuning maniax 2014 Hadoop編

4

突然ですが

いま、1 TB の Web アクセスログファイルが目の前にあります。URI 毎にアクセス数を集計しなければなりません。

どうしますか?

grep sort uniq| | > output

Page 5: Tuning maniax 2014 Hadoop編

5

分散処理の必要性

いずれにせよ、数多くのコンピューターで生成されるデータを、たった一台で分析するのは無理があります。

一人じゃムリ…

複数のコンピューターによる分散処理が必要です

手分けしよう!

Page 6: Tuning maniax 2014 Hadoop編

6

そこで Apache Hadoop です

Apache の分散コンピューティングフレームワーク

Google の論文が契機となって誕生!

多数のサーバーで分散並列処理

Yahoo や Facebookで使われている 高スケーラビリティ

Page 7: Tuning maniax 2014 Hadoop編

7

HDFS

Hadoop の提供するもの

その 1. 分散ファイルシステム “HDFS” (Hadoop Distributed File System)

複数のコンピューターを束ねて、

一つの仮想的なファイルシステムを提供。

Hadoop クラスタに属する全ての

ノードが同じ名前空間を共有。

各ファイルは 64 MB ~ 256 MB 程度の

ブロックに分割されて、複数ノードに分散。

ブロックサイズが大きいのは、シーケン

シャルアクセスに特化しているため

各断片は最低 3 ノードに複製され、

ノード障害への耐性を持つ。

一つのファイルの複数の部分を、複数の

コンピューターで同時に処理することで、

処理を高速化することができる。

断片 1 断片 2 断片 3 断片 4

断片 1 断片 2 断片 3 断片 4

ファイル 1 断片 1 断片 2 断片 3 断片 4

ファイル 4 断片 1 断片 2 断片 3 断片 4

Page 8: Tuning maniax 2014 Hadoop編

8

Hadoop の提供するもの

その 2. 分散プログラミングモデル “MapReduce”

2013-08-26 23:59:03 W3SVC1 192.168.0.1 GET /…2013-08-26 23:59:05 W3SVC1 192.168.0.1 GET /…2013-08-26 23:59:25 W3SVC1 192.168.0.1 GET /…2013-08-27 00:01:02 W3SVC1 192.168.0.1 GET /…2013-08-27 00:02:04 W3SVC1 192.168.0.1 GET /…

名前は一見難しげですが、実際には単純です。

(だからこそスケーラビリティがあります)

例えば右のような Web のアクセスログがあるとして、

伝統的なテキスト処理ツールによる集計はこのようなものですが、

$ cat access_log | grep /Login.aspx | sort | uniq –c > output.txt

対象ファイルの全行を頭から舐めて何らかの処理をする(この場合は検索)

中間結果を集計のためにソートする

ソートされたデータを数え上げて結果を得る

MapReduce はこういった処理をクラスター上で分散並列実行する仕組みです

Map Reduce

Page 9: Tuning maniax 2014 Hadoop編

9

Hadoop クラスターの構成要素

Hadoop クラスター

MapReduce 層

HDFS 層ファイルの登録情報を一元管理

ジョブトラッカー

タスクトラッカー

タスクトラッカー

タスクトラッカー

タスクトラッカー

Map タスク Map タスクジョブとタスクの

状態を管理

Map タスク Map タスク Reduceタスク

タスクトラッカー

Page 10: Tuning maniax 2014 Hadoop編
Page 11: Tuning maniax 2014 Hadoop編

11

Microsoft Azure HDInsight

Hortonworks と協業し、Windows 環境で Hadoop を提供します

元々 Java で書かれたオープンソースプロジェクトである

Hadoop ですが、 Windows 環境でスムーズに動かすた

めにはいくつか工夫が必要でした。

マイクロソフトは Hortonworks 社と協業し、 Hadoop

の Windows 環境への移植と最適化を行っています。

Hortonworks は Yahoo! で Apache Hadoop の

開発に携わっていたチームが独立して設立された企業。

“Hortonworks Data Platform” (HDP) という

Hadoop ディストリビューションを開発しており、

その Windows 版が HDInsight のコア部分です。

http://hortonworks.com/products/hdp-windows/

Page 12: Tuning maniax 2014 Hadoop編

12

Microsoft Azure HDInsight Service

すぐに使えるクラウド上の Hadoop です。

2013年10月正式リリース済み

利用可能なリージョンは以下の 5 箇所

東南アジア (AsiaPacific Southeast)

北ヨーロッパ (Europe North)

西ヨーロッパ (Europe West)

米国東部 (US East)

米国西部 (US West)

インスタンスサイズ

ヘッドノード(ネームノード)は XL

データノードは L サイズ

OS

Windows Server 2012 R2

バージョンは以下の3種から選択可能

HDInsight-1.6 (Hadoop 1.0.3)

HDInsight-2.1 (Hadoop 1.2.0)

HDInsight-3.0 (Hadoop 2.2.0)

Page 13: Tuning maniax 2014 Hadoop編

13

HDInsight に含まれる Hadoop のコンポーネント

Hcatalog

主要な関連プロジェクト

Page 14: Tuning maniax 2014 Hadoop編

14

HDInsight Service システム構成

データ ノードネーム ノード BLOB ストレージ

Microsoft Azure の PaaS 機能と BLOB ストレージを活用します。

ネームノード、データノードは

どちらも Worker ロールの

インスタンスです。

多数のノードを素早く

デプロイできます。

また、Microsoft Azure の

「BLOB ストレージ」を、

デフォルトのファイルシステム

として利用します。

もちろん HDFS も

利用可能です。

Page 15: Tuning maniax 2014 Hadoop編

15

なぜ BLOB ストレージ?

HDFS の代わりに BLOB ストレージを使うメリット

BLOB ストレージは、大容量・低価格・高信頼性と

三拍子そろった Microsoft Azure の主要サービスです。

Azure 上で稼働する多くのアプリケーションが、

BLOB ストレージにデータを保存しています。

また、“Azure Diagnostics” 機能で Azure 上の

サーバーから IIS ログ等のログファイルを BLOB

ストレージへ自動転送することも一般的です。

BLOB をデフォルトのファイルシステムとすることで、

これら BLOB 上のデータを HDFS へ一旦コピーする

ことなく、直接分析することができます。

データはそこにある! クラスターを消してもデータは残る

Hadoop クラスターの稼働中は、ジョブを実行して

いない時間も CPU コア数に応じた課金が発生します。

クラスターを削除してしまえば、課金は止まりますが、

HDFS は各ノードのローカルディスクであるため、

内容が失われてしまいます。

BLOB ストレージは、クラスターとは切り離されて

いますから、クラスターを削除してもデータは残ります。

様々なツールが利用可能

BLOB ストレージにアクセスする既存のツールで、

Hadoop クラスターとデータのやり取りができます。

CloudBerry Explorer for Windows Azure や

CloudXplorer, AzCopy 等。

Page 16: Tuning maniax 2014 Hadoop編

16

NativeAzureFileSystem

どういう仕組みで BLOB を Hadoop のファイルシステムにしているのか

そもそも Hadoop のファイルシステムは可換

様々なファイルシステムを扱えるように、 Hadoop はファイルシステムの抽象化層を持っています。

マイクロソフトは NativeAzureFileSystem クラスを作成し、 Azure BLOB をサポートできるようにしました。

種類 URIスキーム

Javaの実装クラス(org.apache.Hadoop)

説明

Local file fs.LocalFileSystemローカルファイルシステム

HDFS hdfs hdfs.DistributedFileSystem これがデフォルト

FTP ftp fs.ftp.FTPFileSystem FTP サイト用

S3 s3n fs.s3native.NativeS3FileSystem Amazon S3 用

AzureBLOB

wasb fs.azurenative.NativeAzureFileSystem Azure BLOB 用

主なファイルシステム

Page 17: Tuning maniax 2014 Hadoop編

17

BLOBストレージの登録と利用

wasb://コンテナ名@アカウント名.blob.core.windows.net/パス名

core-site.xml で、 BLOB ストレージがデフォルトファイルシステムに設定されています。

Page 18: Tuning maniax 2014 Hadoop編
Page 19: Tuning maniax 2014 Hadoop編

19

管理ポータルからクラスター作成

「簡易作成」であっという間に 32 ノードまでのクラスタが作れます

「簡易作成」画面にはリージョンの指定欄が

ありませんが、ここで選択したストレージ

アカウントと同じリージョンに、

HDInsight クラスターが作成されます。

Page 20: Tuning maniax 2014 Hadoop編

20

マスターノードへのRDP許可

Page 21: Tuning maniax 2014 Hadoop編

21

使い終わったら削除

マスターとスレーブの

全ノードが削除されます。

課金も止まります。

BLOBストレージは残ります。

作成したスクリプトや

結果データなどは、Hadoopの

ファイルシステムに置いて

おけば、クラスタを消しても

残ります。

Page 22: Tuning maniax 2014 Hadoop編
Page 23: Tuning maniax 2014 Hadoop編

23

課題設定

総容量1TBほどの

「Webアクセスログを模したタブ区切りのテキストファイル」を、

事務局が用意する「東南アジアのストーレジアカウント」に公開します。

具体的なURLは後日。

そのログファイル(群)を自分のストレージアカウントにコピーして、

以下の解析結果を出力してください。

アクセス数の多いURL: 上位10件

多く利用されているユーザーエージェント: 上位10件

URI毎の平均レスポンスタイム: 下位10件

「Webアクセスログの解析ごっこ」

Page 24: Tuning maniax 2014 Hadoop編

24

ログファイルのフォーマット

解析しやすいように単純化してあります

2014-04-01 02:52:48 192.168.47.74 user734 100.77.60.35

/javadocs/r0.11.0/api/org/apache/hadoop/hive/ql/io/BucketizedHiveInputFormat.html 759

Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:22.0) Gecko/20130328 Firefox/22.0

2014-04-01 03:07:12 192.168.208.45 user647 100.77.60.35

/docs/current/api/org/apache/hadoop/filecache/class-use/DistributedCache.html 818

Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:23.0) Gecko/20131011 Firefox/23.0

2014-04-01 03:21:36 192.168.149.135 user781 100.77.60.35

/docs/r0.12.0/api/org/apache/pig/scripting/jruby/JrubyAlgebraicEvalFunc.Final.html 734

Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:22.0) Gecko/20130328 Firefox/22.0

datetime \t clientip \t user \t serverip \t uri \t timetaken \t useragent

Page 25: Tuning maniax 2014 Hadoop編

25

プログラムの作成方法

HDInsight を使う限り、解析プログラムの作成方法は自由です。

JavaでMapReduceプログラムを書く 。(普通のやり方)

Hadoop Streamingを使ってC# (や、その他の言語) で書く。

Hiveで華麗にクエリを発行する。

PIGですらすらとスクリプトを書く。

Page 26: Tuning maniax 2014 Hadoop編

26

チューニングのポイント

HDInsightという同じ環境ですが、差は付きます。

ノード数!

(これは「チューニング」というわけではありませんが、

結果に大きな影響を及ぼす要素であることは間違いありません)

シャッフル/ソートフェーズの負荷軽減 (Combinerの作成など)

HadoopやJVMに渡す各種パラメータの設定

Page 27: Tuning maniax 2014 Hadoop編

27

参考になる情報

「Hadoopを使いこなす(1)」

http://techblog.yahoo.co.jp/architecture/_footnote/

「How to manually compile and create your own jar file to execute on HDInsight」

http://blogs.msdn.com/b/bigdatasupport/archive/2014/01/21/how-to-manually-

compile-and-create-your-own-jar-file-to-execute-on-hdinsight.aspx

「How to pass Hadoop configuration values for a job on HDInsight」

http://blogs.msdn.com/b/bigdatasupport/archive/2014/02/13/how-to-pass-

hadoop-configuration-values-for-a-job-via-hdinsight-powershell-and-net-sdk.aspx

「Customizing HDInsight Cluster provisioning」

http://blogs.msdn.com/b/bigdatasupport/archive/2014/04/15/customizing-

hdinsight-cluster-provisioning-via-powershell-and-net-sdk.aspx

Page 28: Tuning maniax 2014 Hadoop編
Page 29: Tuning maniax 2014 Hadoop編

29

ご提出いただくもの

基本的に皆様の「スポーツマンシップ」に依存しております!

Hadoopからの出力ファイル。

ジョブの実行に要した時間を示すログ。

再現試験を可能にするための環境情報。

ノード数、jarファイル、Hiveのクエリ、PIGのスクリプト等

Page 30: Tuning maniax 2014 Hadoop編

30

出力ファイルの様式

デフォルトのOutputFormatでReducerが出力するファイル

User: admin

Name: word count

Application Type: MAPREDUCE

State: FINISHED

FinalStatus: SUCCEEDED

Started: 24-Mar-2014 17:01:11

Elapsed: 1hrs, 7mins, 53sec

Page 31: Tuning maniax 2014 Hadoop編

31

詳細はThink ITで

出力ファイルの形式や個数、提出方法などの詳細は、

Think ITのTuning Maniax 2014 Hadoop編 第2回記事で

説明します!

Page 32: Tuning maniax 2014 Hadoop編