機械学習のためのデータ処理基盤入門セミナー株式会社INTHEFOREST代表取締役富田和孝Mail: sales@intheforest.co.jp / Tel:03-5848-2424 〒176-0023東京都練馬区中村北1-13-13 OHD練馬ビル501 Part1並列分散処理入門▷ 2
▷イントロダクション
データサイズ:ペタバイトの時代△ ▷並列処理とは？ ▷並列処理と分散処理(参考) Pythonライブラリを利用することの問題点△ ▷並列分散処理入門▷ Sparkとは？ ▷ Sparkを用いた分散処理(hadoop+Spark) ▷分散データベース(Cassandra) ▷ Q&A
既存のツールでは扱いきれないデータ但しパラダイムシフトも起きている0既存ツールの進化を超えるデータ増量
データレイク多数のソースからのデータを元のままの多様な形式で保持する中央ストレージリポジトリ
従来のデータ解析最近のデータ解析並行処理とはシリアルとパラレルプールに水を入れる場合に太いー本のホースと多数のホースとどちらが早いか
単独ノードと複数ノードで処理を行う場合に考えることシステムの肌感覚を掴めみんなが知っているべき数値by Jeff Dean L1キャッシュ参照。 0.5 ns分岐予測ミス5 ns L2キヤツシユ参照7 ns 25 ns Mutexのlock/unlockメモリ参照100 ns 3,000 ns 1KBをZIP圧縮1Gbpsで2KB送る20,00 nsメモリから1MB連続で読む250,000 ns同一のデータセンタ内のマシンと通信1往復500,000 ns HDDシーク10,000,000 ns HDDから1MB読み出し20,000,000 nsカリフォルニアとオランダ間で通信1往復150,000,000 ns (9) NTT引用:分散システムについて語らせてくれhttps://www.slideshare.net/kumagi/ss-78765920 NTT Tech Conference #2
データレイクと分散処理増え続ける大量データとの戦い
Pythonは並行処理に向かない一般的に用いられるPython (Cython)には並行実行に対する制限があるこの制限のため、NumpyもPandasも並行処理時には性能を発揮できない。 ※制限回避のための方法はいくつかあるがそれなりにハードルは高い→どんな高度なハードウェアを使っても単体のサーバーでPythonを使っている限り高速化は難しい並列分散処理入門Sparkとは
MapReduceに限らず、DAG(有向非循環グラフ)型で柔軟に並列分散処理を実行できるエンジン大量のデータ並列分散目的の処理結果を得るデータ管理には向かないが、データ処理に向いている
Hadoopが普及にするにつれて、次のような場合のMapReduceフレームワークの処理効率が課題になってきた①ジョブが多段に構成される場合②複数のジョブで何度も同じデータを利用する場合
①ジョブが多段に構成される場合複雑な処理を少ないジョブ数で実現できる②複数のジョブで何度も同じデータを利用する場合
HadoopとはHadoopとはHadoopとは、大規模データの蓄積・分析を分散処理技術によって実現するオープンソースのミドルウェアです。 ▷複数のIAサーバを束ねてーつの大きな処理システムとして利用▷特に大量データの格納･処理に最適化HDDは今でも実質は80MB/sec程度が限界この問題を解決するために並列分散処理を活用Hadoopとはデータを複数のサーバに分割して格納利用時には、複数のサーバから、それぞれのデータを同時に読み込む▷ HDDの台数分だけのスループットを確保1台だと80MB/sec程度でも1000台だと80GB/secのスループット5TBのデータを読み込みも62.5秒で実現
Hadoopとは▷並列分散処理フレームワークMapReduce FrameworkアルゴリズムMapReduceを実現する▷ Map処理、Reduce処理のみを指定すればあとはフレームワークが並列分散処理を実現▷ノード数を増やせば、基本スケール▷サーバが故障しても、ジョブは実行される
Hadoopとは▷ YARNの導入並列分散処理フレームワークからリソース管理のレイヤを切り出された
Cassandraとは
▷ Apache CassandraとはApache Cassandraとは、今までビッグデータ解析ビジネスで幅広く活用されてきたHadoop (大規模データの蓄積・分析を分散処理技術によって実現するオープンソースのミドルウェア)を用いたDBに替わり、北米では飛躍的にその地位を占め始めているスケーラブルなオープンソースの非リレーショナルデータベースで、継続的可用性、リニアなスケールパフォーマンス、シンプルな操作性、複数のデータセンターやクラウド利用領域にわたる容易なデータ分散を実現できるDBです。 Cassandraとは▷マスターという概念がなく、すべてのノードが完全に同じ機能を持つマシンが故障しても特定のマシンが特定の機能を持っているわけではないので、他のデータのあるマシンが同じ作業を、全く問題なく処理することが可能.レプリケーション(データのコピー)は何台持たせるかを決めることができるト単一障害点がないCassandraとは▲ ▲無償かつオープンソース非常にパフォーマンスが高く、適切なユースケースでは、ほぼ線形で水平にスケーリング
▷ Apache Cassandraのユーザー事例としては？日本国内、海外含めると実に多岐多様な業種/分野で使用されています。 l Symantec Yahoo!
NETFLIX ıntuit ebay hulu Cassandra向きな事例› 『モノ』のインターネット用アプリケーション:数多くの異なる場所に分散設置された端末やセンサー、その他類似の機器から受信する膨大な量の高速データ処理に最適として稼働中。 ▷ユーザーアクティビティのトラッキングとモニタリング:数多くのメディア並びにエンターテイメント企業で、ユーザーが映画や音楽、ウェブサイト、オンラインアプリケーションを利用する際のアクティビティを、 Apache Cassandraを使用したトラッキングしモニターとして稼働しています。

