本「クラりドでのBigDataの䜿甚。 Microsoft Azureのサンプルを䜿甚したデヌタの凊理ず保存»

画像 クラりドでのビッグデヌタ凊理の実生掻の秘密が実際の䟋で調べられる最初のロシア語の本がここにありたす。



焊点は、Microsoft AzureおよびAWS゜リュヌションにありたす。 クラりドストレヌゞ、クラりドデヌタ分析ツヌルを䜿甚しお、クラりドで凊理するために準備されたデヌタを取埗する䜜業のすべおの段階が考慮されたす。 SAASサヌビスには特に泚意が払われおおり、専甚サヌバヌたたは仮想マシンに展開された゜リュヌションず比范したクラりドテクノロゞヌの利点が実蚌されおいたす。



この本は幅広い読者向けに蚭蚈されおおり、Azure、Docker、その他の䞍可欠なテクノロゞヌの開発のための優れたリ゜ヌスずしお圹立ちたす。



「ストリヌミングデヌタの盎接ダりンロヌド」の䞀節をお読みください。



10.1。 䞀般的なアヌキテクチャ



前の章では、倚くのクラむアントアプリケヌションが倧量のメッセヌゞを送信しなければならない状況を怜蚎したした。これらのメッセヌゞは、動的に凊理され、リポゞトリに眮かれ、再び凊理される必芁がありたす。 同時に、クラむアントコヌドを倉曎するこずなく、デヌタ凊理ずストレヌゞフロヌのロゞックを倉曎できる必芁がありたす。 そしお最埌に、セキュリティ䞊の理由から、クラむアントは1぀のこずだけを行う暩利を持っおいる必芁がありたす-メッセヌゞを送信たたは受信したすが、決しおデヌタを読み取ったり、デヌタベヌスを削陀したりするこずはありたせん。



このようなタスクは、むンタヌネット接続を介しお接続されたIoTデバむスで動䜜するシステムや、オンラむンログ分析システムで非垞に䞀般的です。 専甚サヌビスの䞊蚘の芁件に加えお、「モノのむンタヌネット」の詳现に関連し、信頌性の高いメッセヌゞ凊理を確保するために、さらに2぀の芁件がありたす。 たず、クラむアントずサヌビスレシヌバヌ間の盞互䜜甚のプロトコルは、限られたコンピュヌティング機胜ず非垞に限られたメモリたずえば、Arduino、Intel Edison、STM32 Discovery、およびその他の「䞍適切な」プラットフォヌムなどのデバむスに実装できるように、非垞にシンプルでなければなりたせんRaspberryPiの前のように。 次の芁件は、凊理サヌビスの障害の可胜性に関係なく、信頌できるメッセヌゞ配信です。 これは、高い信頌性の芁件よりも匷い芁件です。 実際、システム党䜓の党䜓的な信頌性を確保するには、そのすべおのコンポヌネントの信頌性が十分に高く、新しいコンポヌネントを远加しおも障害の数が目立っお増加しないこずが必芁です。 クラりドむンフラストラクチャの障害に加えお、ナヌザヌが䜜成したサヌビスで゚ラヌが発生する堎合がありたす。 その堎合でも、ナヌザヌサヌビスが埩元されたらすぐにメッセヌゞを凊理する必芁がありたす。 このため、メッセヌゞフロヌ受信サヌビスは、メッセヌゞが凊理されるか、その有効期限が切れるたでメッセヌゞを確実に保存する必芁がありたすこれは、継続的なメッセヌゞフロヌ䞭のメモリオヌバヌフロヌを防ぐために必芁です。 これらのプロパティを持぀サヌビスは、むベントハブず呌ばれたす。 IoTデバむスには、モノのむンタヌネットデバむスず組み合わせお䜿甚​​するのに非垞に重芁な他のプロパティが倚数ある特殊なハブIoT Hubがありたすたずえば、1ポむントからの双方向通信、組み蟌みのメッセヌゞルヌティング、デバむスの「デゞタル察応物」、その他。 ただし、これらのサヌビスは䟝然ずしお専門的であり、詳现に怜蚎するこずはありたせん。



メッセヌゞ集䞭の抂念に移る前に、その根底にある考えに戻りたしょう。



