30개 이상의 Hadoop 인터뷰 질문 및 답변

게시 됨: 2022-12-01

Forbes의 통계에 따르면 전 세계 조직의 최대 90%가 빅 데이터 분석을 사용하여 투자 보고서를 작성합니다.

빅 데이터의 인기가 높아짐에 따라 Hadoop 채용 기회가 이전보다 더 많이 증가하고 있습니다.

따라서 Hadoop 전문가 역할을 수행하는 데 도움이 되도록 이 문서에서 수집한 인터뷰 질문과 답변을 사용하여 인터뷰를 통과할 수 있습니다.

아마도 Hadoop 및 Big Data 역할을 유리하게 만드는 급여 범위와 같은 사실을 알면 그 인터뷰에 합격하도록 동기를 부여할 것입니다.

  • Indeed.com에 따르면 미국에 기반을 둔 Big Data Hadoop 개발자의 평균 급여는 $144,000입니다.
  • itjobswatch.co.uk에 따르면 Big Data Hadoop 개발자의 평균 급여는 £66,750입니다.
  • 인도에서는 Indeed.com 소식통에 따르면 평균 급여는 16,000,000루피입니다.

수익성이 있다고 생각하지 않습니까? 이제 본격적으로 Hadoop에 대해 알아보겠습니다.

하둡이란 무엇입니까?

Hadoop은 프로그래밍 모델을 사용하여 대규모 데이터 집합을 처리, 저장 및 분석하는 Java로 작성된 널리 사용되는 프레임워크입니다.

기본적으로 그 디자인은 단일 서버에서 로컬 컴퓨팅 및 스토리지를 제공하는 여러 시스템으로 확장할 수 있습니다. 또한 응용 프로그램 계층 오류를 감지하고 처리하여 고가용성 서비스를 제공하는 기능은 Hadoop을 매우 안정적으로 만듭니다.

자주 묻는 Hadoop 면접 질문과 그에 대한 정답을 바로 살펴보겠습니다.

Hadoop의 인터뷰 질문과 답변

하둡

Hadoop의 저장 장치는 무엇입니까?

답변 : Hadoop의 저장 장치를 HDFS(Hadoop Distributed File System)라고 합니다.

NAS(Network Attached Storage)는 Hadoop 분산 파일 시스템과 어떻게 다릅니까?

답변 : Hadoop의 기본 스토리지인 HDFS는 상용 하드웨어를 사용하여 대용량 파일을 저장하는 분산 파일 시스템입니다. 반면에 NAS는 이기종 클라이언트 그룹에 데이터 액세스 권한을 제공하는 파일 수준 컴퓨터 데이터 스토리지 서버입니다.

NAS의 데이터 스토리지는 전용 하드웨어에 있지만 HDFS는 Hadoop 클러스터 내의 모든 시스템에 데이터 블록을 분산합니다.

NAS는 고가의 고급 스토리지 장치를 사용하는 반면 HDFS에 사용되는 상용 하드웨어는 비용 효율적입니다.

NAS는 계산 데이터를 별도로 저장하므로 MapReduce에 적합하지 않습니다. 반대로 HDFS의 디자인은 MapReduce 프레임워크와 함께 작동할 수 있도록 합니다. 계산은 데이터에서 계산으로 이동하는 대신 MapReduce 프레임워크의 데이터로 이동합니다.

하둡과 셔플링의 맵리듀스 설명

답변 : MapReduce는 Hadoop 클러스터 내에서 수백에서 수천 개의 서버에 걸쳐 대규모 확장성을 가능하게 하기 위해 Hadoop 프로그램이 수행하는 두 가지 별개의 작업을 말합니다. 반면에 셔플링은 Mapper의 지도 출력을 MapReduce의 필요한 Reducer로 전송합니다.

Apache Pig 아키텍처 살펴보기

Apache-Pig-아키텍처
아파치 피그 아키텍처

답변 : Apache Pig 아키텍처에는 Pig Latin 스크립트를 사용하여 대규모 데이터 세트를 처리하고 분석하는 Pig Latin 인터프리터가 있습니다.

또한 Apache pig는 조인, 로드, 필터, 정렬 및 그룹화와 같은 데이터 작업이 수행되는 데이터 집합 집합으로 구성됩니다.

Pig 라틴 언어는 필요한 작업을 수행하는 Pig 스크립트를 작성하기 위해 Grant 쉘, UDF 및 임베디드와 같은 실행 메커니즘을 사용합니다.

