Skip to main content
アルゴリズムから学ぶ Azure ML モジュールの使いこなし方
-- Azure Machine Learning との連携について学ぶ --
HDInsight編
2015/11/27
株式会社ネクストスケープ
エバンジェリスト 上坂貴志(@takashiuesaka)
自己紹介
会社 株式会社ネクストスケープ
名前 上坂貴志(うえさかたかし)Twitter:@takashiuesaka
年齢 43歳
好き・興味あり
Azure(Microsoft MVP)、機械学習、ソフトウェアアーキテクチャ、DDD、
Scrum(認定スクラムマスター)
講演活動
• FEST2015 登壇(Channel9で動画公開)
• CloudDays2015東京・大阪 登壇
• Developers Summit 2015 登壇
執筆活動
• 人工知能アプリケーション総覧 寄稿(日経BP社、2015年9月30日発売)
• ITPro:クラウドで機械学習を手近に、Azure Machine Learningの概要
会社紹介
設立年月日 2002年4月10日
資本金 1億5001万円
主要株主 株式会社豆蔵ホールディングス
(東証一部上場)
〒163-0722
東京都新宿区西新宿2-7-1
小田急第一生命ビル22F
03-5325-1301(代表)
会社紹介
クラウド、デジタルマーケティング、システム構築に強み
(※2012年~2014年マイクロソフト パートナーズ オブ ザ イヤー)
2013 Microsoft Worldwide Partner Award において
Sitecore Of The Year Asia 2013において
Cloud Partner of the Year ファイナリスト選出
Best Japanese Siteを受賞
3年連続 Microsoft Azureパートナー アワード受賞
会社紹介
タワーレコード様
「NO MUSIC, NO LIFE.」のキャッチフレーズでおなじみの、音楽エンタメ・小売り事業の大手。
250万点もの商品を取り扱うオンラインショップ「TOWER RECORDS ONLINE」のCMSをSitecoreで構築。
2010年当時に1日当たり100万強だったPVは、2014年4月時点で205万強まで倍増。
https://www.sitecore.net/ja-jp/customers/e-commerce/towerrecords.aspx
エイベックス通信放送様(dTV powerd by BeeTV )
「dビデオ powered by BeeTV」は、スマートフォン利用者向けに映画、ドラマなどを視聴可能な国内最大規模の動画配信サイトとして注目を
集めている。
Microsoft Azureにて、高負荷・ハイパフォーマンスに耐えうるスケーラブルな配信インフラを構築。
http://special.nikkeibp.co.jp/as/201207/mpncompetency/cs01.html
400万会員を超える動画サイトの配信インフラを構築
EC売上を3年間で2倍以上にしたタワーレコードの成長を支えたCMS基盤を導入
HDInsightとの連携の前に
そもそも機械学習とは何か
BigData
CRM
ソーシャル
メディア
センサー
データ
企業内
データ
クリック
データ
メール
ほしい結果を抽出
人間
ルール
ほしかった結果
全ていらない結果ではない!
機械学習がない場合
Machine Learing
機械学習はここに適用する
ルール適用
ルール適用外
そもそも機械学習とは何か
深層学習(DeepLearning)との違い
http://www.mizuho-
ir.co.jp/publication/column/2013/1119.html
ディープラーニングの概念
低レベルの特長量の組み合わせで高レベルの概念を表現
ニューラルネットワークモデルの多層化
「自ら仮説を立てて実証」によるモデル生成
特徴量の抽出を自ら行う
(表現学習)
典型的な機械学習構築のワークフロー
特徴量の抽出=前処理
特徴量の抽出 機械学習データ収集要件定義 評価・検証 ビジネス施策
Hadoopとは
なぜHadoopが必要とされたのだろうか
Hadoopが生まれた背景
 膨大な「ログデータ」に対する対応の必要性
