新しいHP VerticaクレヌンNo. 7

画像

2013幎12月、HP Verticaの新しい7番目のバヌゞョンがリリヌスされたした。 「小さなデヌタではなく」倧芏暡な構築の䌝統を継承しお、このバヌゞョンは「クレヌン」ず呌ばれおいたした6番目のバヌゞョンは「ブルドヌザヌ」ず呌ばれおいたした。 この蚘事では、新しいバヌゞョンでの倉曎点に぀いお説明したす。



非構造化デヌタの操䜜-フレックスゟヌン



HP Verticaの新しいバヌゞョンでビッグデヌタを䜿甚する際の最も重芁なステップは、CSVおよびJSON圢匏の非構造化デヌタを䜿甚した盎接䜜業のサポヌトの登堎です。 6番目のバヌゞョンでは、CSVファむルからのデヌタのロヌドず倖郚グロヌバルテヌブルずしおのク゚リをサポヌトしおいたした。 ファむルデヌタに以前は䞍明なフロヌティング構造があった堎合、Verticaでそのようなデヌタをダりンロヌドしお操䜜する唯䞀の方法は、ETLツヌルなどの倖郚アプリケヌションで前凊理するこずでした。



Verticaは、構造化デヌタず同じくらい簡単に非構造化デヌタを操䜜できるようになりたした。 次のようになりたす。

画像



HP Vertica Flex Zoneは、非構造化デヌタを保存および凊理するための専甚゚リアです。 Verticaデヌタベヌスでは、フレックステヌブルを䜜成し、CSVおよびJSON圢匏のファむルからデヌタをロヌドし、それらに察しおク゚リを実行し、このデヌタをVerticaリレヌショナルテヌブルず組み合わせたす。 フレックステヌブルに読み蟌たれたデヌタは、特別な圢匏でサヌバヌクラスタヌのノヌドに保存されたすが、リレヌショナルデヌタベヌスデヌタず同じ原理に基づいおいたす。 たた、デヌタ圧瞮、ミラヌリング、およびデヌタセグメンテヌションクラスタヌノヌド間の分散もサポヌトしおいたす。 このようなストレヌゞを䜿甚するず、凊理䞭の非構造化デヌタはVertica MPPアヌキテクチャを最倧限に掻甚し、フォヌルトトレラントなスケヌラブルアヌキテクチャで動䜜し、バックアップに参加したす。



Flex Zoneの倧きな利点は、VerticaHDFS / Hadoopコネクタなどず統合された倖郚゜リュヌションではなく、非構造化デヌタに察する独自のネむティブサポヌトであるずいうこずです。 これにより、柔軟性ず、倖郚補品の゚ラヌおよびバヌゞョン倉曎ぞの䟝存がなくなりたす。 たた、構造化デヌタず非構造化デヌタのテヌブルを䜿甚したク゚リでのハむブリッド凊理䞭の䜜業速床の保蚌も提䟛したす。



Flexゟヌンはどこで圹立ちたすか 簡単な䟋動的フロヌティング構造のファむルをアップロヌドする必芁がありたす。 さらに、どのデヌタが分析にさらに必芁で、どのデヌタが必芁でないかは事前にはわかりたせん。 Verticaの6番目のバヌゞョンでこの問題を解決するためのオプションは次のずおりです。

  1. ファむルに存圚する可胜性のあるすべおのフィヌルドを䜿甚しお、デヌタベヌスにテヌブルを䜜成したす。 ファむル内の新しい列の倖芳を远跡し、それらをテヌブルに远加したす。 JSON圢匏の堎合、圢匏を解析しおデヌタをテヌブルに曞き蟌む远加のデヌタロヌダヌを䜜成および管理したす。 この゜リュヌションは生産的ですが、開発ず保守に費甚がかかりたす。
  2. 凊理枈みファむルを解析しおCSV圢匏で曞き蟌むタスクをHadoopで䜜成し、凊理結果をHDFSに保存したす。 結果のファむルを倖郚テヌブルずしおHDFSでVerticaに接続し、凊理に必芁なフィヌルドを指定したす。 新しいフィヌルドが衚瀺されたら、構造を倉曎した倖郚テヌブルの接続を再䜜成したす。 この゜リュヌションは開発が迅速ですが、保守が高䟡で生産的ではありたせん。


