30以上のHadoopインタビューの質問と回答
公開: 2022-12-01Forbes の統計によると、世界の組織の最大 90% がビッグデータ分析を使用して投資レポートを作成しています。
ビッグデータの人気が高まるにつれて、Hadoop の雇用機会が以前よりも急増しています。
したがって、Hadoop エキスパートの役割を取得するために、この記事でまとめた面接の質問と回答を使用して、面接を通過することができます。
おそらく、Hadoop とビッグデータの役割を有利にする給与範囲などの事実を知っていると、その面接に合格する動機になりますよね?
- Indeed.com によると、米国を拠点とするビッグデータ Hadoop 開発者の平均給与は 144,000 ドルです。
- itjobswatch.co.uk によると、ビッグデータ Hadoop 開発者の平均給与は 66,750 ポンドです。
- インドでは、indeed.com の情報源によると、彼らの平均給与は 16,00,000 ルピーです。
儲かると思いませんか? それでは、Hadoop について学びましょう。
Hadoop とは何ですか?
Hadoop は Java で書かれた人気のあるフレームワークで、プログラミング モデルを使用して大量のデータ セットを処理、保存、分析します。
デフォルトでは、その設計により、単一のサーバーから、ローカルの計算とストレージを提供する複数のマシンにスケールアップできます。 さらに、アプリケーション層の障害を検出して処理し、サービスの可用性を高める機能により、Hadoop は非常に信頼できるものになります。
よくある Hadoop インタビューの質問とその正解に飛び込みましょう。
Hadoop のインタビューに関する質問と回答

Hadoop のストレージ ユニットとは何ですか?
回答: Hadoop のストレージ ユニットは、Hadoop 分散ファイル システム (HDFS) と呼ばれます。
Network Attached Storage と Hadoop 分散ファイル システムの違いは何ですか?
回答: Hadoop のプライマリ ストレージである HDFS は、汎用ハードウェアを使用して大量のファイルを格納する分散ファイル システムです。 一方、NAS はファイル レベルのコンピューター データ ストレージ サーバーであり、異種のクライアント グループにデータへのアクセスを提供します。
NAS のデータ ストレージは専用のハードウェア上にありますが、HDFS はデータ ブロックを Hadoop クラスター内のすべてのマシンに分散します。
NAS はかなり高価なハイエンド ストレージ デバイスを使用しますが、HDFS で使用されるコモディティ ハードウェアは費用対効果に優れています。
NAS は計算とは別にデータを保存するため、MapReduce には適していません。 それどころか、HDFS の設計により、MapReduce フレームワークと連携できます。 計算は、データから計算ではなく、MapReduce フレームワークのデータに移動します。
Hadoop での MapReduce とシャッフルについて説明する
回答: MapReduce は、Hadoop クラスタ内の数百から数千のサーバーにわたって大規模なスケーラビリティを実現するために Hadoop プログラムが実行する 2 つの異なるタスクを指します。 一方、シャッフルは、マップ出力を Mapper から MapReduce の必要な Reducer に転送します。
Apache Pig アーキテクチャを垣間見る