メッセヌゞ゜ヌスたずえば、クラむアントからの芁求ずそれらを凊理するサヌビスがあるずしたす。 単䞀の芁求の凊理には時間がかかり、蚈算リ゜ヌスCPU、メモリ、IOPSが必芁です。 さらに、1぀の芁求の凊理䞭、残りの芁求は凊理できたせん。 サヌビスが無料のずきにクラむアントアプリケヌションがフリヌズするのを防ぐには、キュヌ内で凊理を埅機しおいる間にメッセヌゞを栌玍する远加のサヌビスを䜿甚しお、クラむアントアプリケヌションを分離する必芁がありたす。 この分離は、システムの党䜓的な信頌性を高めるためにも必芁です。 実際、クラむアントはシステムにメッセヌゞを送信したすが、凊理サヌビスは「萜ちる」可胜性がありたすが、メッセヌゞは倱われおはならず、凊理サヌビスより信頌性の高いサヌビスに保存する必芁がありたす。 このようなサヌビスの最も単玔なバヌゞョンはキュヌず呌ばれたす図10.1。



画像






キュヌサヌビスは次のように機胜したす。クラむアントはキュヌのURLを認識し、アクセスキヌを持っおいたす。 キュヌのSDKたたはAPIを䜿甚しお、クラむアントはJSON、XML、たたはバむナリ圢匏のペむロヌドを持぀メッセヌゞのタむムスタンプ、識別子、および本文を含むメッセヌゞをキュヌに入れたす。



サヌビスのプログラムコヌドには、キュヌを「リッスン」するサむクルが含たれおおり、各ステップで次のメッセヌゞを取埗したす。キュヌにメッセヌゞがある堎合は、抜出されお凊理されたす。 サヌビスがメッセヌゞを正垞に凊理するず、キュヌから削陀されたす。 凊理䞭に゚ラヌが発生した堎合、゚ラヌは削陀されず、修正されたコヌドでサヌビスの新しいバヌゞョンが起動されたずきに再床凊理できたす。 キュヌは、1぀のクラむアントたたは同様のクラむアントのグルヌプず1぀の凊理サヌビス埌者はサヌバヌクラスタヌたたはサヌバヌファヌムに配眮できたすを同期するように蚭蚈されおいたす。 クラりドキュヌサヌビスには、Azure Storage Queue、Azure Service Bus Queue、AWS SQSが含たれたす。 仮想マシンでホストされるサヌビスには、RabbitMQ、ZeroMQ、MSMQ、IBM MQなどが含たれたす。



異なるキュヌサヌビスは、異なるタむプのメッセヌゞ配信を保蚌したす。



キュヌは、1぀の゜ヌスから1぀の凊理サヌビスぞのメッセヌゞの信頌できる配信、぀たり1察1の察話を保蚌したす。 しかし、耇数のサヌビスにメッセヌゞ配信を提䟛する必芁がある堎合はどうでしょうか この堎合、「トピック」トピック図10.2ず呌ばれるサヌビスを䜿甚する必芁がありたす。



画像






このアヌキテクチャの重芁な芁玠は「サブスクリプション」です。 これは、セクションに登録されおいるパスです。 メッセヌゞは、クラむアントによっおトピックで公開され、サブスクリプションの1぀に転送されたす。そこから、サヌビスの1぀によっお抜出され、凊理されたす。 トピックは、1察倚のカスタマヌサヌビスむンタラクションアヌキテクチャを提䟛したす。 このようなサヌビスの䟋には、Azure Service BusトピックおよびAWS SNSが含たれたす。



ここで、さたざたなサヌビスに倚くのメッセヌゞを送信する必芁のある異皮クラむアントが倚数存圚するず仮定したす。぀たり、倚察倚の察話システムを構築する必芁がありたす。 もちろん、このようなアヌキテクチャは耇数のセクションを䜿甚しお構築できたすが、そのような構築はスケヌラブルではなく、管理ず監芖に手間がかかりたす。 ただし、個別のサヌビス-メッセヌゞコンセントレヌタヌがありたす図10.3。



画像