Pig는 이렇게 작성된 스크립트를 Map-Reduce 작업 시리즈로 변환하여 프로그래머의 작업을 더 쉽게 만듭니다.

Apache Pig 아키텍처 구성 요소에는 다음이 포함됩니다.

  • 파서 – 스크립트의 구문을 확인하고 유형 검사를 수행하여 Pig 스크립트를 처리합니다. 파서의 출력은 Pig Latin의 명령문과 논리 연산자를 나타내며 DAG(directed acyclic graph)라고 합니다.
  • 옵티마이저 – 옵티마이저는 DAG에서 프로젝션 및 푸시다운과 같은 논리적 최적화를 구현합니다.
  • 컴파일러 – 옵티마이저에서 일련의 MapReduce 작업으로 최적화된 논리적 계획을 컴파일합니다.
  • 실행 엔진 – 원하는 출력으로의 MapReduce 작업의 최종 실행이 발생하는 곳입니다.
  • 실행 모드 – Apache pig의 실행 모드에는 주로 로컬 및 맵 축소가 포함됩니다.

로컬 메타스토어와 원격 메타스토어의 차이점 나열

답변 : Local Metastore의 Metastore 서비스는 Hive와 동일한 JVM에서 실행되지만 동일한 시스템 또는 원격 시스템의 별도 프로세스에서 실행되는 데이터베이스에 연결됩니다. 반면에 Remote Metastore의 Metastore는 Hive 서비스 JVM과 별도로 자체 JVM에서 실행됩니다.

빅 데이터의 5V는 ​​무엇입니까?

답변 : 이 5개의 V는 빅 데이터의 주요 특징을 나타냅니다. 여기에는 다음이 포함됩니다.

  • 가치 : 빅 데이터는 데이터 운영에 빅 데이터를 사용하는 조직에 높은 ROI(투자 수익률)의 상당한 이점을 제공하고자 합니다. 빅 데이터는 통찰력 발견 및 패턴 인식에서 이러한 가치를 가져오며, 그 결과 무엇보다 더 강력한 고객 관계와 더 효과적인 운영을 제공합니다.
  • 다양성 : 수집된 데이터 유형의 이질성을 나타냅니다. 다양한 형식에는 CSV, 비디오, 오디오 등이 포함됩니다.
  • 볼륨 : 조직에서 관리하고 분석하는 데이터의 상당한 양과 크기를 정의합니다. 이 데이터는 기하급수적인 성장을 보여줍니다.
  • 속도 : 데이터 증가에 대한 기하급수적 속도입니다.
  • 진실성 : 진실성은 데이터가 불완전하거나 일관성이 없기 때문에 사용 가능한 데이터가 '불확실'하거나 '부정확'한 정도를 나타냅니다.

Pig Latin의 다양한 데이터 유형을 설명합니다.

답변 : Pig Latin의 데이터 유형에는 원자 데이터 유형과 복합 데이터 유형이 포함됩니다.

Atomic 데이터 유형은 다른 모든 언어에서 사용되는 기본 데이터 유형입니다. 여기에는 다음이 포함됩니다.

  • Int – 이 데이터 유형은 부호 있는 32비트 정수를 정의합니다. 예: 13
  • Long – Long은 64비트 정수를 정의합니다. 예: 10L
  • Float – 부호 있는 32비트 부동 소수점을 정의합니다. 예: 2.5F
  • Double – 부호 있는 64비트 부동 소수점을 정의합니다. 예: 23.4
  • 부울 – 부울 값을 정의합니다. 포함: 참/거짓
  • Datetime – 날짜-시간 값을 정의합니다. 예: 1980-01-01T00:00.00.000+00:00

