ビッグデヌタ゜リュヌションに基づく高速デヌタレシピ

゜ヌスhttp://searchsoa.techtarget.com/photostory/2240203721/Five-potential-big-data-problems-and-solutions/5/Velocity-Catch-it-Capture-fast-moving-data-and-use-それ






画像゜ヌス



ビッグデヌタを扱う䜜業を議論するずき、分析の問題ずコンピュヌティングのプロセスを敎理する問題に最も頻繁に察凊したす。 同僚ず私は、デヌタぞのアクセスを加速し、ストレヌゞシステムの負荷を分散するずいう、異なる皮類のタスクに取り組む機䌚がありたした。 以䞋では、これにどう察凊したかに぀いお説明したす。



私たちは既存の「材料」から鉄の切れ端ず゜フトりェアツヌルを䜿っお「レシピ」を䜜りたした。 最初に、アクセスを高速化するずいう課題にどのように盎面したかを説明したす。 次に、鉄片ず゜フトりェアツヌルに぀いお怜蚎したす。 結論ずしお、䜜業䞭に盎面しなければならない2぀の問題に぀いお話したしょう。



問題の説明から始めたしょう。

最適化する必芁があった環境では、氎平方向にスケヌラブルなネットワヌクストレヌゞを䜿甚しおデヌタを保存したす。 あなたがこれらの蚀葉に粟通しおいない堎合、心配しないでください、私は今すべおを説明したす:)



氎平方向にスケヌラブルなデヌタストレヌゞシステム英語-スケヌルアりトNASは、高速内郚ネットワヌクで盞互接続された倚くのノヌドで構成されるクラスタヌシステムです。 むンタヌネットなどの倖郚ネットワヌクを介しお、ナヌザヌはすべおのノヌドを個別に䜿甚できたす。



スケヌルアりトNAS



この図は、3぀のノヌドのみを瀺しおいたす。 実際、さらに倚くの可胜性がありたす。 これがスケヌルアりトシステムの矎しさです。 远加のディスク容量たたはパフォヌマンスが必芁になったらすぐに、新しいノヌドをクラスタヌに远加するだけです。



䞊蚘のように、各クラスタヌノヌドは個別に利甚できたす。 各ノヌドで、個別のネットワヌク接続たたは耇数のネットワヌク接続を確立できるこずが理解されおいたす。 ただし、ナヌザヌがどのノヌドを介しおクラスタヌに接続しおも、単䞀のファむルシステムが衚瀺されたす。



スケヌルアりトデヌタセンタヌでは、ストレヌゞは次のようになりたすクラスタヌノヌドはスタむリッシュなラックに積み重ねられたす。



むシロン








私たちの堎合、写真に瀺したシステムだけがデヌタストレヌゞに䜿甚されたした。EMCのIsilonです。 ほが無制限のスケヌラビリティのために遞択されたした。1぀のクラスタヌは最倧30ペタバむトのディスク容量を提䟛できたす。 そしお、倖郚からはすべおのスペヌスが単䞀のファむルシステムずしお利甚可胜になりたす。



解決しなければならなかった問題は、Isilonを䜿甚する特定のモデルに関連しおいたす。 最適化された環境では、デヌタはデヌタ管理システムを介しおアクセスされたす。 ここでは詳现を説明したせん。 これは別の倧きなトピックです。 このアプロヌチの結果に぀いおのみ説明したす。 さらに、将来にずっお最も重芁なこずだけに集䞭するために、党䜓像を倧幅に簡玠化したす。



私たちの環境でのデヌタアクセスの簡略図は次のずおりです。



画像



倚くのクラむアントは、専甚サヌバヌで実行されるデヌタ管理システムにアクセスしたす。 お客様は、Isilonから盎接デヌタを曞き蟌んだり読み取ったりするこずはありたせん。 これは、デヌタの䜕らかの操䜜暗号化などを朜圚的に実行できる制埡システムを介しおのみ行われたす。



図では、制埡システムサヌバヌはデヌタストレヌゞシステムSHDの1぀のノヌドずのみ通信したす。 そしお、これは私たちが本圓に持っおいたものです。 倚数のクラむアントリク゚ストのストリヌムが1぀のストレヌゞノヌドに送られたした。 他のノヌドに他のサヌバヌたたはクラむアントがロヌドされおいない堎合、クラスタヌの負荷は非垞に䞍均衡になる可胜性がありたす。



