Hadoop、Spark、Hive とはいったい何でしょうか? アルゴリズムを開発するには、これらを学ぶ必要がありますか?

Hadoop、Spark、Hive とはいったい何でしょうか? アルゴリズムを開発するには、これらを学ぶ必要がありますか?

[[422888]]

みなさんこんにちは。私は梁唐です。

最近、多くの新人がアルゴリズム エンジニアになりたいと言っているのに、この職​​種の要件や仕事内容について何も知らないことに気づきました。 Python といくつかの機械学習およびディープラーニング モデルを学習するだけで、この仕事ができると思いました。私の仕事は Python でモデルを書き続けることです。

明らかに、この考えには問題があります。本当にこれをやると、面接に合格して仕事を得たとしても、非常に惨めな思いをすることになります。なぜなら、あれこれ知らないことばかりで、やることすべてが難しく、習得に長い時間がかかることに気づくからです。しかし、仕事に対処するためだけに行うこのような土壇場での学習は、深く取り組むのが難しいことが多く、常に何かをパッチしているような感じになります。

今日は、アルゴリズム エンジニアの基本的なスキルについて説明し、アルゴリズムとモデル以外に何を学ぶ必要があるかを見ていきます。

ハドゥープ

1 つ目はもちろん Hadoop ですが、Hadoop はテクノロジーではなく、ビッグデータ フレームワークです。ロゴは黄色い象で、プロジェクトの娘のおもちゃの作者にちなんで名付けられたと言われている。

長年の開発を経て、Hadoop フレームワークは現在非常に成熟し、大きなファミリーを生み出しました。どれくらい大きいのでしょうか? Google で写真を見つけました。ご覧いただければ、自分が知っている範囲と聞いたことのない範囲がわかります。

もちろん、アルゴリズム エンジニアにとって、Hadoop ファミリーのすべてを理解する必要はなく、いくつかに焦点を当てるだけで十分です。

ハードディスク

1 つ目は、Hadoop フレームワークの分散ファイルシステムである HDFS です。産業シナリオでは、データの量が非常に大きく、TB または PB レベルになることがよくあります。このような膨大な量のデータは、当然ながら単一のディスクに保存することはできません。分散して保存し、異なる部分に分割して別々に保存する必要があります。 HDFS を通じてこれを簡単に実現し、いくつかの簡単なシェル コマンドを使用して大規模なデータを管理できます。

HDFS は内部的にブロックに保存され、データの正確性を最大限に確保するように設計された厳格なフォールト トレラント メカニズムを備えています。一般的に、HDFS は、モデル トレーニング データなど、高いレイテンシを必要としないオフライン データを保存するために使用されます。その特徴は、ストレージ容量が強力であるが、読み取り速度が遅く、その間の遅延が長いことです。

これは、トレーニング データの規模が非常に大きい場合が多く、ユーザーのリアルタイムのオンライン行動をモデルに必要な入力に変換するには、多数の計算ステップが必要になるためです。これにより、膨大な計算負荷がかかるため、このようなデータの場合、オフライン処理に HDFS がよく使用されます。複数の処理ステップを実行するデータ処理フローを設計し、各ステップの中間データを HDFS に保存します。

モデルをトレーニングする際、HDF をマウントすることでテンソルを直接読み取ってトレーニングします。

マップリデュース

HDFS は Hadoop のストレージ システムです。Hadoop は MapReduce というコンピューティング システムも立ち上げました。

前回の記事で MapReduce の原理を紹介しました。これは実は非常に単純で、データ計算プロセスを 2 つのステップに抽象化します。 1 つのステップは map と呼ばれ、もう 1 つのステップは Reduce と呼ばれます。

マップ ステップはデータをマップします。たとえば、大きな JSON ファイルから必要なフィールドを読み取ります。このステップでは、JSON からいくつかのフィールドを取得します。

削減ステップは要約することです。マップ段階で得られた結果を、平均や中央値などを計算するなど、アイデアに従って収集します。

このアイデアの優れた点は、map と Reduce の両方を分散方式で実行できることです。たとえば、map ステージでは、処理のために HDFS 内の各ファイルを読み取るための map を設定できます。マップ フェーズが終了した後、複数のリデューサーを起動してマップ結果を処理することもできます。これにより、プロセス全体が可能な限り同時に実行され、データ処理速度が確保されます。

MapReduce は 10 年以上前に提案されましたが、廃止されることはなく、今でも多くのシナリオで広く使用されています。

ハイブ

Hive も Hadoop ファミリーのコアメンバーです。そのアイデアも非常に巧妙で、プログラマーにとって非常に有益な機能を果たします。

HDFS と MapReduce を使用すれば、実際にはほとんどすべてのビッグ データ コンピューティング シナリオを処理するのに十分ですが、十分であるということは、扱いやすいことを意味するわけではありません。いくつかのシナリオはあまり使い勝手がよくありません。たとえば、ユーザーのクリック データと製品データの 2 つのデータ セットを関連付ける必要があります。ユーザーがクリックした製品情報を取得する必要があります。