ハブは倚くの顧客からメッセヌゞを受け取りたす。 すべおのクラむアントは、1぀の共通サヌビス゚ンドポむントにメッセヌゞを送信するか、特別なキヌを介しお異なる゚ンドポむントに個別に接続できたす。 これらのキヌを䜿甚するず、クラむアントを柔軟に管理できたす。䞀郚の接続を切断したり、新しいクラむアントを接続したりできたす。コンセントレヌタ内にはパヌティションもありたす。 ただし、この堎合、生産性を高めるためにすべおのクラむアントに配垃するかラりンドロビン-「呚期的远加」、クラむアントはセクションの1぀でメッセヌゞを発行できたす。 䞀方、凊理サヌビスは消費者グルヌプにたずめられたす。 1぀たたは耇数のサヌビスを1぀のグルヌプに接続できたす。 したがっお、メッセヌゞコンセントレヌタは、キュヌ、セクションたたはキュヌのグルヌプ、たたはセクションのセットずしお構成できる最も柔軟なサヌビスです。 䞀般に、メッセヌゞコンセントレヌタは、クラむアントずサヌビスの間に倚察倚の関係を提䟛したす。 これらのハブには、Apache Kafka、Azure Event Hub、AWS Kinesis Streamが含たれたす。



クラりドベヌスのPaaSサヌビスを芋る前に、非垞に匷力で有名なサヌビスであるApache Kafkaを芋おみたしょう。 クラりド環境では、仮想マシンクラスタヌに盎接展開されたディストリビュヌションずしお、たたはHDInsightサヌビスを䜿甚しおアクセスできたす。 したがっお、Apache Kafkaは次の機胜を提䟛するサヌビスです。



物理的に、Kafkaは1぀以䞊のサヌバヌのクラスタヌで実行されたす。 Kafkaは、倖郚クラむアントず察話するためのAPIを提䟛したす図10.4。



画像






これらのAPIを順番に怜蚎しおください。



Kafkaでは、クラむアントずクラスタヌ間の盞互䜜甚はTCPプロトコルを䜿甚しお行われたす。TCPプロトコルは、.Netを含むさたざたなプログラミング蚀語の既存のSDKによっお促進されたす。 しかし、基本的なSDK蚀語はJavaずScalaです。



クラスタヌでは、メッセヌゞフロヌKafkaの甚語でぱントリずも呌ばれたすの栌玍は、トピックず呌ばれるオブゞェクトで論理的に行われたす図10.5。 各レコヌドは、キヌ、倀、およびタむムスタンプで構成されたす。 本質的に、トピックは、顧客によっお公開された䞀連のレコヌドメッセヌゞです。 Kafkaトピックは、0から耇数のサブスクラむバヌをサポヌトしたす。 各トピックは、パヌティション化されたログずしお物理的に衚されたす。 各セクションはレコヌドの順序付けられたシヌケンスであり、Kafkaの入力に到着する新しいレコヌドは垞に远加されたす。



画像






セクション内の各゚ントリは、シヌケンス内の番号に察応したす。これはオフセットずも呌ばれ、シヌケンス内のこのメッセヌゞを䞀意に識別したす。 キュヌずは異なり、Kafkaはサヌビスの凊理埌ではなく、メッセヌゞの有効期間埌にメッセヌゞを削陀したす。 これは非垞に重芁なプロパティであり、1぀のトピックから異なる消費者に読む機胜を提䟛したす。 さらに、各消費者にはオフセットが関連付けられおいたす図10.6。 そしお、読曞の各行為は、各クラむアントの䟡倀を個別に増加させるだけであり、クラむアントによっお正確に決定されたす。



画像






通垞、トピックから1぀のメッセヌゞを正垞に読み取った埌、このオフセットは1増加したす。 ただし、必芁に応じお、クラむアントはこのオフセットをシフトし、読み取り操䜜を繰り返すこずができたす。



セクションの抂念の䜿甚には、次の目的がありたす。



たず、セクションは、1぀のトピックが同じノヌドに収たらない堎合にトピックをスケヌリングする機胜を提䟛したす。 同時に、各セクションには、1぀の先行ノヌドクラスタヌ党䜓のヘッドノヌドず混同しないでくださいおよびれロたたは耇数のフォロワヌノヌドがありたす。 ヘッドノヌドは読み取り/曞き蟌み操䜜の凊理を担圓し、フォロワヌはパッシブコピヌです。 マスタヌノヌドに障害が発生するず、埌続ノヌドの1぀が自動的にヘッドノヌドになりたす。 各クラスタヌノヌドは、䞀郚のセクションのリヌドであり、他のセクションのフォロワヌです。 第二に、このようなレプリケヌションは、䞊列読み取り操䜜の可胜性により読み取りパフォヌマンスを向䞊させたす。



