Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
Data Science

/

Data Engineering

Kafka & Spark を活用したリアルタイムデータレイク

初心者のための Kafka & Spark リアルタイムパイプライン入門講座。 コアコンセプトからアーキテクチャまでマスターするためのオールインワン講座です。

  • hyunjinkim
실시간
데이터처리
데이터파이프라인
Kafka
Apache Spark
pyspark
data-lake

学習した受講者のレビュー

こんなことが学べます

  • Github Actionsと AWS Code Deployで CI/CD 実装

  • Kafka Broker, Confluent Producer & Consumer

  • Prometheus & Grafana を利用した Kafka Dashboard モニタリング

  • Catalog 管理のための Spark & Hive Metastore

  • Spark Streamingを利用した実践プロジェクト実装

  • Kafka & Spark, Zookeeper & Yarn の 可用性テスト

リアルタイムデータパイプライン、なぜ学ぶべきなのか?


リアルタイムデータパイプラインの構築を通じて迅速な分析と意思決定を支援することは、選択ではなく必須です。

  • リアルタイム個人化マーケティング & 推薦

  • リアルタイムトレンド分析

  • リアルタイムセキュリティ脅威検知および対応



特にAIが基本となった昨今では、AIを活用したリアルタイム推薦、検知、翻訳など無限の事例が存在し、このようなアーキテクチャの実装のために、ますますリアルタイムデータパイプラインが求められています。


そこで準備しました。

最も人気のあるStreaming処理の組み合わせの一つであるKafka + Spark基盤のリアルタイムパイプライン

Kafka & Spark は基本から一歩ずつ、パイプライン実装を超えてアーキテクチャ観点からの設計方法まで準備しました。

この講義の特徴

📌 ローカルマシン上の単一構成はNo!トレンドはクラウドです。AWS Cloudを活用します。

📌 CI/CDは基本ですよね?GitHub ActionsとAWS Code Deployを通じてCI/CDを構成します。

[[SPAN_1]]📌[[/SPAN_2]] 基本からゆっくりと、しかし[[SPAN_2]]実習と課題[[/SPAN_2]]を通じて講義内容が内在化できるようにお手伝いします。

📌 サーバー クラスター構成からリアルタイムパイプライン構成および 可用性テストまで All in One 構成

👍こんな方におすすめです

リアルタイムデータパイプラインを学びたいです。
データパイプラインには興味があるものの、リアルタイム処理は経験したことがない方

DataLakeについて知りたいです。
Cloud上に構築されるDataLakeがどのように実装されるのかを学びたい方

アーキテクトとして成長したいです。
インフラ設計からコードレベルまで大容量処理が可能で堅牢なアーキテクチャ実装が気になる方

受講後には

  • Kafka Brokerサービスの基本原理の理解、可用性保証を理解し、これを基盤としてBrokerサービスを扱えるようになります。

  • Kafka Producer/Consumerの基本原理から高級オプションまで理解し、大容量環境でのパフォーマンスと整合性間のトレードオフ理解を通じて堅牢なApplicationを作成できるようになります。

  • Sparkが性能を発揮できる条件について理解し、性能を最適化できる技法を基盤としてApplicationを作成できるようになります。

  • AWS S3、Glue、Athenaなど複数のサービスとSparkサービスとの連携を通じて、パイプラインの多様性を理解することができます。

では、どのような内容を扱うのですか?


  1. 今やトレンドはクラウドです。EC2サーバーを利用して実戦と同じようにクラスターを構成してみます。

  2. Kafka & Sparkは基本からゆっくりと学びます。

  3. AWSのS3、Glue、Athenaサービスを通じてDatalake on AWSの基本概念を学びます。



パイプラインは収集から活用まで区分して見ることができます。

各段階でどのツールをどのように使用するか、どのように連携するかを明確に把握する必要があります。

したがって、KafkaとSparkを単純に学ぶだけにとどまりません。

最終的に実際のパイプラインを構築してみて

その過程でCI/CD、可用性テスト、問題解決と性能向上などの方法を学びます。

