アルゴリズムから学ぶazure mlモジュールの使いこなし方 hd-insight編-
TRANSCRIPT
アルゴリズムから学ぶ 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小田急第一生命ビル22F03-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
クライアント
ヘッドノード
MapReduceApplication
MapReduceApplication
MapReduceApplication
MapReduceApplication
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
MapReduce
Hive
Ambari
HBaseMahout Spark
Azure Machine LearningとHDInsight
Hiveを使用してHDInsightからデータを取得
Readerのプロパティに設定
HDInsightMachine
Learning
PropertyWebHCat
接続設定の例
HDInsight
クラスタ名:nsuesaka
BlobStorage
アカウント名:nsuesakafor1127コンテナ名:hadoop
Machine Learning
Reader Hive設定Hive database query:
HCatalog:https://nsuesaka.azurehdinsight.netHadoop user account name:<<アカウント>>Hadoop user aacount password:<<パスワード>>Location of output data:AzureAzure storage account name:nsuesakafor1127Azure 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への対応はアナウンスされていない
ありがとうございました
ネクストスケープ 上坂でした