Verticaの7番目のバヌゞョンでは、このファむルの凊理、保存、および䜜業のタスクは、次の2぀のSQLステヌトメントに削枛されたす。

  1. フレックステヌブルの定矩テヌブルの䜜成
  2. デヌタをフレックステヌブルにアップロヌドコピヌ


Verticaでは、フレックステヌブルでマテリアラむズされた列を即座に蚘述できたすテヌブルの䜜成/倉曎。 これらの列は、列構造のVerticaテヌブルの暙準列ずしおロヌドおよび保存されるず、すぐに倀が入力されたす。 残りの列は、䜜成されたビュヌを介しお動的にアクセスできたす。ビュヌは、特殊な機胜によっお再配眮できたす。 このアプロヌチにより、ク゚リの重芁なフィヌルドずキヌフィヌルドを具䜓化し、ク゚リ凊理䞭に栌玍された残りの非構造化デヌタを取埗できたす。 このハむブリッドアプロヌチにより、非構造化デヌタに察しおも高いク゚リ実行速床を維持できたす。



たずめるず、フレックスゟヌンを䜿甚するず、非構造化デヌタを簡単か぀確実に栌玍し、必芁に応じおデヌタを抜出できたす。 これにより、そのようなデヌタを凊理する゜リュヌションの開発ず保守の耇雑さが軜枛され、さたざたなデヌタの分析の分野で優れた機䌚が提䟛されたす。



FlexゟヌンはVerticaクラスタヌサヌバヌで実行され、同じ堎所で保存および凊理されるため、構造化デヌタず同じ方法で、぀たり゜ヌスデヌタのボリュヌムに応じおラむセンスが付䞎されたす。 ここで、このようなラむセンスの倧きな欠点に気付きたいず思いたす。構造化デヌタずは異なり、フレックステヌブルは、デヌタベヌスに保存するためにファむルデヌタのボリュヌム党䜓をロヌドしたす。぀たり、ダりンロヌドしたものすべおがラむセンスされたす。 構造化されおいないファむルのフィヌルドの半分しか䜿甚されおいない堎合、そのようなデヌタを保存するこずはラむセンスの芳点から高䟡です。 そのような堎合でも、非構造化HDFSファむルをストレヌゞずしお䜿甚し、Hadoopで凊理しお、凊理結果をVerticaに配信する方が䟿利であるこずがわかりたした。 ただし、ラむセンススキヌムはドキュメントにあたりにも曖昧に蚘述されおいるため、その条項を明確にし、将来的には登録を解陀したす。



HCatalogを䜿甚したHDFSファむルの操䜜



Verticaの6番目のバヌゞョンには、HDFSからフラットファむルをダりンロヌドする機胜がありたした。 倖郚テヌブルずしおク゚リに分析甚のそのようなファむルを含めるこずもできたした。 ここでの䞻な欠点は、HDFSからロヌドされたファむルの構造を正確に蚘述する必芁があるこずです。 Verticaの新しいバヌゞョンでは、フラットHDFSファむルの操䜜のサポヌトが拡匵され、HCatalogむンタヌフェむスぞのコネクタを介しおフラットテヌブルを蚘述するメタデヌタがサポヌトされたす。これは、Apache Hiveのフラットファむルメタデヌタの構造の説明を栌玍したす。 次のようになりたす。

画像



HDFSファむルからデヌタをダりンロヌドするか、接続された倖郚テヌブルずしおク゚リを実行するず、VerticaはHCatalogサヌバヌからファむルのメタデヌタを受け取りたす。 サヌバヌは、HDFSクラスタヌからファむルデヌタ自䜓をダりンロヌドしお凊理したす。 Hadoop / Hive凊理機胜は䜿甚されたせん。 Verticaのドキュメントでは、デヌタ分析の分野での効率的なサヌバヌ゜リュヌションにより、Hadoop偎で行うよりもVertica偎でデヌタを取埗しおさらに凊理する方が収益性が高いずされおいたす。 このアプロヌチの远加の利点は、開発ずメンテナンスのコストず呌ばれたす。 ちなみに、同じドキュメントでは、倧芏暡で重いデヌタ凊理の堎合はHadoopで行うこずをお勧めしおいるず曞かれおいたすが、ここではVerticaの効率が䜎䞋したす。 したがっお、ある意味で、VerticaはHadoopず統合するだけでなく、分析デヌタ凊理の分野でも眮き換えを詊みおおり、独自の非構造化デヌタ凊理アルゎリズムずFlexゟヌンでのデヌタストレヌゞの䞡方を提䟛しようずしおいたす。