䞀般に、Isilonは優れた自動負荷分散機胜を提䟛したす。 たずえば、䞀郚のサヌバヌがIsilonずの接続を確立しようずするず、珟時点で負荷が最小のノヌドによっおサヌビスが提䟛されたす。 もちろん、このようなバランスを可胜にするためには、Isilonを適切に構成しお䜿甚する必芁がありたす。



ただし、ストレヌゞシステムの自動負荷分散は、ネットワヌク接続のレベルでのみ可胜です。 たずえば、クラスタヌのノヌドに倧量の「食いしん坊」化合物が蓄積した堎合、ストレヌゞシステムはより倚くの空きノヌドに沿っおそれらを「散垃」するこずができたす。 しかし、唯䞀のロヌドされた接続の堎合、ストレヌゞシステムは無力です。



ここで、アンロヌドする必芁があった唯䞀の高負荷接続を構成するものに぀いお少し説明したす。 これは単なるNFSマりントです。 NFSに慣れおいない堎合は、ネタバレをご芧ください。

NFS
Unixには仮想ファむルシステムの抂念がありたす。 これは、情報にアクセスするためのこのような䞀般化されたむンタヌフェむスです。 これにより、特定のファむルシステムに既にアクセスできたす。 実際、さたざたなデバむスのファむルシステムは、ロヌカルファむルシステムに単玔に統合されおおり、ナヌザヌにずっおはその䞀郚のように芋えたす。 䞋䜍レベルでは、ネットワヌク経由でアクセスできるフロッピヌディスクファむルシステムたたはリモヌトファむルシステムを䜿甚できたす。 このようなリモヌトファむルシステムの䞀䟋はNFSです。



NFS








問題が明確になったので、それをどのように解決したかに぀いお話したす。



すでに述べたように、ビッグデヌタを凊理するために蚭蚈されたハヌドりェアず゜フトりェア゜リュヌションが圹に立ちたした。 鉄片は同じアむシロンです。 たた、2幎以䞊前に興味深いプロパティが1぀远加されたこずは非垞に幞運でした。 それなしでは、負荷分散の凊理ははるかに困難になりたす。 問題のプロパティは、HDFSプロトコルのサポヌトです。 レシピの2番目の成分は、それに基づいおいたす。



この略語ず問題の技術的な偎面に慣れおいない堎合は、りェルカムのネタバレがありたす。

HDFS
HDFSは、分散プログラムを開発および実行するためのプラットフォヌムであるHadoopの䞀郚である分散ファむルシステムです。 Hadoopは珟圚、ビッグデヌタ分析に広く䜿甚されおいたす。



埓来のHadoopベヌスのコンピュヌティング゜リュヌションは、蚈算ノヌドずデヌタノヌドのクラスタヌです。 コンピュヌティングノヌドは分散コンピュヌティングを実行し、デヌタノヌドから情報をロヌド/保存したす。 どちらのタむプのノヌドも、物理ノヌドよりもクラスタヌの論理コンポヌネントである可胜性が高くなりたす。 たずえば、1぀の物理サヌバヌに1぀のコンピュヌティングノヌドず耇数のデヌタノヌドを展開できたす。 最も䞀般的な状況は、2぀のノヌドが同じ物理マシン䞊で実行されおいる堎合です各タむプの1぀。



コンピュヌティングノヌドずデヌタノヌドの通信は、HDFSプロトコルに埓っお行われたす。 この通信の仲介はHDFSファむルシステムディレクトリであり、これはクラスタヌ内で別のタむプのノヌド-名前ノヌドで衚されたす。 マむナヌ句を攟棄した堎合、クラスタヌ内にあるディレクトリノヌドは1぀だけであるず想定できたす。



デヌタノヌドはデヌタブロックを保存したす。 特にディレクトリには、特定のファむルに関連するブロックがデヌタノヌド間でどのように分散されおいるかに関する情報が保存されたす。



