View
532
Download
0
Category
Preview:
DESCRIPTION
Tuning Maniax 2014 スタートアップセミナーの資料です。Microsoft Azure上のHadoopであるHDInsightの説明と、コース攻略のヒントを紹介します。
Citation preview
Hadoopコース攻略のヒント
佐々木邦暢 (@ksasakims)
日本マイクロソフト株式会社
2
Apache Hadoop
HDInsight 登場
クラスターの作成と管理
競技ルールの説明とチューニングのポイント
結果の提出方法
本日の内容
4
突然ですが
いま、1 TB の Web アクセスログファイルが目の前にあります。URI 毎にアクセス数を集計しなければなりません。
どうしますか?
grep sort uniq| | > output
5
分散処理の必要性
いずれにせよ、数多くのコンピューターで生成されるデータを、たった一台で分析するのは無理があります。
一人じゃムリ…
複数のコンピューターによる分散処理が必要です
手分けしよう!
6
そこで Apache Hadoop です
Apache の分散コンピューティングフレームワーク
Google の論文が契機となって誕生!
多数のサーバーで分散並列処理
Yahoo や Facebookで使われている 高スケーラビリティ
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
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
9
Hadoop クラスターの構成要素
Hadoop クラスター
MapReduce 層
HDFS 層ファイルの登録情報を一元管理
ジョブトラッカー
タスクトラッカー
タスクトラッカー
タスクトラッカー
タスクトラッカー
Map タスク Map タスクジョブとタスクの
状態を管理
Map タスク Map タスク Reduceタスク
タスクトラッカー
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/
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)
13
HDInsight に含まれる Hadoop のコンポーネント
Hcatalog
主要な関連プロジェクト
14
HDInsight Service システム構成
データ ノードネーム ノード BLOB ストレージ
Microsoft Azure の PaaS 機能と BLOB ストレージを活用します。
ネームノード、データノードは
どちらも Worker ロールの
インスタンスです。
多数のノードを素早く
デプロイできます。
また、Microsoft Azure の
「BLOB ストレージ」を、
デフォルトのファイルシステム
として利用します。
もちろん HDFS も
利用可能です。
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 等。
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 用
主なファイルシステム
17
BLOBストレージの登録と利用
wasb://コンテナ名@アカウント名.blob.core.windows.net/パス名
core-site.xml で、 BLOB ストレージがデフォルトファイルシステムに設定されています。
19
管理ポータルからクラスター作成
「簡易作成」であっという間に 32 ノードまでのクラスタが作れます
「簡易作成」画面にはリージョンの指定欄が
ありませんが、ここで選択したストレージ
アカウントと同じリージョンに、
HDInsight クラスターが作成されます。
20
マスターノードへのRDP許可
21
使い終わったら削除
マスターとスレーブの
全ノードが削除されます。
課金も止まります。
BLOBストレージは残ります。
作成したスクリプトや
結果データなどは、Hadoopの
ファイルシステムに置いて
おけば、クラスタを消しても
残ります。
23
課題設定
総容量1TBほどの
「Webアクセスログを模したタブ区切りのテキストファイル」を、
事務局が用意する「東南アジアのストーレジアカウント」に公開します。
具体的なURLは後日。
そのログファイル(群)を自分のストレージアカウントにコピーして、
以下の解析結果を出力してください。
アクセス数の多いURL: 上位10件
多く利用されているユーザーエージェント: 上位10件
URI毎の平均レスポンスタイム: 下位10件
「Webアクセスログの解析ごっこ」
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
25
プログラムの作成方法
HDInsight を使う限り、解析プログラムの作成方法は自由です。
JavaでMapReduceプログラムを書く 。(普通のやり方)
Hadoop Streamingを使ってC# (や、その他の言語) で書く。
Hiveで華麗にクエリを発行する。
PIGですらすらとスクリプトを書く。
26
チューニングのポイント
HDInsightという同じ環境ですが、差は付きます。
ノード数!
(これは「チューニング」というわけではありませんが、
結果に大きな影響を及ぼす要素であることは間違いありません)
シャッフル/ソートフェーズの負荷軽減 (Combinerの作成など)
HadoopやJVMに渡す各種パラメータの設定
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
29
ご提出いただくもの
基本的に皆様の「スポーツマンシップ」に依存しております!
Hadoopからの出力ファイル。
ジョブの実行に要した時間を示すログ。
再現試験を可能にするための環境情報。
ノード数、jarファイル、Hiveのクエリ、PIGのスクリプト等
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
31
詳細はThink ITで
出力ファイルの形式や個数、提出方法などの詳細は、
Think ITのTuning Maniax 2014 Hadoop編 第2回記事で
説明します!
Recommended