月別: August 2017

LambdaからKappaまで:リアルタイムビッグデータアーキテクチャーのガイド

今日では、リアルタイムビッグデータアーキテクチャーを選べるようになっています。現在の選択肢はLambdaだけではありません。このブログシリーズでは、これら2つの選択肢について説明し、関連するユースケースで比較します。リアルタイムプロジェクトに適したアーキテクチャーを選択する方法について紹介します。 リアルタイムの要件 アーキテクチャーのトピックに入る前に、ビッグデータシナリオにおけるリアルタイムデータ処理システムの要件のいくつかについて検討しましょう。 これらの要件の中でも、データが動いているという点は最も明白なものです。言い換えれば、データは連続的で無制限です。重要なのは、このデータをいつ分析するかということです。現在のデータのスナップショットに対する回答を探している場合、または特定の低レイテンシー要件がある場合は、リアルタイムのシナリオを検討しているでしょう。 さらに、多くの場合はビジネス上の期限に対応しなければなりません。結局のところ、リアルタイム分析の期限を守らなくても影響がないのであれば、バッチ処理のプロセスでもかまいません。これらの影響は、完全な障害から単なるサービスの低下まで多様です。 ここで問題となっているのはビッグデータであることから、データのボリューム、速度そしておそらく種類の限界をも押し広げることが期待されています。 リアルタイムデータ処理は、スケーラビリティ、フォールトトレランス、予測可能性、ストリームの不完全性に対する回復力などの品質を必要とし、拡張可能でなければなりません。 新データ時代の新アーキテクチャー この必要性に取り組むために、新しいアーキテクチャーが生まれました。つまり、「必要は発明の母」です。 Nathan MarzによるLambdaアーキテクチャーは、今日のリアルタイムデータ処理で最も一般的なアーキテクチャーの1つです。低レイテンシーの読み取りと更新を直線的にスケーラブルかつフォールトトレラントな方法で処理するように設計されています。 システムに到着するデータストリームは、バッチレイヤーとスピードレイヤーの両方に二重に供給されます。 バッチレイヤーは、生データを到着時に保存し、消費のためにバッチビューを計算します。当然のことながら、バッチ処理は一定の時間間隔で発生し、長期間存続します。データの範囲は数時間から数年まで及びます。 スピードレイヤーは、リアルタイムビューを計算してバッチビューを補完するために使用されます。 どのようなクエリーでも、バッチビューとリアルタイムビューの両方からデータを取得することで、全体像を把握できます。クエリーは両方の長所を利用します。バッチビューはより複雑で高価なルールで処理され、データクオリティにより優れ、スキューがより少ないかもしれません。一方、リアルタイムビューは可能な限り新しいデータへのアクセスを提供します。時間が経過するにつれて、リアルタイムデータは期限切れになり、バッチビューのデータに置き換えられます。 このアーキテクチャーのもう1つのメリットは、コードまたは式が変更された場合に、同じ受信データを再生して新しいビューを生成できることです。 このアーキテクチャーの最大の欠点は、バッチレイヤーとスピードレイヤーの両方を生成するために、2つの異なる(そして、おそらく複雑な)システムを維持する必要があることです。幸いなことに、Spark Streaming(抽象化レイヤー)やTalend(Spark BatchおよびStreamingコードジェネレーター)を使うことで、操作上の負担は残りますが、問題ははるかに少なくなります。 次に、Kappaアーキテクチャーについて説明します。 Kappaアーキテクチャーは、Jay Krepsによって最初に記述されました。データをストリームとして処理することのみに焦点を当てています。ユースケースが当てはまる場合を除き、Lambdaアーキテクチャーの代替にはなりません。このアーキテクチャーでは、受信データはリアルタイムレイヤーを介してストリーミングされ、その結果はクエリー用のサービングレイヤーに配置されます。 その目的は、リアルタイムのデータ処理と連続的な再処理の両方に単一のストリーム処理エンジンで対応することです。つまり、再処理はストリームから発生することになります。そのためには、受信データストリームを丸ごと、または特定の位置から(非常に高速で)再生できることが必要です。コードに変更があると、2番目のストリームプロセスが最新のリアルタイムエンジンを介して以前のデータをすべて再生し、サービングレイヤーに格納されているデータを置き換えます。 このアーキテクチャーは、Lambdaアーキテクチャーのようにバッチレイヤーとスピードレイヤーそれぞれのコードベースを管理するのではなく、コードベースを1つだけにすることで単純化を図ります。さらに、クエリーは、バッチビューとスピードビューに対してではなく、単一のサービング場所を検索するだけで済みます。 このアーキテクチャーの複雑さは、重複するイベントの処理、イベントの相互参照、順序操作の維持など、通常はバッチ処理で簡単に実行できるデータ処理をストリームで実行する必要があることに、主として起因します。 単独ですべてに対応できない場合もある Lambdaアーキテクチャーには多くのリアルタイムユースケースが適合しますが、Kappaアーキテクチャーについて同じことは言えません。バッチ分析とストリーミング分析が同じ場合は、Kappaを使用するのが最善の解決策です。ただし、場合によっては、バッチウィンドウで完全なデータセットにアクセスすると特定の最適化が起こるため、Lambdaの方がパフォーマンスに優れ、実装が簡単になる可能性があります。 また、バッチアルゴリズムとストリーミングのアルゴリズムがまったく異なる結果を生成する、非常に複雑な状況(機械学習モデル、エキスパートシステム、またはリアルタイムで異なる方法で実行する必要がある本質的に非常に高価な操作を使用する)もあります。そのような場合には、Lambdaを使用する必要があります。 以上、最も人気のある2つのリアルタイムデータ処理アーキテクチャーについて取り上げました。このシリーズの次回の記事では、各アーキテクチャーについてさらに詳しく説明し、具体的なユースケースと、よく見られるテクノロジーについて検討します。 参考文献: 「How to beat the CAP theorem」(Nathan Marz) http://nathanmarz.com/blog/how-to-beat-the-cap-theorem.html 「Questioning the Lambda Architecture」(Jay Kreps) https://www.oreilly.com/ideas/questioning-the-lambda-architecture 「Big Data」(Nathan Marz、James Warren) https://www.manning.com/books/big-data


