「Sparkコヌドを調べる必芁がある堎合がありたす」Alexander MorozovSEMrushによるScala、Spark、ClickHouseの䜿甚





SEMrushの堎合、「䌚瀟が䜿甚しおいる蚀語ず技術」を尋ねるのは意味がありたせん。ここでは、各チヌムに最倧限の自埋性が提䟛され、「すべおの人に共通」を最小限に抑えたす。 しかし、特定のチヌムは非垞に質問するべきものです。



プロゞェクトの1぀がScala、C ++、Spark、ClickHouseを䜿甚しおいるこずを孊びたした。 Scalaの遞択自䜓は非暙準であり、C ++ずの組み合わせはさらに少ない頻床で芋぀けるこずができたす。YandexのClickHouse DBMSも最も䞀般的な遞択ではないため、これらすべおの動䜜に぀いお質問するこずにしたした。 アレクサンダヌ・モロゟフが回答したした。



-たず、SEMrushに所属しおいるチヌムを教えおください。



-バック゚ンド開発者、マルヌンチヌム、トラフィック分析プロゞェクト。 それどころか、Googleアナリティクスのようなこずを行いたす-あらゆる皮類のcな統蚈手法を䜿甚しお、むンタヌネット䞊のサむトのメトリックを先取りしたす。



-なぜScalaを䜿甚するこずに決めたのですか-Sparkを持っおいるずいう事実、たたはその他の理由のためですか 珟圚、通垞のJavaはSparkを䜿甚するのに悪くないずいう意芋がありたすが、これに぀いおあなたの経隓は䜕ず蚀っおいたすか



-もちろん客芳的であれば、SparkはScalaで曞かれおいるためです。 Javaは非垞にうたく適合したすが、暙準機胜が芋逃され始めた堎合、Scalaにモゞュヌルを远加する方が䟿利です。 個人的には、Spark構造の機胜を拡匵する暗黙のクラスを蚘述するのがどれほど簡単で単玔かを想像するこずはできたせん。岩をプロゞェクトにドラッグする必芁がありたす。



はい、最高のドキュメントはコヌドです。 Sparkコヌドを調べるこずが必芁な堎合がありたすが、ここではこのコヌドが蚘述されおいる蚀語を知らなくおも䜕もしたせん。 人生の䟋は、jdbcを介しおClickHouseにデヌタを挿入できるように、SQLペアの方蚀を識別しお登録するこずです。 明らかに、この点は文曞化されおおらず、゚ラヌがどこにあるのか、そしおそれを排陀するために䜕を実装する必芁があるのか​​を理解するためにスパヌクコヌドを調べなければなりたせんでした。



そしお、䞻芳的な偎面に぀いお話すず、長い話です。 私の以前の経隓はテレコムで、そこから俳優ぞの愛を匕き出し、同じ堎所で関数型プログラミングに興味を持぀ようになりたした。私はErlang、Haskell、Scalaで始めたした。 OOPずFPの共通郚分ずしおのScala、さらにはAkkaさえも-遞択は明らかです:)



-ロシアではScalaを䜿甚する人はほずんどいないため、実際の経隓であるこずが刀明したこず、䜕が喜ばれ、䜕が痛いのかを尋ねたいず思いたす。



-䞀般に、コヌドの簡朔さ、開発の速床、ラむブラリの数Javaで蚘述されたラむブラリを含むに満足しおいたす。 アヌランの埌、マッチングの通垞のパタヌンは非垞に䞍足しおいたす。 痛みだけでなく、バ​​グぞの察凊にも問題が生じるこずがありたす。 䞀方で、含意により、簡朔か぀柔軟に曞くこずができたすが、䞀方で、コンパむル段階でも䜕が間違っおいたのかを理解するのが難しい堎合がありたす。 ただし、ここでは、テンプレヌトクラスの゚ラヌに察しおgccが衚瀺するフットクロスの皮類を思い出したす。



玔粋にむンフラストラクチャのものは、実際に最倧の痛みをもたらしたす。 コンピュヌティングクラスタは、かなり気たぐれなものです。 その蚈算は、メモリ䞍足のため䞭倮に萜ちたす。 ディスクの1぀の䞊のその堎所は突然終了したす。 次に、DCのネットワヌクラグのために、ノヌドが脱萜したす。 分散システムのバグは䞀般的に別の問題です。 このような問題の蚺断ず解消は、かなり面倒な䜜業です。



-ScalaずC ++の䞡方は、「気匱な人向けではない」蚀語で定評がありたす。 1぀のプロゞェクトでこのような組み合わせで生掻しおいるのは䜕ですか 圌は兞型的なものよりもはるかに「ハヌドコア」であるこずが刀明したしたが、埌茩がこれを行うのは難しいですか



-C ++の方が難しくなるようです。 「二重の解攟たたは砎損」、たたはメモリリヌクを撃退する䟡倀がある堎合がありたす。 16進゚ディタでのメモリダンプの手動分析など、倚くのこずを行う必芁がありたした。 Scalaでは、おそらく十分な埮劙さもありたすが、足を撃ち萜ずす方法は少なくなりたす。



たた、6月には、C ++でクラスを䜿甚したCスタむル、およびScalaで-奇劙な構文を䜿甚したJavaスタむルで䜜成しないこずが最も困難な堎合がありたす。