カリキュラム

  1. データレイクの概念


  • Lambda

  • Kappa Architecture

  • パイプライン設計

  1. Kafka基礎


  • ブローカー

  • Kafka Producer

  • Kafka Consumer

  1. モニタリング

  • UI For Apache Kafka

  • Prometheus

  • Grafana

  1. Apache Spark 基本

  • Sparkクラスター

  • Spark SQL

  • Spark Streaming

  1. パフォーマンス向上のTip

  • パフォーマンス向上チェックリスト

  • トラブルシューティング

  • Spark Monitoring

  1. 可用性テスト

  • Zookeeper Cluster

  • Kafka Broker

  • Spark Cluster


このような内容を学びます。

パイプライン設計

リアルタイムデータパイプライン構成のために選択可能なツールの組み合わせ。

そして実習のために選択するKafka & Sparkのデータフローを理解し、実装してみます。

CI/CD: Github Actions + Code Deploy

CI/CDは基本中の基本。

ローカルgit → Github Repository連携後、自動デプロイができるようにActions + Code Deployの組み合わせを活用します。

Kafka Web UI

UI For Apache Kafka を通じてKafkaを簡単に管理する方法を学びます。

Prometheus + Grafana

モニタリングパイプラインの大勢。

Prometheus + Grafanaの組み合わせを通じてKafkaをモニタリングし、さらにSpark StreamingのLAGモニタリング方法を学びます。

Kafka Source + Spark Streaming

Kafka + Spark Streaming の組み合わせを通じて実際のパイプラインを実装し、これを基にDashboardを可視化します。

AWS Athena

AWS Athenaサービスはサーバーレスクエリサービスです。このサービスを活用してSpark Streamingの処理結果を直接確認してみます。

Python Dashboard

実装したリアルタイムデータパイプラインを利用してDashboardで可視化し、パイプラインの流れを理解します。

可用性テスト

最大限実際と同じアーキテクチャ実装を通じて堅牢なアーキテクチャを実装し、可用性テストを進行します。Kafka、Spark、Yarn Clusterの可用性を理解し確認します。

Ansibleを利用したInfra設定自動化

これらすべてを作るのに、やることが多すぎるのではないかということですか?

はい、その通りです。とても多いです。

インストールするライブラリも多く、あれこれ設定しなければならないことがとても多いです。何か一つでも合わないとエラーが出ますね🤬

しかし、皆さんはリアルタイムパイプライン実装という重要な内容にのみ注目していただければと思います。

Infraの構成と各種セットアップは、事前に準備されたAnsible Scriptを通じて自動化が進行されます。

Ansible Scriptは下記のgithubアドレスで事前に確認できます。

https://github.com/hjkim-sun/datalake-ansible-playbook-season1


皆さんは上記のgithub repositoryの内容をcloneしてセットアップ過程を簡単に進めることになります。

🚨実習前にご参考ください!

[[SPAN_1]]✔[[/SPAN_2]] Kafka Client(Producer/Consumer)は[[SPAN_2]]Python[[/SPAN_2]]で作成します。


Python Kafkaライブラリには複数の種類がありますが、その中で最も性能の良いConfluent Kafka Libraryを使用します。Confluent KafkaはJavaに劣らない高い性能を保証するツールとして、Pythonを通じてProducer/Consumerを作成する方法を学びます。


[[SPAN_1]]✔[[/SPAN_2]] Spark言語も[[SPAN_2]]Python[[/SPAN_2]]で記述します。


Spark Applicationを作成する際に最もパフォーマンスが良い言語はScalaです。しかし、Sparkのために別途Scala言語を学ぶには確実に負担があります。Python言語ほど大衆的ではなく、ディープラーニング/AI関連ライブラリも相対的に少ないという短所があります。そのため現場ではPythonを利用してSparkプログラムを開発するケースが多いです。特にディープラーニング/AI連携を考慮するならPython言語で作成することは素晴らしい代替案になり得ます。

🚨AWS予想実習費用

実習はAWS Cloudで進行され、実習費用が別途発生します。


1ヶ月間約40時間使用した場合、約4万円程度のAWS費用が発生します。(為替レート1,430基準)

実習費用はほとんどがEC2(コンピューティングサービス)で発生するため、実習・課題後は必ずサーバーインスタンスを停止してください。しかし、その他の費用(サーバーインスタンスに接続されているボリューム(EBS)とEIP)の場合、サーバーインスタンスを停止しても費用が発生します。したがって、完走を早くするほどAWS実習費用は減少します。


サーバーをすべて停止していても、サーバーボリューム費用により月約3万円程度発生します。