▷メッセージング:
Apache Cassandraは非常に数多くの携帯電話ならびにメッセージングプロバイダ用アプリケーションのデータベースとして活用されています。 ▷ソーシャルメディアの解析ならびにレコメンドエンジン:多くのオンライン会社、ウェブサイト、ソーシャルメディアプロバイダが、Apache Cassandraを使用して、データの収集や分析、また顧客に対し分析結果とレコメンドの提供を行なっています。代表的な例として『Facebook』などがあります。 Cassandra向きな事例》時系列ベースアプリケーション: Apache Cassandraは高速書き込み能力、ワイド・ロー設計、リードオンリー列を備えているため、時系列ベースのアプリケーションに最適なDBとして活用されています。 Part2リソース管理・並列分散処理OSS紹介Agenda >なぜ新しいアーキテクチャが必要か？ >テクノロジーレイヤと各OSSの位置付け▷各OSSの使い分けのポイント、特徴や強み・弱み
IoT向けデータベースとしてのCassandraの特徴
書込みに強い。
.
•解析ツールとの親和性
マルチベンダー
.
書込み先が分散化されているので同時多数書込みに強い（秒間100万書込み等)結果整合性による柔軟な書込み精度を選択可能. .多彩なドライバ（ODBC、JDBC、PHP、Ruby、Perl等） . Apache Hadoop、Apache Spark、Presto等の多彩な解析ツールを利用可能. Windows、Linux、各種クラウド、JVMが稼働すれば使用する事が出来ます。 Windowsでの採用実績もあります。 .
システム構築の変遷EnterpriseからOSSへ
OSSを使用しても安定稼働させる為には精通したEngineerの確保が必須。その為、総額のコストはEnterprise Productionを用いてもさほど費用が変わらない場合が多い
システム適用への最適化と費用対効果の精査.システム化の目的の明確化.機能要件の精査•システムの費用対効果の明確化適切なサイジング•
UI/UX UI/UX Distributed computing Framewark Database Database
Apache Zeppelin / Jupyter Notebook Apache Mesos /   Apache Hadoop(Yarn) Presto/drill /impala Spark/Hadoop MR MongoDB/Redis/Cassandra Oracle/MySQL/PostgreSQL Kubernetes/Docker Swarm Docker OpenStack / DC/OS Xen/KVM/VMWare/VirtualBox Debian (Linux) /CentOS(Linux)/FreeBSD Hard Ware UI/UX Apache   Zeppelin QUERY Interface/グラフ化Engine UI/UX jupyter Jupyter Notebook  Produced by The Jupyter Project
Apache Mesos分散システムカーネルAgent nodes
Apache Hadoop Yarnジョブスケジューリングとクラスタ資源管理のためのフレームワーク
Interactive Query Execute Engine presto producted by Facebookインタラクティブな分析クエリを実行するためのオープンソースの分散型SQLクエリエンジンHadoop、NoSQL、クラウドストレージ向けのスキーマフリーSQLクエリエンジンApache  Hadoop用のオープンソースのネイティブ分析データベースDatabase Query Execute Engine
Apache Spark構造化データを扱うためのApache SparkのモジュールApache Hadoop Hive Apache Hadoop用のオープンソースのQuery実行エンジンDatabase Library for Distributed System Apache Spark分散環境においてのデータ構造化ライブラリ＋ツールApache Hadoop分散環境においての各種ツール群Database NoSQL Apache Cassandra MongoDB Prodacted by MongoDB Redis Prodacted by RedisLabs l mongoDB P2P型分散データベース非構造データをそのまま扱えるドキュメントデータベース永続化機能を備えたインメモリデータベースDatabase RDBMS MySQL Prodacted by Oracleオープンソースで公開されているRDBMS PostgreSQL Prodacted by The PostgreSQL Global Development Group 30年以上続くOSSのRDBMS
Kubernetes Prodacted by Cloud Native Computing Foundation Docker Swarm Prodacted by Docker Inc. Googleが開発したDocker向けコンテナオーケストレーションツールDocker社がKubernetes対抗として開発したDocker向けコンテナオーケストレーションツールContainer Prodacted by Docker Inc. Docker社が開発したLXC用統合ツールchroot、cgroup、Namespaceを基本とする環境作成ツール
Open Stack Prodacted by OpenStack Foundation.米Rackspace社が開発した仮想環境用統合管理ツール。PrivateCloudを作成することが可能
DC/OS Prodacted by Mesosphere米Mesosphere社が開発したApache Mesosをベースとした統合リソース管理システムDatacentar as a Serviceを標榜する。 Virtualization Prodacted by citrix OSSとして開発された最初の仮想環境Linuxのカーネルに組み込まれた仮想環境データ基盤・分散システム構築･運用･サポートなどお気軽にお問合せください株式会社INTHEFOREST 担当冨田・高木sales@intheforest.co.jp