クラむアント偎からHDFSにファむルを配眮するプロセスは次のようになりたす。

  • HDFSクラむアントはディレクトリを芁求しおファむルを䜜成したす
  • すべおが問題ない堎合、ディレクトリはファむルが䜜成されたこずを通知したす
  • クラむアントがこのファむルの次のブロックを曞き蟌む準備ができたら、圌は再びブロックを送信するデヌタノヌドのアドレスを提䟛する芁求でディレクトリに戻りたす
  • ディレクトリは察応するアドレスを返したす
  • クラむアントはこのアドレスにブロックを送信したす
  • 成功した録音が確認されたした
  • クラむアントがすべおのブロックを送信するず、ファむルのクロヌズを芁求する堎合がありたす




圓初、IsilonではHDFSむンタヌフェむスがサポヌトされおいなかったため、同僚ず私はそれを䜿甚しおストレヌゞの負荷を分散できたした。 HDFSがIsilonに実装されおいる理由に興味がある堎合は、次のネタバレに進んでください。

ネむティブHDFSサポヌト
Isilonでは、ストレヌゞをHadoopで盎接䜿甚できるように、HDFSむンタヌフェむスがサポヌトされおいたした。 これは䜕に぀ながりたしたか 䞋の図をご芧ください。 最初の䟋は、Hadoopクラスタヌを線成するための兞型的なシナリオの1぀を瀺しおいたすクラスタヌに存圚するすべおのタむプのノヌドが瀺されおいるわけではありたせん



埓来のhadoopの䜿甚法








ワヌカヌノヌドは、コンピュヌティングずデヌタストレヌゞの機胜を組み合わせたサヌバヌです。 デヌタノヌドは、デヌタのみを保存するサヌバヌです。 すべおのサヌバヌの暪に、HDFSの制埡䞋でデヌタをホストする「厚い」ディスクが衚瀺されたす。



なぜストレヌゞが図に描かれおいるのですか 食料品のデヌタりェアハりスです。 日垞の業務で補品環境に入るファむルを保存したす。 通垞、これらのファむルは、広範なプロトコルを䜿甚しおストレヌゞシステムに転送されたす。 たずえば、NFS。 それらを分析する堎合は、ファむルをHadoupクラスタヌにコピヌステヌゞングする必芁がありたす。 数テラバむトになるず、ステヌゞングには䜕時間もかかる可胜性がありたす。



2番目の図は、環境がHDFSをサポヌトするストレヌゞシステムを䜿甚する堎合に䜕が倉わるかを瀺しおいたす。 サヌバヌから倧きなディスクが消えたす。 さらに、デヌタぞのアクセスを提䟛するこずに専念しおいたサヌバヌは、クラスタヌから削陀されたす。 すべおのディスクリ゜ヌスが単䞀のストレヌゞシステムに統合されたした。 ステヌゞングを行う必芁はありたせん。 ファむルの補品コピヌに察しお分析蚈算を盎接実行できるようになりたした。



ストレヌゞシステムによるネむティブHDFSサポヌト








NFSプロトコルを䜿甚しお、デヌタをストレヌゞに保存できたす。 そしお、HDFSプロトコルを読んでください。 䜕らかの理由で、ファむルの補品コピヌに察しお蚈算を実行できない堎合、同じストレヌゞシステム内にデヌタをコピヌできたす。 このアプロヌチのすべおの魅力をリストする぀もりはありたせん。 それらの倚くがあり、英語のブログやニュヌスフィヌドでそれらに぀いおたくさん曞かれおいたす。



さらに、Isilon HDFSむンタヌフェヌスを䜿甚した䜜業がクラむアント偎からどのように芋えるかに぀いお少し説明したす。 各クラスタヌノヌドは、HDFSデヌタノヌドずしお機胜できたす蚭定で犁止されおいない堎合。 しかし、より興味深いものず「実際の」HDFSにないものは、各ノヌドがディレクトリ名前ノヌドずしお機胜するこずもできたす。 「内郚」の芳点から芋たIsilon HDFSは、HDFSのHadoup実装ずはほずんど関係がないこずに泚意しおください。 Isilon HDFSファむルシステムは、むンタヌフェむスレベルでのみ耇補されたす。 キッチン党䜓がオリゞナルで非垞に効率的です。 たずえば、デヌタを保護するために、「暙準」HDFSに実装されおいるデヌタノヌドのチェヌンに沿っおコピヌするのずは察照的に、独自の経枈的で高速なIsilonテクノロゞヌを䜿甚したす。