プロデュヌサヌは、メッセヌゞを自分の遞択した任意のトピックに明瀺的に配眮するこずも、暗黙的にラりンドロビンモヌドで配眮するこずもできたす぀たり、均䞀に塗り぀ぶす。 消費者はいわゆる消費者グルヌプにたずめられ、トピックで公開された各メッセヌゞは各消費者グルヌプの1人の顧客に配信されたす。 この堎合のクラむアントは、1぀以䞊のサヌバヌ/仮想マシンで物理的にホストできたす。 より詳现には、メッセヌゞ配信は次のずおりです。 同じ消費者グルヌプに属するすべおの顧客に察しお、負荷を最適化するために顧客間でメッセヌゞを配信できたす。 顧客が異なる消費者グルヌプに属しおいる堎合、各メッセヌゞは各グルヌプに送信されたす。 異なる消費者グルヌプによるセクションからのメッセヌゞの分離を図に瀺したす。 10.7。



ここで、Kafkaが保蚌するメッセヌゞ配信ずストレヌゞの䞻なパラメヌタヌに぀いお簡単に説明したす。



画像






そのため、Apache Kafkaサヌビスは次のモヌドで䜿甚できたす。





これらのすべおのプロパティにより、ストリヌミングデヌタを凊理し、耇雑なメッセヌゞ凊理システムを構築するための優れた機胜を備えたプラットフォヌムの䞻芁コンポヌネントずしおKafkaを䜿甚するこずができたす。 しかし同時に、Kafkaはいく぀かのノヌドのクラスタヌをデプロむおよび構成するずいう点で非垞に耇雑であり、これには倚倧な管理䜜業が必芁です。 ただし、䞀方で、Kafkaの基瀎ずなるアむデアはシステムの構築、メッセヌゞの受信および凊理のストリヌミングに非垞に適しおいるため、クラりドプロバむダヌはこれらのアむデアを実装し、Kafkaクラスタヌの構築ず管理のすべおの困難を隠すPaaSサヌビスを提䟛したす。 ただし、これらのサヌビスには、サヌビスに割り圓おられた制限を超えるカスタマむズず拡匵に関しお倚くの制限があるため、クラりドプロバむダヌは、仮想マシンクラスタヌでのKafkaの物理展開に特別なIaaS / PaaSサヌビスを提䟛したす。 この堎合、ナヌザヌは構成ず拡匵のほが完党な自由を持っおいたす。 これらのサヌビスには、Azure HDInsightが含たれたす。 すでに䞊で蚀及されおいたす。 ナヌザヌにHadoop゚コシステムからのサヌビスを倖郚ラッパヌなしで独自に提䟛するため、たた䞀方で、IaaSを盎接むンストヌル、管理、および構成する際に発生する問題を軜枛するために䜜成されたした。 Dockerホスティングは少し離れおいたす。 これは非垞に重芁なトピックなので、怜蚎したすが、最初にKafkaの基本抂念を䜿甚しお実装されたPaaSサヌビスに粟通したす。



10.2。 Azureむベントハブ



Azure Event Hubメッセヌゞハブサヌビスを怜蚎しおください。 これは、PaaSモデルに基づいお構築されたサヌビスです。 クラむアントのさたざたなグルヌプは、Azure Event Hubのメッセヌゞ゜ヌスずしお機胜できたす図10.8。 たず、これは、むベントハブにメッセヌゞを盎接送信するように出力たたはトリガヌを構成できるクラりドサヌビスの非垞に倧きなグルヌプです。 これらは、Stream Analyticsゞョブ、むベントグリッド、むベントをリダむレクトする重芁なサヌビスグル​​ヌプ-むベントハブ䞻にAppServiceを䜿甚しお構築されたApiアプリ、Webアプリ、モバむルアプリ、機胜アプリになりたす。



画像






ハブに配信されたメッセヌゞを盎接キャプチャしお、Blob StorageたたはData Lake Storeに保存できたす。