ガートナーのマジッククアドラントがなぜ開発者の秘密の武器となるのか

  2017 Gartner Magic Quadrant for Data Integration Toolsは、「最もよく守られている秘密」だったあなたの最新のTalendプロジェクトを、組織的に認知された天才の例という状態にするために、一役かうことができるでしょう。 私たちは皆、「誰にも言えない小さな秘密」を持っています。高校時代には両親が旅行中の家でパーティーをしましたよね。大学でジョン・トラボルトの子供だと思って付き合っていた友人は、本当は単に同じ姓だっただけかもしれません。住んでいる場所とは別の校区に子供を入れたくて、偽の住所で申し込みをしたことがある人はいませんか? 私たちはみな「ルールを破っている」可能性のある小さなことをやっていますが、それをする理由はもっと大きいものです。 私が2、3のシャドーITプロジェクトを自分で持っていなかったと言えば、嘘になるでしょう(そしてTalendの ITの誰かがこれを読んでいたら、すみません…という感じです)。私たちは、物事を修正したり、新しい問題を解決したいという好奇心を持っていて、技術的ではない部分でイノベーションが邪魔されるのが好きではありません。 特に、時間的な制限がある時などには特にそうです。単に計算に合わないのです。Talend Open StudioをITチームの陰で使用してデータ統合ジョブを構築するのは、多くの場合、オープンソースツールが企業のIT部門、つまり言うなれば「却下庁」によってぶち壊されることが多いためだと思います。 ダウンロード>> Talend Open Studio for Data Integration あなたが進めている最新のオープンソースベースのデータ統合プロジェクトの価値をITチームが理解し、そしてそのまま継続させてくれるようにするために、最新の2017 Gartner Magic Quadrant for Data Integration Toolsを彼らと共有することをお勧めします。レポートは無料でこちらからダウンロード<link to the download form>できます。我々は、本レポートは「ホーリーハンドグレネード」であると信じており、もしあなたもそう信じるなら、このレポートは開発者がTalendを使用するためのビジネスケースを構築することに役立つでしょう。本レポートは、「ビジョンの完全性」と「実行能力」の両方で、Talendを「リーダー」クアドラントに位置づけています。また、Talendは「リーダー」クアドラントに残っているベンダーの中で唯一オープンソースを提供するベンダーであることも重要なポイントです。 リーダークアドラントでの位置付けの向上は、当社のソリューションの深みと幅、現代のクラウドおよびビッグデータ環境向けに構築されたオープンソースベースの統合プラットフォームを提供する能力を示しています。 あなたのような開発者にとって、それはどういう意味をもつのでしょうか?あなたが実行したシャドーITプロジェクトにスポットライトを当て、十分実証することができるのです。自信を持って ITマネージャーを呼び出し、「オープンソースソフトウェアを使って何をしているのか見てください。われわれはデータから多くの価値を得て、市場投入までの時間を短縮し、コストを下げている(というか無料)、しかもそれをガートナーのマジック・クアドラントのリーダーでやっている」 ということができるのです(クイックヒント:デスクの上にレポートを置いておくと、彼らがレポートを検索する手間が省けます)。 必ずしもITマネージャーに伝える必要はありませんが、同様に重要なことがあります。Talend Open Studioのようなオープンソース製品を使用することは、あなたのキャリアにとって素晴らしいことです。 数分の時間を使って、Talendのさまざまな製品とビジネスの強みを具体的に列挙したレポートを詳しく見てみてください。Talendを使っていることがなぜ誇らしいのか、その理由がもっと見つかるでしょう。 すでにTalend Open Studioを使っていても、あるいは(闇に紛れて)その機能を研究し始めたところであっても、Talendを使っていることをオープンにする必要があります。 Caddyshackの一場面を覚えていますか?今はあなたが水しぶきをあげる時です。先に進んで思い切ってあなたのオープンソースプロジェクトを披露してください…ただ、ベビールースは家においてきてください。 (訳注:Caddyshackとは1980年制作のアメリカ合衆国のコメディ映画) # # # ** Gartner does not endorse […]