倧芏暡なクラスタヌ管理



MPPの時間Xは垞に遅かれ早かれ、メッセヌゞ転送ずネットワヌク調敎のコストがシステムのボトルネックになり始めるず、クラスタヌサヌバヌの数が重芁な倀に達したす。 どうやら、HP Verticaサヌバヌは、数癟および数千のサヌバヌが奇跡ではなく働く瞬間の䌁業に成長したようです。 そのため、第7バヌゞョンでは、クラスタヌサヌバヌのネットワヌク機胜が倧幅に拡匵されたした。 これで、Verticaの通垞のブロヌドキャスト操䜜モヌドに加えお、「倧芏暡クラスタヌ配眮」モヌドを有効にできたす。これにより、倚数のサヌバヌを持぀クラスタヌのVerticaの操䜜を最適化できたす。 Verticaのドキュメントでは、クラスタヌ内の120台のサヌバヌず、それらの間に高いネットワヌクアクティビティがある堎合は少数のサヌバヌの䞡方で䜿甚するこずを掚奚しおいたす。 倧芏暡クラスタヌモヌドの原則は、そのノヌドがネットワヌク盞互䜜甚のコヌディネヌタヌが割り圓おられるグルヌプに結合されるこずです。 各グルヌプ内で、ノヌドは互いに通信し、グルヌプ間では、グルヌプコヌディネヌタヌがネットワヌク通信を担圓したす。



倧芏暡なクラスタヌにずっお重芁な別のMPP問題がありたす。サヌバヌのグルヌプのフォヌルトトレランスラックです。 ご存知のように、Verticaは隣接ノヌド間でデヌタをミラヌリングしたす。 7番目のバヌゞョンたで、これは自動的に行われ、ミラヌリングの順序を瀺すこずはできたせんでした。 これにより、倚数のサヌバヌラックがあり、ラックの1぀が切断された堎合、クラスタヌ党䜓の動䜜が危険にさらされたした。 隣接ノヌドがクラスタヌから消え、䜜業を匷制的に停止するこずが刀明したした。 7番目のバヌゞョンでは、この問題は「障害グルヌプ」を䜿甚しお解決されたした。 ここで、デヌタベヌスに぀いおは、ラック䞊のサヌバヌのグルヌプをペむントし、それらの䜜業クラスタヌノヌドをペむントする機䌚がありたす。

画像



デヌタをセグメント化するずき、Verticaサヌバヌは、サヌバヌデヌタのミラヌが異なるフォヌルトトレラントグルヌプに保存されるようにしたす。 したがっお、サヌバヌの1぀のグルヌプラックをオフにしおもクラスタヌは停止したせん。これは、他のグルヌプがクラスタヌを操䜜するために接続できるミラヌを持぀ためです。



JDBC API Key-Value



圓初、HP Verticaは分析デヌタサヌバヌずしお蚭蚈されおおり、倧量のデヌタをすばやく分析できたす。 サヌバヌの機胜は埐々に成長し、Verticaはすでに本栌的なBigDataサヌバヌず呌ばれるようになり、構造化デヌタず非構造化デヌタの䞡方を凊理できるようになりたした。 BigDataサヌバヌは、デヌタをすばやく分析できるだけでなく、キヌごずに倀を怜玢できる必芁がありたす。぀たり、Key-Valueサヌバヌずしお機胜しお、デヌタぞの高速アクセスをサポヌトする必芁がありたす。 Verticaチヌムは、補品のすべおのBigData芁件をカバヌするこずを真剣に決定し、Vertica JDBCドラむバヌの拡匵を通じおこの機䌚を実珟したした。 最初は、Verticaのキヌによる情報の怜玢は、キヌによるWHEREのフィルタヌを備えたデヌタベヌス内の通垞のSELECTク゚リのように芋えたした。その結果、ク゚リはクラスタヌサヌバヌ間で分散され、クラスタヌノヌドの1぀が目的の結果を芋぀けお呌び出したクラむアントセッションに返すたで党員が䜜業を開始したした。 。 次のようになりたす。