복합 데이터 유형에는 다음이 포함됩니다.

  • Map-Map은 키-값 쌍 집합을 나타냅니다. 예: ['색상'#'노랑', '숫자'#3]
  • Bag – 튜플 집합의 모음이며 '{}' 기호를 사용합니다. 예: {(헨리, 32), (키티, 47)}
  • 튜플 – 튜플은 정렬된 필드 집합을 정의합니다. 예 : (나이, 33세)

Apache Oozie 및 Apache ZooKeeper는 무엇입니까?

답변 : Apache Oozie는 Hadoop 작업을 단일 논리적 작업으로 예약하고 바인딩하는 Hadoop 스케줄러입니다.

반면 Apache Zookeeper는 분산 환경에서 다양한 서비스를 조정합니다. 동기화, 그룹화, 구성 유지 관리 및 이름 지정과 같은 간단한 서비스를 간단히 노출하여 개발자 시간을 절약합니다. Apache Zookeeper는 대기 및 리더 선택을 위한 기성품 지원도 제공합니다.

MapReduce 작업에서 Combiner, RecordReader 및 Partitioner의 역할은 무엇입니까?

대답 : 컴바이너는 미니 리듀서처럼 작동합니다. 지도 작업에서 데이터를 수신하고 작업한 다음 데이터의 출력을 감속기 단계로 전달합니다.

RecordHeader는 InputSplit과 통신하고 매퍼가 적절하게 읽을 수 있도록 데이터를 키-값 쌍으로 변환합니다.

파티셔너는 데이터를 요약하는 데 필요한 감소된 작업 수를 결정하고 결합기 출력이 리듀서로 전송되는 방식을 확인하는 역할을 합니다. Partitioner는 중간 맵 출력의 키 분할도 제어합니다.

Hadoop의 다양한 벤더별 배포판을 언급하십시오.

답변 : Hadoop 기능을 확장하는 다양한 공급업체는 다음과 같습니다.

  • IBM 오픈 플랫폼.
  • Cloudera CDH 하둡 배포판
  • MapR Hadoop 배포
  • 아마존 탄력적 맵리듀스
  • Hortonworks 데이터 플랫폼(HDP)
  • 중요한 빅 데이터 제품군
  • Datastax 기업 분석
  • Microsoft Azure의 HDInsight – 클라우드 기반 Hadoop 배포.

HDFS가 내결함성이 있는 이유는 무엇입니까?

답변 : HDFS는 데이터를 서로 다른 DataNode에 복제하여 내결함성을 부여합니다. 다른 노드에 데이터를 저장하면 한 모드가 충돌할 때 다른 노드에서 검색할 수 있습니다.

페더레이션과 고가용성을 구분합니다.

대답 : HDFS 연합은 다른 노드가 충돌할 때 한 노드에서 지속적인 데이터 흐름을 허용하는 내결함성을 제공합니다. 반면에 고가용성은 활성 NameNode와 보조 NameNode를 첫 번째 및 두 번째 시스템에 개별적으로 구성하는 두 개의 개별 시스템이 필요합니다.

페더레이션은 관련 없는 NameNode를 무제한으로 가질 수 있는 반면, 고가용성에서는 지속적으로 작동하는 두 개의 관련 NameNode(활성 및 대기)만 사용할 수 있습니다.

연합의 NameNode는 메타데이터 풀을 공유하며 각 NameNode에는 전용 풀이 있습니다. 그러나 고가용성에서 활성 NameNode는 한 번에 하나씩 실행되는 반면 대기 NameNode는 유휴 상태를 유지하고 가끔 메타데이터만 업데이트합니다.

블록 및 파일 시스템 상태의 상태를 찾는 방법은 무엇입니까?

답변 : 루트 사용자 수준과 개별 디렉터리 모두에서 hdfs fsck / 명령을 사용하여 HDFS 파일 시스템의 상태를 확인합니다.

사용 중인 HDFS fsck 명령:

 hdfs fsck / -files --blocks –locations> dfs-fsck.log

명령 설명:

  • -files: 확인 중인 파일을 인쇄합니다.
  • –위치: 확인하는 동안 모든 블록의 위치를 ​​인쇄합니다.

블록 상태를 확인하는 명령:

 hdfs fsck <path> -files -blocks
  • <경로>: 여기에 전달된 경로에서 검사를 시작합니다.
  • – 블록: 확인하는 동안 파일 블록을 인쇄합니다.

rmadmin-refreshNodes 및 dfsadmin-refreshNodes 명령은 언제 사용합니까?

답변 : 이 두 명령은 시운전 중이나 노드 시운전이 완료되었을 때 노드 정보를 새로 고칠 때 유용합니다.

dfsadmin-refreshNodes 명령은 HDFS 클라이언트를 실행하고 NameNode의 노드 구성을 새로 고칩니다. 반면 rmadmin-refreshNodes 명령은 ResourceManager의 관리 작업을 실행합니다.

체크포인트란?

답변 : 체크포인트는 파일 시스템의 마지막 변경 사항을 최신 FSImage와 병합하여 편집 로그 파일이 작게 유지되어 NameNode 시작 프로세스를 빠르게 하는 작업입니다. 체크포인트는 Secondary NameNode에서 발생합니다.

대규모 데이터 세트가 있는 애플리케이션에 HDFS를 사용하는 이유는 무엇입니까?

답변 : HDFS는 분산 파일 시스템을 구현하는 DataNode 및 NameNode 아키텍처를 제공합니다.

이 두 가지 아키텍처는 확장성이 뛰어난 Hadoop 클러스터를 통해 데이터에 대한 고성능 액세스를 제공합니다. NameNode는 파일 시스템의 메타데이터를 RAM에 저장하므로 메모리 양이 HDFS 파일 시스템 파일 수를 제한합니다.

'jps' 명령의 기능은 무엇입니까?

답변 : JPS(Java Virtual Machine Process Status) 명령은 NodeManager, DataNode, NameNode 및 ResourceManager를 비롯한 특정 Hadoop 데몬이 실행 중인지 여부를 확인합니다. 이 명령은 호스트에서 운영 노드를 확인하기 위해 루트에서 실행하는 데 필요합니다.

Hadoop에서 '투기 실행'이란 무엇입니까?

답변 : Hadoop의 마스터 노드가 감지된 느린 작업을 수정하는 대신 다른 노드에서 백업 작업(투기 작업)으로 동일한 작업의 다른 인스턴스를 시작하는 프로세스입니다. 예측 실행은 특히 집약적인 워크로드 환경에서 많은 시간을 절약합니다.

Hadoop을 실행할 수 있는 세 가지 모드를 지정하십시오.

답변 : Hadoop이 실행되는 세 가지 기본 노드는 다음과 같습니다.

  • 독립형 노드는 로컬 FileSystem 및 단일 Java 프로세스를 사용하여 Hadoop 서비스를 실행하는 기본 모드입니다.
  • 의사 분산 노드는 단일 ode Hadoop 배포를 사용하여 모든 Hadoop 서비스를 실행합니다.
  • 완전 분산 노드는 별도의 노드를 사용하여 Hadoop 마스터 및 슬레이브 서비스를 실행합니다.

UDF란 무엇입니까?

답변 : UDF(사용자 정의 함수)를 사용하면 Impala 쿼리 중에 열 값을 처리하는 데 사용할 수 있는 사용자 지정 함수를 코딩할 수 있습니다.

DistCp란?

답변 : DistCp 또는 Distributed Copy는 간단히 말해 대규모 클러스터 간 또는 클러스터 내 데이터 복사에 유용한 도구입니다. MapReduce를 사용하여 DistCp는 오류 처리, 복구 및 보고와 같은 다른 작업 중에서 대량 데이터의 분산 복사본을 효과적으로 구현합니다.

Hive의 Metastore에 대해 설명합니다.

답변 : Hive 메타스토어는 Hive 테이블에 대한 Apache Hive 메타데이터를 MySQL과 같은 관계형 데이터베이스에 저장하는 서비스입니다. 메타데이터에 대한 cent 액세스를 허용하는 메타스토어 서비스 API를 제공합니다.

RDD를 정의합니다.

대답 : Resilient Distributed Datasets를 나타내는 RDD는 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'을 설명합니다.

답변 : WAL(Write Ahead Log)은 HBase의 MemStore 데이터 변경 사항을 파일 기반 스토리지에 기록하는 복구 프로토콜입니다. WAL은 RegionalServer가 충돌하거나 MemStore를 플러시하기 전에 이 데이터를 복구합니다.

YARN은 Hadoop MapReduce를 대체합니까?

답변 : 아니요, YARN은 Hadoop MapReduce 대체품이 아닙니다. 대신 Hadoop 2.0 또는 MapReduce 2라는 강력한 기술이 MapReduce를 지원합니다.

HIVE에서 ORDER BY와 SORT BY의 차이점은 무엇입니까?

답변 : 두 명령 모두 Hive에서 정렬된 방식으로 데이터를 가져 SORT BY 를 사용한 결과는 부분적으로만 정렬될 수 있습니다.

또한 SORT BY 는 행을 정렬하기 위해 리듀서가 필요합니다. 최종 출력에 필요한 이러한 감속기는 여러 개일 수도 있습니다. 이 경우 최종 출력이 부분적으로 정렬될 수 있습니다.

반면에 ORDER BY 는 출력의 총 주문에 대해 하나의 리듀서만 필요합니다. 총 정렬 시간을 줄이는 LIMIT 키워드를 사용할 수도 있습니다.

스파크와 하둡의 차이점은 무엇입니까?

대답 : 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 인터뷰 질문과 답변은 다가오는 인터뷰를 에이스로 만드는 데 도움이 될 것입니다.

다음으로 Big Data 및 Hadoop을 학습할 수 있는 좋은 리소스를 확인할 수 있습니다.

행운을 빌어 요!