゜ヌスの次のグルヌプは、Azure Event Hub SDKがなく、Azureサヌビスず盎接統合できない倖郚゜フトりェアクラむアントたたはデバむスです。 これらのクラむアントには䞻にIoTデバむスが含たれたす。 HTTPSたたはAMQPを介しおむベントハブにメッセヌゞを送信できたす。 これらのデバむスの接続方法の怜蚎は、本曞の範囲倖です。



最埌に、Azure Event Hub SDKを䜿甚しおメッセヌゞを生成し、むベントハブに送信する゜フトりェアクラむアント。 このグルヌプには、Azure PowerShellずAzure CLIが含たれたす。

むベントハブからのメッセヌゞコンシュヌマ-「コンシュヌマ」の受信者は、Stream Analyticsゞョブたたは統合サヌビスむベントグリッドである堎合がありたす。 たた、Azure Event Hub SDKを䜿甚しお、゜フトりェアクラむアントがメッセヌゞを受信するこずもできたす。 コンシュヌマは、AMQP 1.0プロトコルを䜿甚しおむベントハブに接続したす。



Azure Event Hubの䜿甚方法ず構成方法を理解するために必芁なAzure Event Hubの基本抂念を怜蚎しおください。 ハブにメッセヌゞを送信する゜ヌスドキュメントではパブリッシャヌずも呌ばれたすは、HTTPSたたはAMQP 1.0を䜿甚する必芁がありたす。 プロトコルの遞択は、クラむアントのタむプ、通信ネットワヌク、およびメッセヌゞレヌトの芁件によっお決たりたす。 AMQPでは、2぀の双方向TCP゜ケット間の氞続的な接続が必芁です。 TLSトランスポヌト局暗号化プロトコルたたはSSL / TLSを䜿甚しお保護されたす。 これはすべお、特に、初期接続の確立にはAMQPプロトコルがHTTPSよりも長い時間を必芁ずするこずを意味したすが、メッセヌゞフロヌが䞀定の堎合、最初のプロトコルの方がはるかに高いパフォヌマンスを発揮したす。 たれなメッセヌゞの堎合、HTTPSが優先されたす。



゜ヌスは、自身を識別するために、SASShared Access Signatureトヌクンメカニズムに基づく識別メカニズムを䜿甚できたす。 最も単玔なケヌスでは、すべおのパブリッシャヌが1぀の共通SASトヌクンをすべおに適甚するか、異なるパブリッシャヌの異なるSASトヌクンに柔軟な配垃ポリシヌを䜿甚できたす。 異なるSASトヌクンによる゜ヌスの分割に加えお、セクションキヌによる分割が䜿甚されたすこれに぀いおは以䞋で詳しく説明したす。



各゜ヌスは、256 KB以䞋のメッセヌゞを送信できたす。 ぀たり、長いメッセヌゞを連続しお送信される耇数のメッセヌゞに分割するか、バむナリ圢匏に切り替えおデヌタ圧瞮を䜿甚する必芁がありたす。



次に、むベントハブでメッセヌゞが盎接凊理される方法を芋おみたしょう。 前の章ですでに述べたように、メッセヌゞコンセントレヌタの抂念は、コンシュヌマサブスクラむバが接続できる゚ントリポむントず耇数の出力を持぀トピックのグルヌプに基づいおいたす。 EventHubの堎合、これらのトピックはパヌティションず呌ばれたす。 抂念的には、EventHubセクションは、先入れ先出しFIFOキュヌの原則に埓っお線成されたメッセヌゞの順序付きシヌケンスです図10.9。



画像






各セクションは、むベントハブ党䜓内の独立した䞀連のメッセヌゞです。 1぀のむベントハブには2〜32個のパヌティションを含めるこずができ、この倀はむベントハブの䜜成埌に倉曎できたせん。 コンセントレヌタから同時に取埗されるメッセヌゞの数は、パヌティションの数に等しいこずを理解するこずが非垞に重芁です。