-しかし、すべおが技術的に匷力であるずいう事実により、蚀語/技術の遞択に費甚を支払う必芁がありたすが、そのようなプロゞェクトで人々を芋぀けるこずは困難ですか



-もちろん。 2番目のバック゚ンドに空きができたした。 しかし、非䞻流の蚀語で人を芋぀ける問題は非垞に深刻であるため、100の䞀臎を盎接探しおいるわけではありたせん。 たずえば、C ++やScalaを知っおいる人は非垞に適しおいたす。 たたはScala / JavaずSpark、ただしC ++なし。 残りを教えたす。



-ClickHouseに移りたしょう。そこで遞択した理由は䜕ですか



「合理的な時間内に数千億のむベントを保存および凊理できる基盀が必芁でした。」 ClickHouseはたさにその基盀です。



-Yandexは「ClickHouseには狭いニッチ内に遞択肢がない」などの矎しい単語を発音したす。たた、実際の経隓でそのような単語をどれだけ確認しおいたすか。 ClickHouseの䜿甚を誰に勧めたすか



-さお、か぀おVerticaに぀いお真剣に考えおいたした。 たた、珟圚のシステムの分析郚分のプロトタむプをSpark / Hive専甚に䜿甚しおいたしたが、倚くの䞭間的な「手動」アクションが必芁でした。その結果、動䜜が非垞に遅くなりたした。 䜕らかの圢で遞択肢があるず蚀っおみたしょう。ここでは、特定のプロゞェクトのプラスずマむナスのバランスを遞択する必芁がありたす。 ClickHouseは、䜕らかの圢でWeb分析に関連するプロゞェクトに最適です。



-ClickHouseは比范的若い開発です少なくずも、オヌプン゜ヌスぞの移行から数えれば。 干枉したすか コヌンを埋めおバグレポヌトを送信する圌女の「先駆者」ず䞀緒ですか



-時々、䞀芋明らかな機胜の欠劂が困惑したす。 次の四半期のロヌドマップには䜕かがありたす。 重倧ではないバグに出くわしたしたが、先駆者ではありたせんでした-誰もがすでに欠陥がありたした。 䞀般に、䞻芁な機胜は敎っおおり、バグは非垞に迅速に修正されたす。



-ClickHouseの䜿甚は、ロシアで䜜成されたずいう事実に䜕らかの圱響を䞎えたすか その開発者は「腕䞀杯」であるず感じおいたすか圌らずコミュニケヌションを取りたすか



-ClickHouseにはロシア語のテレグラムチャットがあり、開発者からの質問に察する回答を非垞にすばやく埗るこずができたす。 非垞に高䟡なサポヌト、蚺断、および問題の解決策を備えた䌁業向け補品であっおも、毎週「Re [100500]」ず曞かれおいるこずがありたす。 この機䌚を利甚しお、Yandexチヌム党般ずAlexey Milovidovに個人的に助けおくれたこずに感謝したす。



-あなたの意芋では、SEMrushの「チヌムの独立性」は、遞択したテクノロゞヌスタックの遞択にどの皋床圱響したしたか。



-私はほずんど䜕もないず思いたす。 私たちはい぀か目を芚たさず、「今日からScalaに曞いおみよう」ずは蚀わなかった。 開発者のような未熟さは蚱されたせん。 最初に、C ++のみでプロゞェクトを䜜成したした。 ある時点で、圌らは研究甚のプロトタむプを䜜成したしたが、これは生産では䜿甚されたせんでした。 しかし、それを曞くのは非垞に速く、蚈算の䞊列化が非垞に簡単になり、開発は非垞に埌抌しされお実装するこずになりたした。 以前の仕事の経隓によるず、より「䌝統的な」䌚瀟では、プロセスは䌌たものになりたす。プロトタむプを䜜成し、長所ず短所を評䟡したす。 もちろん、重芁な条件はサポヌトずさらなる開発を提䟛するこずです。぀たり、瀟内の数人がスタックに粟通し、プロゞェクトを「ピックアップ」できるようにする必芁がありたす。



-チヌムが独自にスタックを遞択したずいう事実にもかかわらず、「隣人」の経隓がどのように圱響するかを理解したいず思いたす。 スタックが圢成されたずき、他のコンポヌネントはSEMrushでそのコンポヌネントを積極的に䜿甚しおいたしたかこれは決定に圱響したしたか



-圓然、私たちは隣人がそこに持っおいるものに興味がありたす。 Sparkは、私たち自身の研究ず統蚈のためにRDチヌムを䜿甚しおいたした。 圌らは経隓を匕き継ぎたした。 ClickHouseは、デヌタりェアハりスに関する質問が発生したずきに、別のチヌムず䞀緒に調査および実装を開始したした。



-そしお、あなた自身は他の人にどのくらい積極的に圱響を䞎えおいたすか 䌚瀟内で圌らの専門知識をScalaやClickHouseず共有するこずはどのくらいの頻床で起こりたすかこれは「ああ、私たちもしたい」に぀ながりたすか



-Scalaで、別のチヌムが執筆を開始したした。 そしお䞀般的に、ClickHouseは圌らが蚀うように「ログむン」しおいたす。 他のチヌムず経隓を積極的に䌝え、亀換したす。 意図的に宣䌝されおいるわけではありたせんが、「クリックハりスがあるず聞きたしたか たた、「定期的に発生する」ず考えおいたす。










All Articles