回答: Apache Pig アーキテクチャには、Pig Latin スクリプトを使用して大規模なデータセットを処理および分析する Pig Latin インタープリターがあります。
Apache pig は、結合、読み込み、フィルター、並べ替え、グループ化などのデータ操作が実行される一連のデータセットで構成されています。
Pig Latin 言語は、必要なタスクを実行する Pig スクリプトを作成するために、Grant シェル、UDF、埋め込みなどの実行メカニズムを使用します。
Pig は、これらのスクリプトを Map-Reduce ジョブ シリーズに変換することで、プログラマーの作業を容易にします。
Apache Pig アーキテクチャ コンポーネントには、次のものが含まれます。
- パーサー– スクリプトの構文をチェックし、型チェックを実行することで、Pig スクリプトを処理します。 パーサーの出力は、Pig Latin のステートメントと論理演算子を表し、DAG (有向非巡回グラフ) と呼ばれます。
- オプティマイザー– オプティマイザーは、DAG での射影やプッシュダウンなどの論理的な最適化を実装します。
- コンパイラ– 最適化された論理プランをオプティマイザから一連の MapReduce ジョブにコンパイルします。
- 実行エンジン– これは、目的の出力への MapReduce ジョブの最終的な実行が行われる場所です。
- 実行モード– Apache pig の実行モードには、主にローカルと Map Reduce が含まれます。
ローカル メタストアとリモート メタストアの違いを挙げる
回答: ローカル メタストアのメタストア サービスは、Hive と同じ JVM で実行されますが、同じマシンまたはリモート マシン上の別のプロセスで実行されているデータベースに接続します。 一方、リモート メタストアのメタストアは、Hive サービス JVM とは別の JVM で実行されます。
ビッグデータの 5 つの V とは?
回答: これらの 5 つの V は、ビッグ データの主な特徴を表しています。 それらには以下が含まれます:
- 価値: ビッグデータは、データ操作でビッグデータを使用する組織に、高い投資収益率 (ROI) から大きな利益をもたらすことを目指しています。 ビッグデータは、その洞察の発見とパターン認識からこの価値をもたらし、他の利点の中でも特に、より強力な顧客関係とより効果的な運用をもたらします。
- Variety : これは、収集されたデータ型の種類の不均一性を表します。 さまざまな形式には、CSV、ビデオ、オーディオなどがあります。
- ボリューム: これは、組織によって管理および分析されるデータの重要な量とサイズを定義します。 このデータは、指数関数的な成長を示しています。
- 速度: これは、データの増加に対する指数関数的な速度です。
- 真実性 : 真実性とは、データが不完全または矛盾しているために、利用可能なデータが「不確実」または「不正確」である方法を指します。
Pig Latin のさまざまなデータ型について説明します。
回答: Pig Latin のデータ型には、アトミック データ型と複合データ型が含まれます。
Atomic データ型は、他のすべての言語で使用される基本的なデータ型です。 それらには次のものが含まれます。
- Int – このデータ型は、符号付き 32 ビット整数を定義します。 例: 13
- Long – Long は 64 ビット整数を定義します。 例:10L
- Float – 符号付き 32 ビット浮動小数点を定義します。 例:2.5F
- Double – 符号付き 64 ビット浮動小数点を定義します。 例: 23.4
- Boolean – ブール値を定義します。 内容: 真/偽
- Datetime – 日時値を定義します。 例: 1980-01-01T00:00.00.000+00:00
複雑なデータ型には次のものがあります。
- Map-Map は、キーと値のペア セットを指します。 例: ['color'#'yellow', 'number'#3]
- バッグ – タプルのセットのコレクションであり、'{}' 記号を使用します。 例: {(ヘンリー、32歳)、(キティ、47歳)}
- タプル – タプルは、フィールドの順序付けられたセットを定義します。 例:(年齢、33歳)
Apache Oozie および Apache ZooKeeper とは何ですか?
回答: Apache Oozie は、Hadoop ジョブを単一の論理作業としてスケジューリングおよびバインドする Hadoop スケジューラです。
一方、Apache Zookeeper は、分散環境でさまざまなサービスと連携します。 同期、グループ化、構成のメンテナンス、ネーミングなどの単純なサービスを公開するだけで、開発者の時間を節約できます。 Apache Zookeeper は、キューイングとリーダー選出の既成のサポートも提供します。
MapReduce 操作におけるコンバイナー、レコードリーダー、およびパーティショナーの役割は何ですか?
回答: コンバイナーはミニ レデューサーのように機能します。 map タスクからデータを受け取って処理し、データの出力を reducer フェーズに渡します。
RecordHeader は InputSplit と通信し、マッパーが適切に読み取れるようにデータをキーと値のペアに変換します。
パーティショナーは、データを要約するために必要な削減されたタスクの数を決定し、コンバイナーの出力がレデューサーに送信される方法を確認する責任があります。 パーティショナーは、中間マップ出力のキー パーティショニングも制御します。
Hadoop のさまざまなベンダー固有のディストリビューションについて言及します。
回答: Hadoop 機能を拡張するさまざまなベンダーには、次のものがあります。
- IBM オープン プラットフォーム。
- Cloudera CDH Hadoop ディストリビューション
- MapR Hadoop 配布
- Amazon Elastic MapReduce
- Hortonworks データ プラットフォーム (HDP)
- Pivotal ビッグデータ スイート
- Datastax エンタープライズ アナリティクス
- Microsoft Azure の HDInsight – クラウドベースの Hadoop ディストリビューション。
HDFS フォールト トレラントの理由
回答: HDFS は異なる DataNode にデータをレプリケートするため、フォールト トレラントになります。 異なるノードにデータを保存すると、1 つのモードがクラッシュしたときに他のノードから取得できます。
フェデレーションと高可用性を区別します。
回答: HDFS フェデレーションは、別のノードがクラッシュしたときに、1 つのノードで継続的なデータ フローを可能にするフォールト トレランスを提供します。 一方、高可用性を実現するには、1 台目と 2 台目のマシンでアクティブ NameNode とセカンダリ NameNode を別々に構成する 2 台の個別のマシンが必要になります。

フェデレーションでは、関連のない NameNode を無制限に持つことができますが、高可用性では、継続的に動作するアクティブとスタンバイの 2 つの関連する NameNode のみを使用できます。
フェデレーション内の NameNode はメタデータ プールを共有し、各 NameNode は専用のプールを持ちます。 ただし、高可用性では、アクティブ NameNode は一度に 1 つずつ実行されますが、スタンバイ NameNode はアイドル状態のままで、メタデータを時々更新するだけです。
ブロックのステータスとファイルシステムの状態を確認する方法は?
回答: root ユーザー レベルと個々のディレクトリの両方でhdfs fsck /
コマンドを使用して、HDFS ファイルシステムのヘルス ステータスを確認します。
使用中の HDFS fsck コマンド:
hdfs fsck / -files --blocks –locations> dfs-fsck.log
コマンドの説明:
- -files: チェックしているファイルを印刷します。
- -locations: チェック中にすべてのブロックの位置を出力します。
ブロックのステータスを確認するコマンド:
hdfs fsck <path> -files -blocks
- <path>: ここで渡されたパスからチェックを開始します。
- – ブロック: チェック中にファイル ブロックを出力します
rmadmin-refreshNodes および dfsadmin-refreshNodes コマンドはいつ使用しますか?
回答: これら 2 つのコマンドは、試運転中またはノードの試運転が完了したときにノード情報を更新するのに役立ちます。
dfsadmin-refreshNodes
コマンドは、HDFS クライアントを実行し、NameNode のノード構成を更新します。 一方、 rmadmin-refreshNodes
コマンドは、ResourceManager の管理タスクを実行します。
チェックポイントとは?
回答: チェックポイントは、ファイル システムの最後の変更を最新の FSImage とマージする操作です。これにより、編集ログ ファイルは、NameNode の開始プロセスを高速化するのに十分小さいままになります。 セカンダリ NameNode でチェックポイントが発生します。
大規模なデータ セットを持つアプリケーションに HDFS を使用する理由
回答: HDFS は、分散ファイル システムを実装する DataNode および NameNode アーキテクチャを提供します。
これら 2 つのアーキテクチャは、Hadoop の高度にスケーラブルなクラスターを介してデータへの高性能アクセスを提供します。 その NameNode は、ファイル システムのメタデータを RAM に格納します。これにより、HDFS ファイル システム ファイルの数が制限されるメモリ量が発生します。
「jps」コマンドは何をしますか?
回答: Java 仮想マシン プロセス ステータス (JPS) コマンドは、NodeManager、DataNode、NameNode、ResourceManager などの特定の Hadoop デーモンが実行されているかどうかを確認します。 このコマンドは、ホストで稼働しているノードを確認するためにルートから実行する必要があります。
Hadoop の「投機的実行」とは何ですか?
回答: これは、Hadoop のマスター ノードが、検出された遅いタスクを修正する代わりに、別のノードでバックアップ タスク (投機的タスク) として同じタスクの別のインスタンスを起動するプロセスです。 投機的実行は、特に集中的なワークロード環境では、多くの時間を節約します。
Hadoop を実行できる 3 つのモードを挙げてください。
回答: Hadoop が実行される 3 つのプライマリ ノードは次のとおりです。
- スタンドアロン ノードは、ローカル ファイル システムと単一の Java プロセスを使用して Hadoop サービスを実行するデフォルト モードです。
- 疑似分散ノードは、単一の ode Hadoop デプロイメントを使用してすべての Hadoop サービスを実行します。
- 完全分散ノードは、個別のノードを使用して Hadoop マスター サービスとスレーブ サービスを実行します。
UDF とは何ですか?
回答: UDF (ユーザー定義関数) を使用すると、Impala クエリ中に列の値を処理するために使用できるカスタム関数をコーディングできます。
DistCpとは何ですか?
回答: DistCp または Distributed Copy は、要するに、大規模なクラスタ間またはクラスタ内のデータ コピーに役立つツールです。 DistCp は MapReduce を使用して、大量のデータの分散コピーを効果的に実装し、エラー処理、回復、レポート作成などのタスクも実行します。
Hive のメタストアについて説明する。
回答: Hive メタストアは、Hive テーブルの Apache Hive メタデータを MySQL などのリレーショナル データベースに格納するサービスです。 これは、メタデータへのセント アクセスを可能にするメタストア サービス API を提供します。
RDD を定義します。
回答: RDD (Resilient Distributed Datasets の略) は、Spark のデータ構造であり、さまざまなクラスター ノードで計算するデータ要素の不変の分散コレクションです。
ネイティブ ライブラリを YARN ジョブに含めるにはどうすればよいですか?
回答: これは、 -Djava.library. path
コマンドで-Djava.library. path
オプションを使用するか、次の形式を使用して .bashrc ファイルにLD+LIBRARY_PATH
を設定します。
<property> <name>mapreduce.map.env</name> <value>LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/my/libs</value> </property>
HBaseの「WAL」について説明します。
回答: Write Ahead Log (WAL) は、HBase 内の MemStore データの変更をファイルベースのストレージに記録する回復プロトコルです。 RegionalServer がクラッシュした場合、または MemStore をフラッシュする前に、WAL はこのデータを回復します。
YARN は Hadoop MapReduce の代替品ですか?
回答: いいえ、YARN は Hadoop MapReduce の代替品ではありません。 代わりに、Hadoop 2.0 または MapReduce 2 と呼ばれる強力なテクノロジが MapReduce をサポートしています。
HIVE での ORDER BY と SORT BY の違いは何ですか?
回答: どちらのコマンドも Hive では並べ替えられた方法でデータをフェッチしますが、 SORT BY
を使用した結果は部分的にしか並べられない場合があります。
さらに、 SORT BY
では、行を並べ替えるためにリデューサーが必要です。 最終出力に必要なこれらのレデューサーも複数ある場合があります。 この場合、最終的な出力は部分的に順序付けられることがあります。
一方、 ORDER BY
では、出力の合計順序に対して 1 つのレデューサーのみが必要です。 合計ソート時間を短縮するLIMIT
キーワードを使用することもできます。
Spark と Hadoop の違いは何ですか?
回答: Hadoop と Spark はどちらも分散処理フレームワークですが、主な違いはその処理です。 Hadoop はバッチ処理に効率的ですが、Spark はリアルタイム データ処理に効率的です。
さらに、Hadoop は主に HDFS に対してファイルの読み取りと書き込みを行いますが、Spark は Resilient Distributed Dataset の概念を使用して RAM 内のデータを処理します。
レイテンシに基づくと、Hadoop はデータを処理するためのインタラクティブ モードのない高レイテンシ コンピューティング フレームワークであり、Spark はデータをインタラクティブに処理する低レイテンシ コンピューティング フレームワークです。
Sqoop と Flume を比較してください。
回答: Sqoop と Flume は、さまざまなソースから収集されたデータを収集し、そのデータを HDFS にロードする Hadoop ツールです。
- Sqoop(SQL-to-Hadoop) は Teradata、MySQL、Oracle などのデータベースから構造化データを抽出しますが、Flume はデータベース ソースから非構造化データを抽出して HDFS にロードするのに役立ちます。
- 駆動型イベントに関しては、Flume はイベント駆動型ですが、Sqoop はイベント駆動型ではありません。
- Sqoop は、コネクタが別のデータ ソースへの接続方法を認識しているコネクタ ベースのアーキテクチャを使用します。 Flume はエージェントベースのアーキテクチャを使用しており、書かれたコードはデータの取得を担当するエージェントです。
- Flume の分散型の性質により、データを簡単に収集および集約できます。 Sqoop は並列データ転送に役立ちます。これにより、出力が複数のファイルになります。
BloomMapFile について説明します。
回答: BloomMapFile は、MapFile クラスを拡張するクラスであり、キーのメンバーシップ テストを迅速に行う動的なブルーム フィルターを使用します。
HiveQL と PigLatin の違いを挙げる。
回答: HiveQL は SQL に似た宣言型言語ですが、PigLatin は高レベルの手続き型データ フロー言語です。
データクレンジングとは?
回答: データ クレンジングは、データセット内の不正確、不完全、破損、重複、不適切な形式のデータなど、特定されたデータ エラーを除去または修正するための重要なプロセスです。
このプロセスは、データの品質を向上させ、組織内での効率的な意思決定に必要な、より正確で一貫性のある信頼できる情報を提供することを目的としています。
結論
現在、ビッグ データと Hadoop の仕事の機会が急増しているため、入社の可能性を高めたいと思うかもしれません。この記事の Hadoop 面接の質問と回答は、次の面接で成功するのに役立ちます。
次に、ビッグデータと Hadoop を学習するための優れたリソースを確認できます。
頑張ってください!