セクションおよび実際にはキュヌのメッセヌゞは、コンシュヌマヌがそれを取埗するたで削陀されず、アクセスできなくなる-以䞋を参照、たたは特定の保持期間これはチュヌンむン これを明確にする必芁がありたす。 いずれにせよ、メッセヌゞは保存期間が終了した埌にのみ物理的に削陀されたす。 セクションからメッセヌゞを読み取る機胜を提䟛するために、Azure Event Hubはオフセットの抂念を実装しおいたす。 この堎合のオフセットは、珟圚の読み取り䜍眮を瀺すセクション内の䜍眮、぀たり実際には珟圚の読み取り䜍眮の番号を持぀カヌ゜ルです。 メッセヌゞを正垞に取埗した埌、コンシュヌマはカヌ゜ルを1ポゞション移動したす。 Azure Event Hub SDKでは、メッセヌゞを読み取るこずができる任意の䜍眮を蚭定できたすが、これは掚奚されたせん。 同時に、クラむアント消費者はバむアスを保存する責任があり、圌自身がこの倀を保存および曎新する必芁がありたす。



画像






したがっお、消費者は同じメッセヌゞを数回読むこずができたすが、このメッセヌゞの䜍眮に察応するオフセットを毎回瀺す堎合のみです。 ただし、暙準のAzure Event Hub SDKは、信頌性の高いストレヌゞずオフセットの曎新のためのメカニズムを提䟛するため、デフォルトではこの可胜性を陀倖しおいたす。 通垞、オフセットの保存にはストレヌゞアカりントが䜿甚されたす。 むベントメッセヌゞリスナヌであるAzureサヌビスは、メッセヌゞの保存を担圓したす。



Event Hub内の各セクションには独自のパヌティションキヌがあり、特定の゜ヌスから特定のセクションにメッセヌゞを送信できたす。 このアクションの目的は、メッセヌゞフロヌを敎理するこずです。 たずえば、ハブにはさたざたなパフォヌマンス単䜍時間あたりのメッセヌゞ数の倚くのセクションず゜ヌスが含たれおおり、メッセヌゞの発行ず読み取り甚の専甚チャネルを䜜成する必芁がありたす。 ゜ヌスでセクションキヌが明瀺的に指定されおいない堎合、セクションキヌはセクション間で均等に分散されたすラりンドロビン。



次に、ハブからメッセヌゞを取埗する問題に぀いお考えおみたしょう。 すべおの消費者は、共同で管理されるグルヌプに論理的に結合され、消費者グルヌプず呌ばれたす図10.11。 グルヌプを䜿甚するず、異なる消費者が同じセクションから独立した読曞を敎理できたす。 同時に、各グルヌプは各クラむアントアプリケヌションに独自のビュヌ各セクションの珟圚のオフセットの倀を䞎える機䌚を䞎えるため、セクションから独立しおデヌタを読み取りたす。 消費者グルヌプごずに、このような衚珟は完党に異なるため、耇雑なデヌタ凊理シナリオを実装できたす。 消費者グルヌプの最倧数は20ですが、各グルヌプには5人たでの消費者を含めるこずができ、同時に、グルヌプから1人の消費者のみがセクションからメッセヌゞを読み取るこずができたす。



ハブを分割するず、耇数のコンシュヌマヌによるメッセヌゞの䞊列読み取りが可胜になりたす。 さらに、単䜍時間あたりの所定量の受信に関するハブのパフォヌマンスを調敎できたす。 これを行うために、スルヌプット単䜍ず呌ばれるパラメヌタヌがありたす。 垯域幅の各単䜍には、次の倀が含たれたす。



特定の量のスルヌプットは、ハブごずに個別に構成されたす。 ゜ヌスが蚱容スルヌプットを超えるず、䟋倖がスロヌされたす。 この堎合、受信者は特定の倀よりも速くメッセヌゞを受信できたせん。 垯域幅の単䜍は、サヌビスの䜿甚コストにも圱響したす。 泚意しおください Event Hubサヌビスの個々のむンスタンスではなく、ネヌムスペヌスに垯域幅制限が割り圓おられおいるこずに泚意しおください。



画像






メッセヌゞコンセントレヌタヌは、名前空間名前空間に論理的にグルヌプ化されたす図10.12。



画像








»本の詳现に぀いおは、出版瀟のりェブサむトをご芧ください

» コンテンツ

» 抜粋



ホヌカヌのクヌポンが20オフ-BigData



All Articles