初心者向けのApacheSparkチュートリアル:例を使用してApacheSparkを学ぶ

公開: 2020-03-26

目次

序章

小さなスタートアップの顧客ログから巨大な多国籍企業の財務シートまで、データはいたるところにあります。 企業は、この生成されたデータを使用して、ビジネスのパフォーマンスと改善点を理解します。 GartnerResearchのシニアバイスプレジデントであるPeterSondergaard、情報は21世紀の原油であり、分析は燃焼エンジンと見なすことができると述べました。

しかし、企業が成長するにつれて、顧客、利害関係者、ビジネスパートナー、および製品も成長します。 そのため、彼らが処理しなければならないデータの量は膨大になります。

顧客にとってより良い製品を作成するには、このすべてのデータを分析する必要があります。 ただし、1秒あたりに生成されるテラバイトのデータは、Excelシートやログブックを使用して処理することはできません。 巨大なデータセットは、ApacheSparkなどのツールで処理できます

Apache Sparkの紹介を通じて、ソフトウェアの詳細を説明します。

Apache Sparkとは何ですか?

Apache Sparkは、オープンソースのクラスターコンピューティングフレームワークです。 これは基本的に、膨大なデータワークロードとデータセットを処理するために使用されるデータ処理システムです。 大規模なデータセットを迅速に処理し、これらのタスクを複数のシステムに分散してワークロードを軽減できます。 ビッグデータ処理と分散コンピューティングという2つの用語に圧倒されたときに、開発者の負担を軽減するシンプルなAPIを備えています。

Apache Sparkの開発は、Sparkの創設者と見なされているMateiZahariaによるカリフォルニア大学バークレー校のAMPLabでのオープンソース研究プロジェクトとして始まりました2010年、BSDライセンスの下で、プロジェクトはオープンソースになりました。 その後、2013年にApache Software Foundationの下でインキュベートされたプロジェクトになりました。これは、2014年に同社のトッププロジェクトの1つになりました。

2015年、Sparkにはプロジェクトに1000人以上の貢献者がいました。 これにより、 Apache SoftwareFoundationおよびビッグデータの世界で最も活発なプロジェクトの1つになりました2009年以来、200社を超える企業がこのプロジェクトを支援しています。

しかし、なぜこのすべての狂気がスパークを超えているのでしょうか?

これは、Sparkが大量のデータを処理して一度に処理できるためです。 このデータは、接続されている何千もの仮想サーバーまたは物理サーバーに分散できます。 Python、R、Scala、Javaなどのいくつかのプログラミング言語で動作するAPIとライブラリの膨大なセットがあります。 データのストリーミング、グラフ処理などの複雑なタスク、機械学習をサポートします。 また、apache sparkのゲームを変える機能により、その需要は非常に高くなっています。

HadoopのHDFS、Amazon S3などの幅広いデータベースと、MongoDB、Apache HBase、MapR Database、ApacheCassandraなどのNoSQLデータベースをサポートします。 また、ApacheKafkaおよびMapRイベントストアもサポートしています。

ApacheSparkアーキテクチャ

Apache Sparkの紹介を検討した後、その構造について学習します。 Apacheアーキテクチャの詳細をご覧ください。

そのアーキテクチャは明確に定義されており、2つの主要なコンポーネントがあります。

復元力のある分散データセット(RDD)

これは、Sparkクラスターのワーカーノードに格納されているデータ項目のコレクションです。 クラスターは、Sparkをインストールできるマシンの分散コレクションです。 RDDは、障害が発生した場合にデータを修正できるため、復元力と呼ばれます。 これらは、クラスター全体の複数のノードに分散しているため、分散と呼ばれます。

Sparkでは2種類のRDDがサポートされています。

  • HDFS(Hadoop分散ファイルシステム)上のファイルから作成されたHadoopデータセット
  • Scalaコレクションに基づく並列化されたコレクション