MapReduce を使用してこのようなことを実行するのは非常に面倒で、大量のコードを記述する必要があることがわかります。そこで、ある人が突然、HDFS と MapReduce を使用して、よりユーザーフレンドリーなデータ処理システムを作れないかと考えました。たとえば、すべてのデータをフォーマットしてから、SQL を使用してデータベースのようにデータをクエリして処理する、といったことです。こうして Hive が誕生しました。

Hive の基盤となるコンピューティング フレームワークは MapReduce ですが、テーブル構造により、以前は複雑だった多くの操作が大幅に簡素化されました。特に、データ テーブル間の結合やグループ化などの操作は、以前は MapReduce コードを大量に記述する必要がありましたが、今では数行の SQL で実行できます。

しかし、Hive は結局のところデータベースではなく、その使用には独自のユニークなトリックがいくつかあります。たとえば、データの偏りを回避したり、適切なメモリ シャーディングを設定したり、UDF を使用したりします。

SQL 構文を知っているだけでは、Hive をうまく記述するには不十分です。より深い理解が必要です。

スパーク

Spark といえば、多くの学生が長い間耳にしてきたと思います。これは非常に有名なオープンソースのクラスター コンピューティング フレームワークであり、分散コンピューティング フレームワークとしても理解できます。

Spark は MapReduce に基づいて MapReduce のいくつかの問題を最適化します。たとえば、MapReduce の各操作の後、データはディスクに保存されるため、IO オーバーヘッドが膨大になります。

Spark は、インメモリ コンピューティング テクノロジを使用してディスクへの書き込みを最小限に抑えます。技術的な詳細を理解していなくても問題ありません。その計算パフォーマンスが MapReduce よりもはるかに高速であることを知っておくだけで十分です。一般的に言えば、計算速度は MapReduce の 10 倍以上です。また、Spark は HDFS をネイティブでサポートしているため、ほとんどの企業はデータ ストレージに HDFS を使用し、データ操作に Spark を使用しています。

Hadoop が Hive をリリースした後、Spark も独自の Spark SQL をリリースしました。しかし、その後のHiveはMapReduceの代わりにSparkをコンピューティングエンジンとして使用することもサポートしており、両者のパフォーマンスの差は非常に小さいです。個人的にはまだHiveの方が少し好きです。結局のところ、書くのが便利です。

コンピューティングフレームワークに加えて、Spark は MLlib などのいくつかの機械学習ライブラリとも互換性がありますが、私は使用していません。結局のところ、機械学習の時代はほぼ終わりました。使用シナリオはもうほとんどないので、興味があれば学んでみてください。

要約する

最後に、簡単にまとめましょう。一般的に言えば、有能なアルゴリズム エンジニアになりたいのであれば、Hadoop、MapReduce、Hive について多少なりとも知っておく必要があります。原理のレベルまで習得できるとは言いませんが、少なくとも使用でき、何が起こっているのか大まかに把握できる必要があります。

これは、産業界と研究室の最大の違いでもあります。結局のところ、学校での実験データの量はそれほど多くないため、メモリに直接保存できます。そのため、データ処理では一般的にnumpy + pandasを使用しますが、会社ではpandasはほとんど使用されていません。結局のところ、データの量がメモリに格納するには大きすぎるため、ビッグデータコンピューティングプラットフォームを使用して解決する必要があります。

はい、これですべてです。読んでいただきありがとうございました。

この記事はWeChatの公開アカウント「Coder Liang」から転載したもので、以下のQRコードからフォローできます。この記事を転載する場合は、Coder Liang の公式アカウントまでご連絡ください。

<<:  人工知能と機械学習における13の共通概念

>>:  米政府、AIの競争力と倫理について助言する委員会を設立

ブログ    
ブログ    

推薦する

Facebook がひっそりと AI 技術ツールを開発: 自動的にコードをスキャンして脆弱性を発見

北京時間9月14日朝のニュースによると、FacebookはSapFixと呼ばれる人工知能(AI)ツー...

...

...

...

ガートナー:テクノロジープロバイダーの33%が2年以内にAIに100万ドル以上を投資する

ガートナーの新しい調査*によると、人工知能 (AI) 技術計画を持つテクノロジーおよびサービス プロ...

低迷期を経て復活を遂げ、人工知能の波が押し寄せている!

[51CTO.comより引用] 近年、コンピュータ技術は急速に発展しており、人工知能はその操作性と...

...

...

NLP に革命を起こす 3 つの AI スタートアップ

ディープラーニングは自然言語処理において驚くべき進歩を遂げました。 Explosion、Huggin...

...

技術革新により、AI人材が全国各地で活躍できるようになった

人力の60倍の速さで作業する送電線検査画像「認識者」、ベテラン並みの監視ビデオ「品質検査員」、さまざ...

人工知能の現状と今後の発展はどのようなものでしょうか?

まず、人工知能の現在の開発状況を理解しましょう。人工知能技術は現在、急速な発展期にあります。雨後の筍...

...

Google は交通信号に AI を導入して汚染を削減

タイミングの悪い信号は貴重な時間を無駄にするだけではありません。 Google の最高サステナビリテ...