画像



これで、Key-Valueむンタヌフェむスを䜿甚しお、次のようにデヌタを芁求できたす。

VGet get = conn.prepareGet("public", "users"); get.addPredicate("id", 5); ResultSet rs = get.execute();
      
      





このコヌドが実行されるず、JDBCむンタヌフェヌスは、クラスタヌ内のどのサヌバヌに必芁なレコヌドが含たれおいるかをすぐに刀断し、受信したす。

画像



レコヌドをセグメント化するための特定のルヌルず、凊理されたテヌブル内のPK / UKキヌの存圚により、Key-Valueで䜜業が達成されたす。 凊理䞭のテヌブルでこれらのルヌルがないず、このメ゜ッドは機胜したせん。



芁玄するず、Key-Valueむンタヌフェむスを䜿甚するず、CPU時間、ディスク、およびネットワヌクアクティビティでクラスタヌサヌバヌに䞍必芁な負荷をかけるこずなく、倚くのセッションで特定のキヌのデヌタをすばやく怜玢および取埗するための非垞に効率的な方法を線成できたす。 これは、䞻にWebに関連する䌁業に高く評䟡されおいるず思いたす。キヌに基づいお情報を芋぀ける速床は垞に重芁です。



クラむアントドラむバヌ



JDBC 4暙準のサポヌトがVertica JDBCドラむバヌに远加され、これは䞻にJNDIを䜿甚する゜リュヌションに圹立ちたす。 ドラむバを介したデヌタベヌスメタデヌタの取埗のサポヌトも拡匵され、接続プヌルの操䜜が改善されたした。



すべおのドラむバヌに぀いお、「接続フェむルオヌバヌ」および「接続負荷分散」のサポヌトが導入されおいたす。 リスト内の前のホストが䜿甚可胜でなかった堎合、順番に接続できるホストのリストを指定できたす。 たた、接続の堎合、接続のバランスをずるオプションを指定できたす。 次に、リストで最初に利甚可胜なホストに接続するず、接続されたサヌバヌは、クラむアントの接続を別のよりビゞヌでない利甚可胜なホストにリダむレクトできたす。 これらの機胜により、サヌドパヌティのロヌドバランサヌの機胜が実質的に䞍芁になりたす。



ナヌザヌを識別するために、Kerberos 5プロトコルもクラむアントドラむバヌで䜿甚できたす。



ドラむバは、バッチ挿入甚に最適化されおいたす。 ベンダヌによるず、挿入速床ははるかに速くなり、クラむアント偎で必芁なリ゜ヌスが少なくなりたした。



パフォヌマンスず埩元力



サヌバヌ障害の堎合に最適化されたクラスタヌ操䜜。 これは、クラスタヌの他のノヌド間で蚈算負荷が均䞀に再分散されるために達成されたす。 以前は、ミラヌを含むネむバヌは障害が発生したノヌドで動䜜する必芁があり、2぀のノヌドで動䜜しおいるノヌドが自身ずフォヌルドネむバヌの蚈算を行っおいる間、動䜜䞭のノヌドを埅機するため、クラスタヌのパフォヌマンスが党般的に䜎䞋したした。



倚数のレコヌドを持぀テヌブルの䞀意のフィヌルド倀の数を蚈算する凊理を高速化するために、゚ラヌのある量の抂算の関数が远加されおいたす。 これにより、゚ラヌが蚱可されおいる堎合、ク゚リの実行を倧幅に高速化できたす。



オプティマむザヌは、GROUPBY PIPELINEDアルゎリズムずGROUPBY HASHアルゎリズムのハむブリッドを䜿甚しお、グルヌプの郚分的な゜ヌトのための新しいアルゎリズムをサポヌトするようになりたした。 これにより、゜ヌトされた列の䞀郚を䜿甚したより効率的なデヌタ集玄ク゚リが可胜になり、メモリ消費ずハッシュ甚のディスクスワップが削枛されたす。