RDDは、次の2種類の操作に使用できます。

  • 変換–これらの操作はRDDの作成に使用されます
  • アクション–これらは、Sparkに計算を実行し、結果をドライバーに返すように指示するために使用されます。 ドライバーについては、次のセクションで詳しく説明します

DAG(有向非巡回グラフ)

これは、データに対する一連のアクションと見なすことができます。 それらは頂点とエッジの組み合わせです。 各頂点はRDDを表し、各エッジはそのRDDで実行する必要のある計算を表します。 これは、RDDに適用されるすべての操作を含むグラフです。

これは、一方のノードがもう一方のノードに接続されている場合の有向グラフです。 グラフ内にループやサイクルがないため、グラフは非循環です。 変換が実行されると、元の位置に戻ることはできません。 Apache Sparkの変換は、データパーティションの状態をAからBに変換するアクションです。

では、このアーキテクチャはどのように機能しますか? 見てみましょう。

Apache Sparkアーキテクチャには、2つのプライマリデーモンと1つのクラスターマネージャーがあります これらは–マスターデーモンとワーカーデーモンです。 デーモンは、バックグラウンドプロセスとして実行されるプログラムです。 Sparkのクラスターには、多くのスレーブを含めることができますが、マスターデーモンは1つです。

マスターノードには、Sparkアプリケーションを実行するドライバープログラムがあります。 コードの実行に使用する可能性のあるインタラクティブシェルは、ドライブプログラムとして機能します。 ドライバプログラム内に、Sparkコンテキストが作成されます。 このコンテキストとドライバープログラムは、クラスターマネージャーの助けを借りてジョブを実行します。

ジョブは、多くのタスクに分割された後、ワーカーノードに分散されます。 タスクは、ワーカーノードによってRDDで実行されます。 結果はSparkContextに返されます ワーカーの数を増やすと、ジョブを複数のパーティションに分割して、多くのシステムで並行して実行できます。 これにより、作業負荷が軽減され、ジョブの完了時間が改善されます。

Apache Spark:メリット

これらは、 ApacheSparkを使用する利点です

スピード

ジョブの実行中、データは最初にRDDに保存されます。 したがって、このデータはメモリに保存されるため、すばやくアクセスでき、ジョブの実行が速くなります。 インメモリキャッシングに加えて、Sparkはクエリ実行も最適化しました。 これにより、分析クエリをより高速に実行できます。 非常に高いデータ処理速度が得られます。 大規模なデータを処理する場合、Hadoopよりも100倍高速になる可能性があります。

複数のワークロードの処理

Apache Sparkは、一度に複数のワークロードを処理できます。 これらは、インタラクティブクエリ、グラフ処理、機械学習、リアルタイム分析です。 Sparkアプリケーションは、多くのワークロードを簡単に組み込むことができます。

使いやすさ

Apache Sparkには、大規模なデータセットを処理するための使いやすいAPIがあります。 これには、並列アプリケーションの構築に使用できる100を超える演算子が含まれます。 これらの演算子はデータを変換でき、半構造化データはデータフレームAPIを使用して操作できます。

言語サポート

Sparkは、Java、Python、Scala、Rなどの複数のプログラミング言語をサポートしているため、開発者のお気に入りです。これにより、アプリケーションを開発するための複数のオプションが提供されます。 APIは、必要なコードの量を減らすのに役立つ高レベルのオペレーターの背後に複雑な分散処理テクノロジーを隠すのに役立つため、開発者にとっても非常に便利です。

効率

遅延評価はSparkで実行されます。 これは、RDDSを介して行われるすべての変換が本質的に怠惰であることを意味します。 したがって、これらの変換の結果はすぐには生成されず、既存のRDDから新しいRDDが作成されます。 ユーザーは、Apacheプログラムをいくつかの小さな操作に編成できるため、プログラムの管理性が向上します。

遅延評価により、システムの速度と効率が向上します。

コミュニティサポート

最大のオープンソースビッグデータプロジェクトの1つであり、さまざまな企業の200人以上の開発者が取り組んでいます。 2009年にコミュニティが開始され、それ以来成長を続けています。 したがって、技術的なエラーに直面した場合、開発者によって投稿された解決策をオンラインで見つける可能性があります。

