Last Updated: 25 Jan 2021
ビッグデータ開発者やアパッチスパーク開発者の就職面接で尋ねられる質問は、Spark Ecosystem Componentsに基づいて以下のカテゴリーのいずれかに分類できる – と思います。
なお、この他に。
|
業界からの需要が高まる中、以下のプロジェクトでの経験がキーとなる。 ビッグデータを高速に処理するために、Apache Sparkは企業への導入に大きな勢いを見せています。 Hadoop MapReduce はビッグ データを高速に処理するニーズを十分に満たしていましたが、開発者の間では、数秒以内にリアルタイムでデータ処理を行う中規模ビッグ データ セットの優れた市場に追いつくために、より柔軟なツールを習得する必要性が常にありました。 この記事では、ビッグデータ業界の専門家と共同で、学生やプロフェッショナルがビッグデータ開発者の面接を突破し、さまざまな業界セグメントにおけるSpark開発者の人材供給に貢献する、トップ50のApache Spark面接の質問と回答のリストを作成しました。
Click here to view the list of 50+ solved, end-to-end Big Data and Machine Learning Project Solutions (reusable code + videos)
Amazon、Shopify、Alibaba、eBayなどの企業がビッグデータの展開にApache Sparkを採用しており、Spark開発者の需要は飛躍的に増加すると予想されます。 Google Trendsでは、さまざまな業界の企業におけるSparkの採用と認知度が「ホッケースティックのような成長」であることを確認しています。 Sparkは、イベントストリーミングを処理し、Hadoop MapReduceよりも高速にビッグデータを処理する能力があるため、人気が出てきています。 2017年は、Apache Sparkのスキルを磨き、データ分析の専門家、データサイエンティスト、またはビッグデータ開発者として実りあるキャリアを追求するのに最適な時期です。
These Apache Spark Projectsは、Spark開発者の職務に応募する資格が得られるスキルを身につけるのに役立ちます。
Top 50 Apache Spark Interview Questions and Answers
Preparation is very important to reduce the nervous energy at any big data job interview.ビッグデータの面接で緊張するエネルギーを減らすために、準備は非常に重要です。 ビッグデータの専門知識やスキルを持っているかに関わらず、すべての候補者は、ビッグデータの仕事の面接に直面することを恐れている。 しかし、ビッグデータやスパーク開発者の面接でどのような質問がされるかを正確に予測する方法はありませんが、これらのApacheスパーク面接の質問と回答は、これらの面接のためのより良い準備に役立つかもしれません。
1) Compare Spark vs Hadoop MapReduce
Criteria |
Hadoop MapReduce |
Apache Spark |
メモリ |
Hadoopクラスタのメモリを最大に活用できていません。 | RDD を使ってメモリ上にデータを保存しよう。 |
Disk usage |
MapReduce はディスク指向。 | Spark はデータをメモリ内にキャッシュして低レイテンシーを確保。 |
Processing |
バッチ処理のみサポート | スパークストリーミングによるリアルタイム処理もサポートします。 |
Installation |
Hadoopにバインドされます。 | Hadoopにバインドされません。 |
シンプル、柔軟、パフォーマンスはHadoopに対するSpark使用の大きな利点である。
- Spark は、データを Resilient Distributed Databases (RDD) に配置してインメモリに保存するため、ビッグデータ処理において Hadoop より 100 倍も高速になります。
- Spark はインタラクティブモードがあるので、プログラミングが簡単です。
- 何か問題が発生したときに、系統グラフを使って完全に回復することができます。 Sharkは、データベースのバックグラウンドを持つ人のために開発されたツールで、HiveのようなSQLインターフェースを通じてScala MLibの機能にアクセスすることができます。
3) Spark が処理において Hadoop を凌駕するいくつかのユースケースを挙げてください。
- Spark はデータのリアルタイムクエリには Hadoop よりも好ましい。
- ストリーム処理 – ログを処理し、ライブストリームで不正を検知して警告を発するには、Apache Spark が最適なソリューションです。 これらのベクトルは、スペースを節約するために、非ゼロエントリを格納するために使用されます。 RDD は、フォールト トレラントな方法で、大規模なクラスタ上のインメモリ計算に使用されます。 RDD は読み取り専用で、レコードのコレクションです。
- Immutable – RDD は変更できません。
Build a Big Data Project Portfolio by working on real-time apache spark projects
6) RDDのコンテキストで変換とアクションについて説明します。
変換は、新しいRDDを作成するために要求に応じて実行する関数である。 すべての変換はアクションに続いています。 変換の例には、map、filter、reduceByKey があります。
アクションは、RDD の計算または変換の結果です。 アクションが実行されると、RDD からのデータはローカル マシンに戻ります。 アクションの例としては、reduce、collect、first、takeなどがあります。
7) ビッグデータアプリケーションを開発するためにApache Sparkがサポートする言語は何ですか。
Scala、Java、Python、R、Clojure
8) Sparkを使ってCassandraデータベースに格納されたデータにアクセスし、分析することは可能ですか。
はい、Spark Cassandra Connectorを使っていれば可能です
9) Apache Mesos上でApache Sparkを実行できますか。
はい、Apache Spark は Mesos によって管理されるハードウェア クラスター上で実行できます。
10) Apache Spark の異なるクラスターマネージャーについて説明します。
- YARN
- Apache Mesos – 豊富なリソース スケジューリング能力を備え、他のアプリケーションと一緒に Spark を実行するには好適です。 コマンド間のCPU割り当てをスケールダウンするため、複数のユーザーがインタラクティブシェルを実行する場合に有利です。
- Standalone deployments – 実行するだけの新しいデプロイメントに適しており、セットアップが簡単です。
11) SparkとApache Mesosはどう接続できますか。
Spark と Mesosを接続するには –
- Mesos と接続するには spark driver programを設定することです。 Spark バイナリパッケージは、Mesos からアクセス可能な場所にある必要があります。 (or)
- Apache Spark を Apache Mesos と同じ場所にインストールし、プロパティ ‘spark.mesos.executor.home’ がインストールされている場所を指すように設定します。
12) Spark で作業するときに、データ転送を最小限に抑えるにはどうしたらよいでしょうか。
データ転送を最小限に抑えてシャッフルしないことは、高速かつ信頼できる方法で実行する spark プログラムを作成するのに役立ちます。 Apache Spark で作業する際にデータ転送を最小化できるさまざまな方法は次のとおりです。
- Using Broadcast Variable- Broadcast variable は、小さいまたは大きい RDD 間の結合の効率性を高めます。
- Using Accumulators – Accumulators helps update the values of variables in parallel while executing.
- The most common way is avoid operations ByKey, repartition or any other operations that trigger shuffles.
13). Apache Spark で作業する場合、なぜブロードキャスト変数が必要なのでしょうか。
これらは読み取り専用の変数で、すべてのマシン上のメモリ キャッシュに存在します。 Spark で作業する場合、ブロードキャスト変数を使用すると、タスクごとに変数のコピーを出荷する必要がなくなるので、データをより速く処理することができます。 ブロードキャスト変数は、メモリ内にルックアップテーブルを保存するのに役立ち、RDDルックアップ()と比較して検索効率が向上します。
14) Hadoopと一緒にSparkとMesosを実行することは可能ですか。 Mesosは、SparkまたはHadoopのいずれかにタスクを割り当てる統一スケジューラーとして機能します。
15) 系統グラフとは何ですか?
SparkのRDDは、1つまたは複数の他のRDDに依存しています。 RDD間の依存関係を表現したものは、リネージグラフとして知られています。 系統グラフ情報は、各RDDをオンデマンドで計算するために使用され、永続的なRDDの一部が失われたときに、失われたデータを系統グラフ情報を使用して回復することができます。
16) Sparkで蓄積したメタデータを扱うために自動クリーンアップをトリガーするにはどうすればよいですか。cleaner.ttl’を設定するか、長時間実行するジョブを異なるバッチに分割し、中間結果をディスクに書き込むことでクリーンアップをトリガーできます。
17) Sparkエコシステムを構成する主要ライブラリについて説明します
- Spark MLib- クラスタリング、回帰、分類などの一般的に使用される学習アルゴリズム用のSparkの機械学習ライブラリです。
- Spark Streaming – このライブラリは、リアルタイムのストリーミングデータを処理するために使用されます。
- Spark GraphX – joinVertices, subgraph, aggregateMessagesなどの基本演算子を備えたグラフ並列計算用のSpark APIです。
18) SparkをApache Mesosで使用する利点は何ですか。
さまざまなSparkインスタンス間のスケーラブルなパーティショニング、Sparkと他のビッグデータフレームワーク間の動的パーティショニングを実現します。 Spark Streamingライブラリは、RDDに対する変換がデータのスライディングウィンドウ上で適用されるウィンドウ型計算を提供します。
20) DStreamとは何か?
Discretized Streamはデータのストリームを表現するResilient Distributed Databasesのシーケンスである。 DStream は Apache Kafka、HDFS、Apache Flume のようなさまざまなソースから作成することができます。 DStreamは、新しいDStreamを生成する
- 変換と、外部システムにデータを書き込む
- 出力操作の2つの操作を持っています。
21) Sparkアプリケーションを実行するとき、YARNクラスターのすべてのノードにSparkをインストールする必要がありますか。
SparkはYARNまたはMesosクラスタの上で、クラスタに影響を与えずに実行できるため、YARNまたはMesosでジョブを実行する場合、Sparkをインストールする必要はありません。
22) Catalystフレームワークとは?
23) Apache Sparkを実稼働で使用している企業をいくつか挙げてください。
Pinterest, Conviva, Shopify, Open Table
24) 異なるクラスタフレームワーク間でメモリ速度で信頼性の高いファイル共有を可能にするのはどのスパークライブラリですか。
Tachyon
Work On Interesting Data Science Projects using Spark to build an impressive project portfolio!
25) BlinkDBはなぜ使われるのですか?
BlinkDB は膨大なデータに対して対話的にSQLクエリーを実行できるクエリーエンジンで、クエリー結果に意味のあるエラーバーが表示されるのが特徴です。 BlinkDBは、ユーザーが「クエリの正確さ」と「応答時間」のバランスをとるのに役立ちます。
26) HadoopとSparkを使いやすさの点で比較するとどうでしょうか?
Hadoop MapReduceにはJavaでのプログラミングが必要ですが、これは困難です。 PigやHiveの構文を覚えるのに時間がかかる。 Sparkには、Java、Python、Scalaなどのさまざまな言語用の対話型APIがあり、SQL愛好家のためのSpark SQLなどのSharkも含まれているため、Hadoopよりも比較的簡単に使うことができます。
- 複数のクラスタを使用してWebサービスを何度も叩く。
- 分散させずにローカルノードですべてを実行する。
開発者は、Sparkが処理のためにメモリを使用するので、これに注意する必要があります。
28) Parquetファイルの利点は何ですか。
Parquet ファイルはカラムナー形式のファイルで、以下のことに役立ちます。
- I/O 操作の制限
- 少ないスペース
- 必要な列だけをフェッチします。
- Parquet file
- JSON Datasets
- Hive tables
30) SparkはどのようにHadoopを使用しますか?
Sparkは独自のクラスタ管理計算を持っていて主にストレージにHadoopを使っているようです。
For the complete list of solved Big Data projects – CLICK HERE
31) Apache Spark の主な特徴で気に入っているものは何でしょうか。
- Spark は、グラフ アルゴリズム、機械学習、ストリーミング データなどの高度な分析オプションを提供します。
- Java、Scala、Python、R など複数の言語による組み込み API を備えており、ディスク上で 10 倍、メモリ上で 100 倍速く Hadoop クラスタでアプリケーションを実行できるよう支援する、優れたパフォーマンス向上があります。
32) Pair RDDで何を理解していますか?
Spark のRDDではキー/値のペアを使用して特別な操作を実行でき、このようなRDDはPair RDDと呼ばれます。 Pair RDDを使用すると、ユーザーは各キーに並行してアクセスすることができます。 各キーに基づいてデータを収集する reduceByKey () メソッドと、同じキーを持つ要素に基づいて異なる RDD を一緒に結合する join () メソッドがあります。
33) プロジェクトでは、Hadoop MapReduce と Apache Spark のどちらを選びますか?
この質問への答えは与えられたプロジェクトのシナリオによって異なります。 しかし、Spark は大量の RAM を使用し、効果的な結果を得るには専用のマシンが必要です。
34) DStreams上のさまざまなタイプの変換について説明してください。
- Stateless Transformations- バッチの処理は、前のバッチの出力に依存しない。 例 – map (), reduceByKey (), filter ().
- Stateful Transformations- バッチの処理は、前のバッチの中間結果に依存する。 例 -スライディングウィンドウに依存する変換。
35) Apache Sparkの一般的な使用例について説明する
Apache Sparkは主に
- 反復機械学習に使用されています。
- Interactive data analytics and processing.
- Stream processing
- Sensor data processing
36) Apache Spark は強化学習に適していますか?
38) 他のRDDに存在するキーを持つ要素を削除するにはどうすればよいですか。
Use the subtractByKey () function
39) persist() と cache() の違いは何ですか。
persist() ではユーザーがストレージレベルを特定できますが、cache () ではデフォルトストレージレベルが使われます。
40) Apache Spark の永続化のさまざまなレベルは何ですか。
Apache Spark はさまざまなシャッフル操作から中間データを自動的に永続化しますが、再利用する予定の場合、ユーザーが RDD の persist () メソッドを呼び出すことがしばしば提案されます。 Spark には、RDD をディスクまたはメモリに保存するためのさまざまな永続化レベルがあり、異なるレプリケーション レベルで両方の組み合わせとして保存されます。
Spark のさまざまなストレージ/永続性レベルは –
- MEMORY_ONLY
- MEMORY_ONLY_SER
- MEMORY_AND_DISK
- MEMORY_AND_DISK_SER.DISK
- MEMORY_AND_DISK_SER, DISK_ONLY
- OFF_HEAP
41) Sparkはスタンドアローンモードで監視とログをどう処理しますか?
Spark には、スタンドアロン モードでクラスタを監視するための Web ベースのユーザー インターフェイスがあり、クラスタとジョブの統計情報が表示されます。 各ジョブのログ出力は、スレーブノードのワークディレクトリに書き込まれます。
42) Apache Spark はチェックポイントを提供しますか。
線分グラフは常に障害から RDD を回復するために便利ですが、RDD が長い線分鎖を持っていると、これは通常、時間がかかります。 Spark には、チェックポイントのための API、すなわち持続するための REPLICATE フラグがあります。 しかし、どのデータをチェックポイントするかは、ユーザーが決定します。
43) Hadoop MapReduce 内で Spark ジョブを起動する方法は?
SIMR (Spark in MapReduce) を使用すると、管理者権限を必要とせずに MapReduce 内で任意の spark ジョブを実行できます。
44) Spark で Akka はどう使用しますか?
Spark では Akka は基本的にスケジュール設定に使用されています。 すべてのワーカーは、登録後にマスターにタスクを要求します。 マスターはタスクを割り当てるだけです。 ここでは、Spark はワーカーとマスター間のメッセージングに Akka を使用しています。
45) Apache Spark で高可用性を実現するにはどうすればよいですか。 Apache Sparkではどのようにこれを実現していますか。
Apache Sparkのデータストレージモデルは、RDDをベースとしています。 RDD は、系統を通じてフォールト トレランスを達成するのに役立ちます。 RDD は常に、他のデータセットから構築する方法に関する情報を持っています。 RDDのいずれかのパーティションが障害によって失われた場合、系統はその特定の失われたパーティションのみを構築するのに役立ちます。
47) 分散Sparkアプリケーションのコアコンポーネントについて説明します。
- Driver- RDDを作成し、それに対して変換とアクションを実行するプログラムのメイン()メソッドを実行するプロセス。
- Executor- Sparkジョブの個々のタスクを実行するワーカープロセス。
- Cluster Manager- Sparkのプラグイン可能コンポーネントで、ExecutorとDriversを起動するために。 クラスターマネージャーは、Apache MesosやYARNのような他の外部マネージャーの上でSparkを実行することができます。
48) Lazy Evaluationで何を理解していますか?
Spark はデータに対する操作の仕方で知的である。 与えられたデータセットで操作するように Spark に指示すると、Spark はその指示を聞き入れ、忘れないようにメモを取りますが、最終結果を要求されない限りは何もしません。 RDDに対してmap()のような変換を呼び出しても、操作はすぐには実行されません。 Sparkの変換は、アクションを実行するまで評価されません。 これは、全体のデータ処理ワークフローを最適化するのに役立ちます。) ワーカーノードの定義
クラスタ内のSparkアプリケーションコードを実行できるノードは、ワーカーノードと呼ばれることがあります。 ワーカーノードは、spark-env.sh ファイルで SPARK_WORKER_INSTANCES プロパティを設定することで構成される複数のワーカーを持つことができます。 SPARK_WORKER_INSTANCES プロパティが定義されていない場合、1つのワーカーだけが起動します。
50) SchemaRDD とは何を意味しますか?
各列のデータの種類に関するスキーマ情報を持つ行オブジェクト(基本文字列または整数配列のラッパー)から成る RDD です。
51) Hadoop MapReduceに対してApache Sparkを使用するデメリットは何ですか。
Apache sparkは計算集約型のジョブに対してうまく拡張できず、多くのシステムリソースを消費します。 Apache Spark のインメモリ機能は、ビッグ データをコスト効率よく処理するための大きな障害になることがあります。 また、Sparkは独自のファイル管理システムを持っているため、他のクラウドベースのデータプラットフォームやapache hadoopと統合する必要があります。
52) Apache Spark on YARNを実行しているとき、YARNクラスターのすべてのノードにsparkをインストールする必要がありますか?
No, it is not necessary because Apache Spark runs on top of YARN.
53) Spark アプリケーションの Executor Memory とは何ですか?
Every spark application has same fixed heap size and fixed number of cores for a spark executor.これは、Sparkアプリケーションの実行メモリと同じ意味です。 ヒープ サイズは、-executor-memory フラグの spark.executor.memory プロパティで制御される Spark エグゼキューター メモリと呼ばれるものです。 すべてのsparkアプリケーションは、各ワーカーノード上に1つのエグゼキュータを持ちます。
54) Spark エンジンは何をするのか?
Spark エンジンは、Spark クラスタ全体でデータアプリケーションをスケジュール、分散、監視します。
55) Apache Spark がグラフ処理や機械学習などの低レイテンシーワークロードに適している理由は何ですか?
Apache Spark は、モデル構築とトレーニングを高速化するためにデータをインメモリに保存します。 機械学習アルゴリズムは、結果として最適なモデルを生成するために複数の反復を必要とし、同様に、グラフ アルゴリズムはすべてのノードとエッジを横断します。複数の反復を必要とするこれらの低遅延ワークロードは、パフォーマンスの向上につながる可能性があります。
56) Apache Spark アプリケーションを実行するために Hadoop を起動する必要はありますか?
Spark アプリケーションを実行するために Hadoop を起動することは必須ではありません。 Apache Spark には独立したストレージがないため、Hadoop HDFS を使用しますが、これは必須ではありません。
57) Apache Spark のデフォルトの並列レベルは何ですか?
ユーザーが明示的に指定しない場合、Apache Spark のデフォルトの並列レベルはパーティション数として考慮されます。
58) Spark プログラムの一般的なワークフローについて説明します。
- Spark プログラムの最初のステップは、外部データから入力 RDD を作成することです。
- filter() などのさまざまな RDD 変換を使用して、ビジネス ロジックに基づいて変換された新しい RDD を作成します。
59) 与えられたスパークプログラムにおいて、与えられた操作がTransformationかActionかをどのように識別しますか。
i) 戻り値の型がRDD以外の場合、その操作はActionです。
60) apache sparkの開発者がsparkを使うときによくやる間違いは何ですか?
- シャッフルブロックの必要サイズを維持する。
- spark開発者は有向無サイクルグラフ(DAG)の管理でよく間違う。 平均を計算するために次のようなsparkコードが書かれています。
def ProjectProAvg(x, y):
return (x+y)/2.0;
avg = ProjectPrordd.reduce(ProjectProAvg);上のコードのどこが問題でどう修正するか?
Average functionは可換でも連想でもない。
def sum(x, y):
return x+y;
total =ProjectPrordd.reduce(sum);
avg = total / ProjectPrordd.count();しかし、上記のコードは total が大きくなるとオーバーフローする可能性があります。
cnt = ProjectPrordd.count();
def divideByCnt(x):
return x/cnt;
myrdd1 = ProjectPrordd.map(divideByCnt);
avg = ProjectPrordd.reduce(sum);Q.平均の算出は、以下のようにカウントで割り、それを合算する方法が最適である。 HDFSに巨大な数値のリストがファイルとしてあるとします。 各行には1つの数字があり、私はcom
Spark SQL Interview Questions
1) Spark SQLとHiveの違いを説明してください。
- Spark SQLはHiveより速い。
- Spark SQLはライブラリですが、Hiveはフレームワークです。
- Spark SQLではメタストアの作成は必須ではありませんが、Hiveのメタストアの作成は必須です。
- Spark SQLはスキーマを自動的に推測しますが、Hiveではスキーマは明示的に宣言する必要があります。
Spark Streaming Interview Questions
1) Spark Streamingコンポーネントがリアルタイムデータを処理できるソースをいくつか挙げてください。
Apache Flume, Apache Kafka, Amazon Kinesis
2) Spark Streamingを既に使っている企業をいくつか挙げてください。
3) Spark Streaming APIの抽象化の最下層は何ですか?
DStream.
4) Spark Streamingのレシーバーとは何を意味しますか?
Receivers are special entities in Spark Streaming that consume data from various data sources and move them to Apache Spark.これは、様々なデータソースからデータを受け取り、Apache Sparkに移動する特別なエンティティです。
ビッグデータ・コミュニティに、最も頻繁に尋ねられるApache Sparkインタビューの質問と回答を、以下のコメントで共有するよう呼びかけます – すべての将来の分析専門家のためのビッグデータの就職面接を容易にする。
ノード数は、ハードウェアをベンチマークし、最適なスループット(ネットワーク速度)、メモリ使用量、使用している実行フレームワーク(YARN、スタンドアロン、Mesos)、それらの実行フレームワーク内でスパークと一緒に実行している他のジョブを考慮するなどの複数の要因を考慮して決定することができます。
スパークストリーミングのtranform関数は、開発者がストリームの基礎となるRDDでApache Spark変換を使用できるようにします。Hadoopのmap関数は要素間の変換に使われ、transformを使用して実装できます。理想的には、mapはDstreamの要素に作用し、transformは開発者がDStreamのRDDで作業できるようにします。