Google内部で「データ・処理」分散の仕組みが生まれた
指数関数的に増えるログ
→だが追加できる容量には上限が
ログの増加に伴う処理速度の劣化
→だが追加できるメモリ・CPUパワーには上限が
Googleは分散の仕組みを論文として発表
論文を元に作られたのがHadoop
Hadoopの問題解決方法
データ容量問題
HDFS
(Hadoop Distributed File System)
処理速度問題
MapReduce
Hadoopの分散ファイルシステム
HDFSとは
HDFS
ファイル
PUT
GET
ファイル1
ノード1 ノード2 ノード3 ノード4
・・・
ファイル2
ファイル3
ブロック1
ブロック1
ブロック1
ブロック2
ブロック2
ブロック2
ブロック3
ブロック3
ブロック3
ブロック4
ブロック4
ブロック4
MapReduceとは
Hadoopの分散処理
ジョブ投入
ファイル1
ノード1 ノード2 ノード3 ノード4
・・・
ファイル2
ブロック1
ブロック1
ブロック2
ブロック2
ブロック3
ブロック3
ブロック4
ブロック4
クライアント
ヘッドノード
MapReduce
Application
MapReduce
Application
MapReduce
Application
MapReduce
Application
Hadoopとは
現在の
Hadoopの形
つまりHadoopの得意分野は
 大量のフラットファイルに対する順次走査
 分散並列「バッチ」処理
でも人間というものは我儘にできている
Hadoop の進化 x エコシステム
Hadoopの進化 x エコシステム
http://jp.hortonworks.com/hdp/
エコシステムの代表格
Hive。HiveQLと呼ばれるSQLライクの構文を用いて、MapReduce処理をRDBのテーブ
ル操作として扱える。
ただし、更新はできない。あくまでHadoopをDWHとして扱う。スキーマ定義が必要。
Pig。パイプラインをつなげる形で処理を記載できるため、複雑なクエリもわかりやす
く書ける。スキーマは有り無しどっちもいける。実行速度に難あり。
HBase。キー・バリュー型のNoSQLデータストア。SQLには対応し
ていない。データ更新可能な点がHiveと大きく異なる。
Storm。リアルタイム処理を行うためにデータをストリームとして受け
取り処理を行う。HadoopのMapReduceはBatch処理なので対象的な
もの。Azure StremAnalyticsと同じ用途。
Spark。ポストHadoop?最近とても話題の高速インメモリ分散処理。
ストリーム処理のAPIもある。BatchもリアルタイムもどちらもOK。
HDInsight
Hadoop On Azure
HDInsightの特徴
ディストリビューターはHortonworks
 Windows, Linuxどちらでも稼働する
データの格納場所
 BlogStorageと、HDFSと両方使用可能だが、Blobの使用を強く推奨
‣ Blogへファイルアップロードするだけでデータ投入可能
‣ HDInsightを削除しても、プロビジョニング時にBlob指定で環境復活
仮想ネットワークに配置可能
 WebApps、VMからHDInsightのジョブを呼び出せる
 HDInsightとSQLDatabaseやVM間でデータが直接転送できる
プロビジョニング
 管理ポータルからでも、Powershell、Azure Cliどれからでも構築可能。
 高可用構成
‣ ヘッドノード x2, データノード x 1以上が用意できる。
‣ Hbase, Storm, Sparkは Zookeeper x3
HDInsightのHadoopエコシステム
YARN
HDFS
Map
Reduce
Hive
Ambari
HBaseMahout Spark
Azure Machine LearningとHDInsight
Hiveを使用してHDInsightからデータを取得
 Readerのプロパティに設定
HDInsight
Machine
Learning
Property
WebHCat
接続設定の例
HDInsight
クラスタ名:nsuesaka
BlobStorage
アカウント名:nsuesakafor1127
コンテナ名:hadoop
Machine Learning
Reader Hive設定
Hive database query:
HCatalog:https://nsuesaka.azurehdinsight.net
Hadoop user account name:<<アカウント>>
Hadoop user aacount password:<<パスワード>>
Location of output data:Azure
Azure storage account name:nsuesakafor1127
Azure storage key:<<key>>
Azure container name:hadoop
WebHCat
HCatalogのRestAPI 。API例
https://nsuesaka.azurehdinsight.net/templeton/v1/status
稼働状況の結果をJSONで受け取れる
DEMO
まとめ
 Hadoopについて
 フラットファイルの処理ならHadoopの出番(構造化データなら素直にRDBMS)
 大量データを扱う場合でないと、パフォーマンスは望めない(無駄に構成が大きい)
 HDInsightについて
 Azure Machine Learningとの接続は Hiveを使用
 ストレージはBlobStorageを使うのがオススメ(処理していない時はクラスタ削除でお金を節約)
 SparkもPublicPreview中だが、AzureMLへの対応はアナウンスされていない
ありがとうございました
ネクストスケープ 上坂でした