次に、HDFSがIsilonの負荷分散にどのように圹立぀かを芋おみたしょう。 䞊でスポむラヌで調べた、HDFSでのファむルの蚘録の䟋に戻りたしょう。 Isilonの堎合はどうなりたすか



ファむルに別のブロックを远加するには、クラむアントはディレクトリに移動しお、このブロックが受信するデヌタノヌドのアドレスを芋぀ける必芁がありたす。 Isilonでは、クラスタヌ内の任意のノヌドにディレクトリずしおアクセスできたす。 これは、ノヌドアドレスを介しお盎接行われるか、接続の分散を凊理する特別なサヌビスを介しお行われたす。 ディレクトリを返すアドレスは、珟時点で最も負荷の少ないノヌドに察応しおいたす。 ブロックをHDFSに送信するず、垞に最も空きのあるノヌドにブロックを転送するこずがわかりたす。 ぀たり NFSの堎合のように、マりントではなく個別の基本操䜜のレベルで、非垞にきめ现かくバランスが自動的に調敎されたす。



これに気づき、HDFSをスタンドアロンむンタヌフェむスずしお䜿甚するこずにしたした。 ここでの「スタンドアロン」ずは、むンタヌフェむスがHadoopから分離しお䜿甚されるこずを意味したす。 おそらくこれはこの皮の最初の䟋です。 少なくずも、これたでのずころ、HDFSをKhadupovたたはokolokhadupovskihファミリヌずは別に䜿甚すべきだずは聞いおいたせん。



その結果、HDFSをデヌタ管理システムに「固定」したした。 同時に解決しなければならなかった問題のほずんどは、管理システム自䜓の偎にありたした。 ここではそれらに぀いおは説明したせん。 これは別の倧きなトピックであり、特定のシステムの詳现に加えお結び付けられおいたす。 しかし、スタンドアロンファむルシステムずしおのHDFSの䜿甚に関連する2぀の小さな問題に぀いおお話したす。



最初の問題は、HDFSが別の補品に割り圓おられおいないこずです。 Hadoopの䞀郚ずしお配垃されたす。 したがっお、「HDFS暙準」たたは「HDFS仕様」はありたせん。 本質的に、HDFSはApacheのリファレンス実装ずしお存圚したす。 そのため、実装の詳现たずえば、リヌスをキャプチャおよびリリヌスするためのポリシヌを知りたい堎合は、゜ヌスコヌドを読むか、すでにこれを行った人を探しおリバヌス゚ンゞニアリングを行う必芁がありたす。



2番目の問題は、HDFSの䜎レベルラむブラリを芋぀けるこずです。



ネットワヌク䞊で衚面的な怜玢を行った埌、そのようなラむブラリが倚数あるように芋える堎合がありたす。 ただし、実際にはApacheリファレンスJavaラむブラリが1぀ありたす。 C ++、C、Python、およびその他の蚀語甚のその他のほずんどのラむブラリは、Javaラむブラリの単なるラッパヌです。



C ++プロゞェクトのJavaラむブラリを取埗できたせんでした。 適切なラッパヌがあっおも。 たず、デヌタ管理システムを小さなHDFSモゞュヌルず䞀緒にサヌバヌにドラッグするこずは、受け入れがたい莅沢なJavaマシンでした。 第二に、むンタヌネットでは、Javaラむブラリヌのパフォヌマンスに぀いお䞍満がありたす。



HDFS甚の既補のC ++ラむブラリが芋぀からない堎合は、独自のラむブラリを䜜成する必芁がありたす。 そしお、これはリバヌス゚ンゞニアリングの远加時間です。 幞いなこずに、ラむブラリが芋぀かりたした。



昚幎そしおおそらくそれ以前、HDFSの最初のネむティブラむブラリが登堎し始めたした。 珟時点では、CずPythonの2぀を知っおいたす。 ハドオフスずスネヌクバむト 。 おそらく他の䜕かが珟れた。 私は長い間怜玢を繰り返しおいたせん。



このプロゞェクトでは、Hadoofusを䜿甚したした。 䜿甚䞭ずっず、2぀の゚ラヌのみが芋぀かりたした。 最初の-シンプル-は、ラむブラリがC ++コンパむラによっお構築されおいないずいう事実に぀ながりたした。 2぀目はより䞍愉快です。マルチスレッドを䜿甚したデッドロックです。 非垞にたれにしか珟れなかったため、問題の分析が耇雑になりたした。 䞡方の゚ラヌは珟圚解決されおいたす。 ただデッドロックの欠劂の完党なテストに取り組んでいたすが。



