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の競争力と倫理について助言する委員会を設立

ブログ    
ブログ    

推薦する

Microsoft、SAP、Oracle などの世界的なソフトウェア大手は、生成 AI をどのように取り入れているのでしょうか?

2023年は、生成AIテクノロジーが大きな進歩を遂げる年です。ChatGPTなどのAIツールはテク...

AIとIoT:この2つの強力なテクノロジーが将来のビジネスモデルをどう変えるのか

無人ドローンや機械学習が一般的になる前、ジェームズ・キャメロンは1984年に自身の夢のプロジェクトで...

世界中で人気のGPT-3がなぜ人々の仕事を破壊しているのか?

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

大きな論争の中、ニューヨーク警察はロボット犬をボストン・ダイナミクスに返却した

ニューヨーク市警察は、その「ユートピア的」技術に対する激しい批判を受け、米国企業ボストン・ダイナミク...

「手抜きアルゴリズム」は大企業をターゲットにしており、これがそれだ

[[342088]]基本的なデータ構造の統合は、大規模システムの基礎となります。たとえば、Redis...

「量子超越性」の後、GoogleはTensorFlowの量子バージョンを強力にオープンソース化

Googleは2019年10月に「量子超越性」の検証に関する論文をNatureに掲載した後、3月9日...

Ruijie NetworksとMidea Smartは戦略的提携を結び、スマート小売端末の商業化と普及に取り組んでいます。

6月30日、瑞傑ネットワークス株式会社(以下、瑞傑ネットワークス)と合肥美的智能科技有限公司(以下...

AIを拡張するための3つの成功要因

AIからより多くの利益を得るには、管理者はテクノロジーの使用方法を変える必要があります。 [[333...

9月30日付けでマイクロソフトがAIサービス規約を更新:リバースエンジニアリング等に利用不可

マイクロソフトは8月16日、AI利用規約を発表し、9月30日に正式に発効すると発表した。新しい用語は...

「人工知能+学習」は教育をより良くするのでしょうか?

「教育は死んだが、学習は不滅である。」半世紀前、アメリカの教育思想家イリイチは著書『脱学校社会』の...

...

...

あなたは人工知能の前で「透明な人」ですか?

プライバシーがないと感じる人が増えているのは紛れもない事実です。最も直接的な例は、買い物をしたい場合...

国防総省は、今後数日間の出来事を予測するために人工知能を活用している。

海外メディアCNETによると、米軍はビッグデータと人工知能を活用して近い将来の出来事を予測しようとし...