したがって、同じく40時間を使用しても1ヶ月ではなく2ヶ月間使用される場合は、3万ウォンが追加されて総額7万ウォン程度のAWS料金が発生することになります。したがって、できるだけ早く完走されることをお勧めします。

以下の内容は学習しません。


  1. Java ベースの Producer/Consumer 開発

  2. Kafka Connect(Season2予定)

  3. Schema Registry(Season2予定)

  4. Kafka Streams

  5. KSQL



  1. 機械学習およびディープラーニング

  2. Open Table Format (例:iceberg) (Season2予定)

  3. ScalaベースのApplication(pysparkのみで作成します)

コミュニケーション

複数のツールと連携する作業が多い講義の特性上、気になる内容や予想外のエラーが発生した場合、Q&A掲示板だけでのコミュニケーションは困難な場合があります。

(経験上、質問が登録されてから私が回答を付けて再確認されるまで3~4日程度かかるようです)


このようなコミュニケーションの不便さを軽減し、受講された方々に最後まで高品質なサービスを提供するため、Discordチャンネルを運営したいと思います。

https://discord.gg/etSxQQf5


講義に関する内容でも良いし、そうでなくても良いです。些細な話をしても良いです。

スムーズなコミュニケーションのための場所ですので、お気軽にご参加ください

受講前の参考事項

実習環境

  • [OS] ほとんどの実習はAWSで進行します。したがってWindow/MacOSに関係なく受講可能です。

  • [性能]高いCPU/Memoryスペックを要求しません。一般的に使用するノートパソコン/デスクトップであれば十分に受講可能です。

  • [その他] インターネット環境があればいくらでも受講可能です。そしてAWS Cloudの費用決済が可能なクレジットカードが必要です。

学習資料

  • 講義1-2で提供しています。


必須事前知識事項

  1. Pythonの基礎知識


    基本的なデータ構造とif/for/whileなどの基本的な文法。そして関数を作成できる程度の実力

  2. Linuxの基本コマンド


    ほとんどのInfra作業はAnsible自動化ツールを通じて進行されます。しかし、Linuxの基本コマンドは知っている必要があります。(viエディタ、cd/mv/rm等の基本コマンド)

  3. SQL


    基本的なSQL知識(SELECT、WHERE、JOIN、GROUP BY、ORDER BYなど)を知っていれば、ついてくるのがずっと楽になります。
    (難しいSQLはありません)

推奨事前知識事項

  1. Dockerコンテナ
    コンテナを利用してモニタリングツールをセットアップします。コンテナの原理を知っていると役に立ちます。

  2. git
    CI/CDのためにgitを活用して直接コードデプロイまで進行します。使用方法はすべて丁寧に説明しますが、知っていればより良いです。

  3. Python Classの理解
    実習で進行されるほとんどのPythonプログラムは、Class構造を通じて構造化が進められます。したがって、Classおよびオブジェクト指向に対する理解があれば、実習するのに楽になります
    (知らなくても大丈夫です。全て説明します)

こんな方に
おすすめです

学習対象は
誰でしょう?

  • Kafka & Spark を学びたい方

  • リアルタイムパイプラインの実装を学びたい方

  • データエンジニアとして 様々な知識とスキルの開発が必要な方

前提知識、
必要でしょうか?

  • Pythonの基本概念

  • SQLに関する基本知識 (Filter, GroupBy, OrderBy程度)

  • Linux の基本的なコマンドを扱えるレベル

こんにちは
です。

1,064

受講生

54

受講レビュー

185

回答

4.9

講座評価

2

講座

안녕하세요.

데이터 & AI 분야에서 일하고 있는 15년차 현직자입니다.

정보관리기술사를 취득한 이후 지금까지 얻은 지식을 많은 사람들에게 공유하고자 컨텐츠 제작하고 있습니다.

반갑습니다. :)

Contact: hjkim_sun@naver.com

カリキュラム

全体