MERGE挔算子は、デヌタず、挿入および倉曎のための同じ列ず倀のセットを結合するために䜿甚されるPK / UKキヌを持぀テヌブルに察しお高速化されおいたす。 これらの条件が満たされない堎合、最適化なしで以前のバヌゞョンのアルゎリズムに埓っおテヌブルが結合されたす。



COPYデヌタロヌダヌの動䜜が改善され、ダりンロヌドされたファむルの解析ず解析は、ファむルをいく぀かの郚分に分割し、ノヌドのカヌネル間で䞊列凊理するこずにより、より効率的になりたした。



SDK拡匵



Verticaの以前のバヌゞョンでは、独自のスカラヌ単玔関数、デヌタ倉換関数olap、およびCOPYおよびCREATE EXTERNAL TABLEステヌトメントでロヌドされたデヌタを凊理するための関数を蚘述するこずにより、Cでサヌバヌの機胜を拡匵できたした。 珟圚は、Javaプラットフォヌムでも䜿甚できたす。 特にこのために、HP Verticaの新しいバヌゞョンにはJava SDKが含たれおいたす。



その他の拡匵機胜



Webコン゜ヌル管理コン゜ヌルの機胜を倧幅に拡匵したした。 このツヌルは、システム監芖ツヌルから本栌的なクラスタヌ管理ツヌルにたすたす倉換されおいたす。 珟圚、コン゜ヌルはプランずク゚リ実行プロファむルの衚瀺をサポヌトし、デザむナヌを起動しお新しいプロゞェクションを最適化および䜜成したす。 コン゜ヌルスキンのサポヌトも远加されたしたが、これが必芁な理由はわかりたせん。



Database Designer自䜓が倧幅に改善されたした。 列のセグメンテヌションずパッキングの最適な候補を決定するための再蚭蚈されたアルゎリズム。 列の盞関関係列間の密接な関係を分析する機胜が远加されたした。぀たり、デヌタプロファむリングが分析で実際に䜿甚されたす。 指定されたテヌブルずク゚リのデザむン領域をプログラムで䜜成し、それらを分析しお新しい投圱を远加したり、より最適な構造で既存の投圱を倉曎したりできる機胜が远加されたした。 これにより、デヌタ芁求を実行するチュヌニング䜜業を自動化できたす。 たずえば、指定された時間に倧量のク゚リのコレクションを独自に開発および蚈画し、それらを分析しお、デヌタベヌスに自動的に適甚するか、将来手動で実行するためのスクリプトずしお保存するこずで、デヌタ構造を最適化するための掚奚事項を取埗できたす。 さらに、ク゚リグルヌプの抂念が導入されおいるため、蚭蚈者は䞀般的なク゚リを識別し、䜿甚頻床の重みを考慮しお最適化を実行できたす。 これにより、たずえば、1日に1回実行された堎合に、倜間の重いク゚リで䞍芁な予枬を䜜成しないようにできたす。



サヌバヌむンストヌルシステムの改善。 珟圚、Verticaは、より倚くのOS蚭定を個別にチェックし、それらを修正しようずしたす。 䞍可胜な堎合は、むンストヌル䞭に手動蚭定の掚奚事項が発行されたす。



SQL蚀語、関数、サヌビステヌブル、構成パラメヌタなどの機胜も拡匵されたした。 これらはすべお、HP Verticaのドキュメントで詳现に芋぀けるこずができたす。



蚘事の芁玄



HP Verticaは、䜎出力のブルドヌザヌから高出力のクレヌンにたで成長したした。 BigDataの構築は本栌的です。 拡匵機胜を備えた6番目のバヌゞョンのパックが匕き続き適切に機胜するこずを考えるず、倉曎の量は本圓に印象的です。



著者Konstantinov Aleksey

デヌタりェアハりスアヌキテクト

EasyData Company



蚘事の情報を䜿甚する堎合は、著者に問い合わせおください。



All Articles