また、Sparkプロジェクトであなたを支援する準備ができている多くのフリーランスまたはフルタイムの開発者を見つけるかもしれません。

リアルタイムストリーミング

Sparkは、リアルタイムデータのストリーミングで有名です これは、コアSparkAPIの拡張であるSparkStreamingによって可能になります。 これにより、データサイエンティストは、 AmazonKinesisやKafkaなどのさまざまなソースからのリアルタイムデータを処理できます 処理されたデータは、データベース、ファイルシステム、ダッシュボードに転送できます。

このプロセスは、 SparkStreamingがデータ障害から迅速に回復できるという意味で効率的です。 負荷分散が向上し、リソースを効率的に使用します。

ApacheSparkのアプリケーション

Apache Sparkとその利点を紹介した、さまざまなアプリケーションについて詳しく学びます。

機械学習

データをメモリに保存し、クエリを繰り返し実行するApache Sparkの機能は、MLアルゴリズムをトレーニングするための優れたオプションになります。 これは、同様のクエリを繰り返し実行すると、可能な限り最良のソリューションを決定するために必要な時間が短縮されるためです。

Sparkの機械学習ライブラリ(MLlib)は、予測分析、分類、感情分析、クラスタリング、次元削減などの高度な分析操作を実行できます。

データ統合

組織内のさまざまなシステムで生成されるデータは、常にクリーンで整理されているとは限りません。 Sparkは、このデータに対してETL操作を実行するための非常に効率的なツールです。 これは、さまざまなソースからデータをプルし、クリーンアップして整理するための操作を実行、抽出、変換、およびロードすることを意味します。 次に、このデータは分析のために別のシステムにロードされます。

インタラクティブ分析

これは、ユーザーがライブデータのデータ分析を実行できるプロセスです。 Spark構造化ストリーミング機能を使用すると、ユーザーはライブデータに対してインタラクティブなクエリを実行できます。 ライブWebセッションでインタラクティブクエリを実行して、Web分析を強化することもできます。 機械学習アルゴリズムは、これらのライブデータストリームにも適用できます。

フォグコンピューティング

IoT(モノのインターネット)は、センサーを備えたさまざまなデバイスから発生する大量のデータを処理することを私たちは知っています。 これにより、相互接続されたデバイスとユーザーのネットワークが作成されます。 しかし、IoTネットワークが拡大し始めると、分散並列処理システムが必要になります。

したがって、データ処理とストレージの分散化は、Sparkとともにフォグコンピューティングを介して行われます。 このため、Sparkは、Spark Streaming、GraphX、MLlibなどの強力なコンポーネントを提供します。 ApacheSparkのアプリケーションの詳細をご覧ください。

結論

Apache Sparkは高速で効果的で、機能が豊富であることを学びました。 そのため、Huawei、Baidu、IBM、JP Morgan Chase、Lockheed Martin、Microsoftなどの企業がビジネスを加速するためにこれを使用しています。 現在、小売、ビジネス、金融サービス、ヘルスケア管理、製造などのさまざまな分野で有名です。

世界がデータにますます依存するようになるにつれて、ApacheSparkは今後もデータ処理のための重要なツールであり続けるでしょう。

ビッグデータについて詳しく知りたい場合は、ビッグデータプログラムのソフトウェア開発スペシャライゼーションのPGディプロマをチェックしてください。このプログラムは、働く専門家向けに設計されており、7つ以上のケーススタディとプロジェクトを提供し、14のプログラミング言語とツール、実践的なハンズオンをカバーしています。ワークショップ、トップ企業との400時間以上の厳格な学習と就職支援。

世界のトップ大学からオンラインでソフトウェア開発コース学びましょう。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

データ主導の技術革命をリードする

400時間以上の学習。 14言語とツール。 IIIT-B同窓生ステータス。
IIITバンガロアからのビッグデータの高度な証明書プログラム