113件 ∙ (28時間 23分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

11件

4.8

11件の受講レビュー

  • jusungpark님의 프로필 이미지
    jusungpark

    受講レビュー 17

    平均評価 4.9

    5

    100% 受講後に作成

    I'm learning so much from the curriculum and content that are organized far better than I expected. I really felt that you put a lot of care into creating this course. I'll be waiting for the follow-up courses. Thank you.

    • hyunjinkim
      知識共有者

      Dear Ramjjibaeng, Thank you for your course review. While creating the curriculum, I also thought a lot about how to teach from the basics solidly while connecting from Kafka to Spark. Thanks to you, it took a year from planning to completing the course, but I'm proud that you recognized it like this ^^ Thank you. The follow-up course I'm preparing now isn't season 2, but I'll proceed with substantial content so you won't regret it 😀

  • ㅈ님의 프로필 이미지

    受講レビュー 1

    平均評価 5.0

    修正済み

    5

    10% 受講後に作成

    I trust and watch Teacher Hyeonjin's classes. Highly recommend. I discovered this through the Airflow course, and it has many differentiating factors from other courses. From concepts to architecture design, I liked how you explain the reasons for use and principles. The hands-on practice is comfort itself. You always provide kind answers as well. I'm still in the early stages of taking the course, but I'll complete it all~ The weather is hot, so please take good care of your health.

    • hyunjinkim
      知識共有者

      Hello, yeoksijaneya! Thank you so much for continuing to find me after airflow! When I learn something on my own, if I only learn the superficial usage without understanding the principles, I quickly forget and don't really understand it. I think others are the same way, so I tend to dedicate a lot of lecture time to conveying the principles I've understood. That's why I have to make PPTs and create assignments, which is a bit tough, but I'm grateful that you recognize this effort :) I'll prepare the next lecture well too 💪

  • pcy78054921님의 프로필 이미지
    pcy78054921

    受講レビュー 1

    平均評価 5.0

    修正済み

    5

    100% 受講後に作成

    It was a remarkably high-quality lecture.. Simply moving. Usually when taking lectures, you often face situations like 'Why isn't it working when I followed exactly?', and there would be quite a few such cases, but I completed this smoothly without any of that. When choosing a lecture, I first look at the curriculum and compare the price and duration. Until now, there have been many lectures that were too superficial compared to the price, But I guarantee that if you take Hyunjin's kafka&spark lecture, you can produce sufficiently high-quality results in future projects as well! I learned a lot. Thank you! (When do you think Season 2 will be released..?)

    • hyunjinkim
      知識共有者

      Hello, Chan-young! Thank you for your touching review. As you know well after completing the course, I was quite concerned that it might not be easy to follow along, as the content includes a variety of topics from infrastructure setup and nginx configuration to docker setup and availability testing, rather than simply explaining functions. That's why I standardized as much as possible using ansible-playbook, and even after finishing the lecture recording, I followed the lecture myself to check if there were any parts that weren't working correctly. And in case someone had trouble, I even prepared a Discord room for smooth communication. In the end, it took quite a long time to release the lecture, but I tried my best to create a lecture with high completeness. Knowing that Chan-young recognized my efforts makes all the hard work feel like it's washed away ^-^ I am even more grateful.. Also, before starting Season 2, I'm preparing a lecture related to generative AI first, so it might be a bit later. Still, I'll do my best to prepare it!

  • kkgg2541님의 프로필 이미지
    kkgg2541

    受講レビュー 2

    平均評価 4.0

    3

    60% 受講後に作成

    Too much content on unimportant structural principles and too many installation setups. The core content is brief... It would be difficult to adapt in the actual workplace

    • boin님의 프로필 이미지
      boin

      受講レビュー 3

      平均評価 5.0

      5

      12% 受講後に作成

      I haven't finished watching all the lectures yet, but just from the AWS environment configuration section, I can already guess the quality of the entire course.. Personally, even if you're not in the data field, this is a lecture that would be quite helpful for those working in architecture as well. I'll work hard to complete the entire course!!

      • hyunjinkim
        知識共有者

        Hello Kim Boin, Yes, this course is not simply about trying out Kafka producing and consuming, or just running Spark once and calling it done. Especially with Kafka & Spark being cluster structures, you cannot write proper code without understanding the principles. To understand the principles, you need to understand cluster structures, and to understand cluster structures, you need to know why you need to configure three nodes, and how the infrastructure should be set up. That's why this is a course that explains and configures everything step by step, starting from the infrastructure. I'm also happy to hear that it was very helpful for learning architecture :) Keep fighting!

    ¥15,506

    hyunjinkimの他の講座

    知識共有者の他の講座を見てみましょう!