HDInsight에서 Apache Kafka를 사용한 Apache Spark 스트리밍(DStream) 예제

DStreams를 사용하여 HDInsight에서 Apache Kafka 간에 데이터를 스트리밍하기 위해 Apache Spark를 사용하는 방법을 알아봅니다. 이 예제에서는 Spark 클러스터에서 실행되는 Jupyter Notebook을 사용합니다.

참고 항목

이 문서의 단계는 HDInsight의 Spark와 HDInsight의 Kafka 클러스터를 모두 포함하는 Azure 리소스 그룹을 만듭니다. 이러한 클러스터는 모두 Azure Virtual Network에 있으며, 여기서는 Spark 클러스터와 Kafka 클러스터 간에 직접 통신할 수 있습니다.

이 문서의 단계를 완료하는 경우 과도한 요금이 청구되지 않도록 클러스터를 삭제해야 합니다.

Important

이 예에서는 이전 Spark 스트리밍 기술인 DStreams을 사용합니다. 최신 Spark 스트리밍 기능을 사용하는 예제는 Apache Kafka를 사용하는 Spark 구조적 스트리밍 문서를 참조하세요.

클러스터 만들기

HDInsight의 Apache Kafka는 공용 인터넷을 통한 액세스를 Kafka broker에 제공하지 않습니다. Kafka와 통신하는 대상은 Kafka 클러스터의 노드와 동일한 Azure 가상 네트워크에 있어야 합니다. 여기서는 Kafka 클러스터와 Spark 클러스터가 모두 Azure 가상 네트워크에 있습니다. 클러스터 간의 통신 흐름을 보여 주는 다이어그램은 다음과 같습니다.

Diagram of Spark and Kafka clusters in an Azure virtual network.

참고 항목

Kafka 자체는 가상 네트워크 내의 통신으로 제한되지만, 클러스터의 다른 서비스(예: SSH, Ambari)는 인터넷을 통해 액세스할 수 있습니다. HDInsight에서 사용할 수 있는 공용 포트에 대한 자세한 내용은 HDInsight에서 사용하는 포트 및 URI를 참조하세요.

Azure 가상 네트워크, Kafka 클러스터 및 Spark 클러스터를 수동으로 만들 수 있지만 Azure Resource Manager 템플릿을 사용하는 것이 더 쉽습니다. 다음 단계에 따라 Azure 가상 네트워크, Kafka 클러스터 및 Spark 클러스터를 Azure 구독에 배포합니다.

  1. Azure에 로그인하고 Azure Portal에서 템플릿을 열려면 다음 단추를 사용합니다.

    Deploy to Azure button for new cluster

    Warning

    HDInsight에서 Kafka의 사용 가능성을 보장하려면 클러스터에 작업자 노드가 4개 이상 포함되어야 합니다. 이 템플릿은 4개의 작업자 노드를 포함하는 Kafka 클러스터를 만듭니다.

    이 템플릿은 Kafka와 Spark 둘 다에 대해 HDInsight 4.0 클러스터를 만듭니다.

  2. 다음 정보를 사용하여 사용자 지정 배포 섹션의 항목을 채웁니다.

    속성
    Resource group 그룹을 만들거나 기존 그룹을 선택합니다.
    위치 지리적으로 가까운 위치를 선택합니다.
    기본 클러스터 이름 이 값은 Spark 및 Kafka 클러스터의 기본 이름으로 사용됩니다. 예를 들어, hdistreaming를 입력하면 spark-hdistreaming라는 Spark 클러스터와 kafka-hdistreaming라는 Kafka 클러스터가 생성됩니다.
    클러스터 로그인 사용자 이름 Spark 및 Kafka 클러스터의 관리 사용자 이름입니다.
    클러스터 로그인 암호 Spark 및 Kafka 클러스터의 관리자 사용자 암호입니다.
    SSH 사용자 이름 Spark 및 Kafka 클러스터에 만들 SSH 사용자입니다.
    SSH 암호 Spark 및 Kafka 클러스터에 대한 SSH 사용자의 암호입니다.

    HDInsight custom deployment parameters.

  3. 사용 약관을 읽은 다음 위에 명시된 사용 약관에 동의함을 선택합니다.

  4. 마지막으로, 구매를 선택합니다. 클러스터를 만드는 데 약 20분이 걸립니다.

리소스를 만든 후에 요약 페이지가 나타납니다.

Resource group summary for the vnet and clusters.

Important

HDInsight 클러스터의 이름은 spark-BASENAMEkafka-BASENAME이며, 여기서 BASENAME은 템플릿에 제공된 이름입니다. 이후 단계에서 클러스터에 연결할 때 이러한 이름을 사용합니다.

노트북 사용

이 문서에 설명된 예제에 대한 코드는 https://github.com/Azure-Samples/hdinsight-spark-scala-kafka에서 지원됩니다.

클러스터 삭제

Warning

HDInsight 클러스터에 대한 청구는 사용 여부에 관계없이 분 단위로 비례 배분됩니다. 클러스터는 사용한 후에 삭제해야 합니다. HDInsight 클러스터를 삭제하는 방법을 참조하세요.

이 문서의 단계를 수행하면 동일한 Azure 리소스 그룹에 두 클러스터가 모두 만들어지므로 Azure Portal에서 해당 리소스 그룹을 삭제할 수 있습니다. 그룹을 삭제하면 이 문서의 단계를 수행하여 만들어진 모든 리소스, Azure Virtual Network 및 클러스터에서 사용하는 스토리지 계정이 제거됩니다.

다음 단계

이 예제에서는 Spark를 사용하여 Kafka에(서) 쓰고 읽는 방법을 배웠습니다. Kafka를 사용하는 다른 방법을 찾으려면 다음 링크를 사용하세요.