機械学習について知っておくべきこと

  この数か月間、人工知能、特に機械学習について、多くの意思決定者と話をする機会がありました。 彼らの多くは、機械学習(ML)の戦略、そしてMLをすでに実装している領域について、投資家から質問を受けたことがあると話していました。このように技術的なトピックが、突如として企業役員の間で取り上げられるようになったのはなぜでしょうか。 コンピューターは、人間に代わってタスクをこなすことを期待されています。 コンピューターに指示をする従来の方法は、手順を「プログラミング」することです。つまり、問題解決のための適切なアルゴリズムを人間がコンピューターに教えるのです。アルゴリズムは、料理のレシピのように手順を詳細に説明するものです。 アルゴリズムによって、多くのタスクを効果的に記述できます。 たとえば、小学校では足し算のアルゴリズムを学習します。 コンピューターは、アルゴリズムを迅速かつ完璧に実行するうえで人間よりもはるかに優れています。   ただし、この手順には限界があります。たとえば、猫の写真を識別するにはどうしたらよいでしょうか。 これは簡単そうに思えるタスクですが、アルゴリズムとして構造化することは困難です。 これがどういうことが、考えてみましょう。 たとえば、「足が4本ある」や「目が2つある」といった単純な命令すらも、完璧ではありません。これらの部分が隠れていたり、猫の一部しか写真に移っていなかったりする場合には機能しないためです。さらに、足や目を識別するというタスクも、猫を特定するのと同様に困難です。 このようなタスクで強みを発揮するのが機械学習です。問題を解決するためのアルゴリズムを開発する代わりに、コンピューターは例を使用して自らアルゴリズムを学習します。コンピューターの訓練には、サンプルを使用します。猫を識別する場合は、適切にラベル付けされた多数の猫の写真を使ってシステムを訓練します(教師あり学習)。 これによってアルゴリズムが進化・成熟し、最終的には、初めて見る写真でも猫を識別できるようになります。 実際に、このような状況では、コンピューターは通常、従来のプログラムを学習するよりも、モデル内のパラメータ(たとえばネットワーク内のエッジの重み)を学習します。この原理は、人間の脳で神経細胞(ニューロン)間の接続が順応する学習プロセス(少なくとも人間が理解する限りにおいて)と比較することができます。つまり、コンピューターのプログラムとはちがって、人間にはエッジの重みを持つネットワークを解釈することが事実上不可能です。   このように、プログラムよりもモデル内のパラメーターを優先的に学習するというコンピューターの特性を活したディープラーニングと呼ばれる人工ニューラルネットワークの特殊な学習手法が特に成果を上げています。ディープラーニングは、機械学習の一分野です。機械学習は、コンピューターサイエンスの主要研究分野である人工知能の一分野です。. 2012年には、Google社の研究チームが、16,000台のコンピューターを使ったネットワークに対して1,000万のYouTube動画のイメージから猫(及び他のオブジェクトカテゴリ)を識別する訓練に成功しています。 ここで使用された手順はディープラーニングでした。 練習関連の多くの問題は、「足し算」というカテゴリよりも「猫の識別」というカテゴリに分類されるため、人間によって書かれたアルゴリズムでは適切に解決できません。しばしば、データに含まれるパターンの識別が問題になります。たとえば、イメージ内のオブジェクト、言語のテキスト、トランザクションデータの不正行為を認識するといったことです。 簡単な例として、予測的保守について考えてみましょう。多数のセンサーからデータストリームが送られ、たまにマシンが故障することがある場合、故障を引き起こすデータストリームのパターンを学習することが課題となります。 この学習により、正常な動作が行われているときにパターンを特定できるようになるので、潜在的な故障を予測して防止できます。 機械学習の原理は新しいものではありませんが、現在その人気が急速に高まっています。これには主に3つの理由があります。第1に、適用領域と訓練に必要な大量のデータ(「ビッグデータ」)を利用できるようになったことです。第2に、特にクラウドにおいて、高いコンピューティング能力を獲得したことです。 第3に、さまざまなオープンソースプロジェクトによって、ほとんど誰もがアルゴリズムを利用できるようになったことです。 機械学習は、従来のプログラミングを置き換えるものではなく、補完するものです。これまで習得が困難または不可能だった問題の主要カテゴリに、新たに対処できるツールとなります。これによって新しいチャンスがもたらされていますが、既存のシステムも機械学習機能を組み込むようになっています。 パターンに従う繰り返し処理は、その典型的な例です。たとえば、複雑な一連のメニューを介して100の機能を使えるコンピュータープログラムがあり、ユーザーが日常的に使用している機能が数種類だけの場合、コンピューターはユーザーの通常の手順を観察して学習することで、ユーザーの次の操作を予測し、効率を上げることができます。または、データの割り当てと変換(たとえば、データウェアハウスへのデータ投入のためのETLジョブ)では、コンピューターが繰り返しのデータ及びオブジェクトを「学習」することで、多くのステップを自動化して高速化することができます。 その他にも、学生個人向けの学習教材の適切なカスタマイズ(特に「MOOC」と呼ばれる誰でも無料で受講できる大規模なオンラインでの講義)、病気の早期診断、オンラインマーケティングのための適切なターゲットグループ、顧客の解約、データ品質問題の自動識別、出会い系サービスのユーザープロファイルのマッチング等、ほぼ全ての領域で例を挙げることができます。. 高度なツールが使用できるSpark(Hadoopとの組み合わせ)は、機械学習分野におけるビッグデータの主要フレームワークとして確固たる地位を築いています。 このアプローチは、Talendでも追求していますが、(訓練と実稼働での展開の両方について)モデリングジョブによりさらに高いレベルで抽象化されています。 モデリングは複雑さを軽減し、それと同時に基盤技術から一定程度の独立性を実現します。急速に変化を続ける基盤技術には、限られた専門家しかアクセスできないためです。 機械学習の分野では、アルゴリズムの細部を実際に理解する必要があるのは、ごく少数のスペシャリストだけです。一方、MLとは基本的に例からパターンを学習し新しいデータセットでこれらのパターンを使用できることである、というMLの概念を理解することは誰にとっても有益です。最終的には、マシンが処理することで、特に意思決定プロセスによって、自動化できる問題のカテゴリが拡大します。 つまり、コンピューターの学習とは、訓練データから蓄積した知識に基づいて新しいデータに関する決定を下すことです。 また、ビジネスやさまざまな活動で意思決定を自動化することで、機械学習を有用に活用することができます。 また、ビジネスやさまざまな活動で意思決定を自動化することで、機械学習を有用に活用することができます。 機械学習について、ここでは次の点を強調して締めくくりたいと思います。コンピューターは、明確な命令(足し算等)を処理するだけでなく、例から学習(サンプル画像を使った訓練による猫の識別等)する能力を持つようになっています。 どちらの手順が適切かは課題によって異なりますが、 両方の手順を組み合わせる方法は無限にあり、これによってさらなる自動化のチャンスがもたらされます。 著者紹介:Gero Presser博士 Gero Presser博士は、ドイツのドルトムントに拠点を置くQuinScape社の共同設立者であり、マネージングパートナーを務めています。 QuinScape社は、ドイツ市場におけるTalend、Jaspersoft/Spotfire、Kony、及びIntrexxプラットフォームの主要システムインテグレーターであり、100名のスタッフがSME、大規模企業、公共機関を含む厚い顧客層にサービスを提供しています。Gero Presser博士は、人工知能分野の意思決定理論で博士号を取得しました。QuinScape社では、分析と統合に焦点を当ててビジネスインテリジェンス分野の事業開発を担っています。