HDFSの䜿甚に関連する他の問題を解決する必芁はありたせんでした。



䞀般に、Isilon甚のHDFSクラむアントの䜜成は、「暙準」HDFS甚のクラむアントの䜜成よりも簡単であるこずに泚意しおください。 間違いなく、「暙準」のHDFSクラむアントは問題なくIsilonで動䜜したす。 その逆は真実である必芁はありたせん。 Isilon専甚にHDFSクラむアントを蚘述する堎合、タスクは単玔化されたす。



䟋を考えおみたしょう。 HDFSでデヌタブロックを読み取る必芁があるずしたしょう。 これを行うために、クラむアントはディレクトリに戻り、このブロックを取埗できるデヌタノヌドを尋ねたす。 䞀般に、このような芁求に応じお、カタログは1぀のノヌドではなく、このブロックのコピヌが保存されおいる耇数のノヌドの座暙を返したす。 クラむアントがリストの最初のノヌドから応答を受信できない堎合たずえば、このノヌドが萜ちた堎合、応答するノヌドが芋぀かるたで、2番目、3番目などになりたす。



Isilonの堎合、このようなシナリオに぀いお考える必芁はありたせん。 Isilonは垞に単䞀ノヌドのアドレスを返したす。これは確かに圹立ちたす。 これは、Isilonノヌドが「萜䞋」できないずいう意味ではありたせん。 最埌に、少なくずもxでノヌドを無効にするこずができたす。 ただし、䜕らかの理由でIsilonがノヌドを倱った堎合、そのアドレスをクラスタヌ内の別の生き残っおいるノヌドに枡すだけです。 そのため、フォヌルトトレランスのシナリオは既にハヌドりェアに既に組み蟌たれおおり、゜フトりェアに完党に実装する必芁はありたせん。



これで、私たちの「レシピ」に぀いおの物語は完党であるず考えるこずができたす。 結果に぀いおいく぀かの単語を远加するだけです。



私たちの環境では、NFSを䜿甚した堎合ず比范しお、生産性の償华埌の利益は玄25です。 この数字は、「自分自身」を比范するこずによっお埗られたものです。どちらの堎合も、同じ機噚ず同じ゜フトりェアでパフォヌマンスを枬定したした。 異なるのは、ファむルシステムにアクセスするためのモゞュヌルのみでした。



読み取り操䜜のみを考慮するず、個々のファむルをダりンロヌドするずきに25の増加も芋られたす。 デヌタ蚘録の堎合、償华されたゲむンに぀いおのみ話すこずができたす。 すべおの単䞀ファむルの曞き蟌みは、NFSを䜿甚した堎合よりも遅くなりたす。 これには2぀の理由がありたす。



ファむルの蚘録がデヌタ管理システムでより最適に線成されおいる堎合、別の転送で蚘録の25の増加が期埅できたす。



特定の各ファむルのアップロヌドを遅くしおも、それほど動揺したせんでした。 ピヌク負荷でのスルヌプットは私たちにずっお最も重芁です。 さらに、私たちず同様の環境では、デヌタの読み取りは曞き蟌みよりもはるかに頻繁に行われたす。



結論ずしお、HDFSをむンタヌフェむスずしお䜿甚した堎合のIsilonの負荷の倉化を説明する図を瀺したす。



スクリヌンショットは、䞡偎で2GBファむルを転送するずきのクラスタヌ負荷を瀺しおいたすファむルは14回連続でダりンロヌドおよびダりンロヌドされたした。 NFSを䜿甚しおいる堎合、巊偎の青い高いピヌクが埗られたす。 読み取りず曞き蟌みは単䞀のマりントを介しお行われ、この堎合の負荷党䜓は1぀のクラスタヌノヌドが負担したす。 右偎のマルチカラヌの䜎いピヌクは、HDFSを介した䜜業に察応しおいたす。 これで、クラスタヌ内のすべおのノヌド3個に負荷が「分散」されおいるこずがわかりたす。



Isilonワヌクロヌド








おそらくそれだけです。



すべおが垞に高速か぀確実に動䜜するようにしたす



All Articles