通过Spark Streaming作业处理Kafka数据

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 如何使用阿里云E-MapReduce部署Hadoop集群和Kafka集群,并运行Spark Streaming作业消费Kafka数据。

本节介绍如何使用阿里云E-MapReduce部署Hadoop集群和Kafka集群,并运行Spark Streaming作业消费Kafka数据。

前提条件

  • 已注册阿里云账号,详情请参见注册云账号
  • 已开通E-MapReduce服务。
  • 已完成云账号的授权,详情请参见角色授权

背景信息

在开发过程中,通常会遇到消费Kafka数据的场景。在阿里云E-MapReduce中,您可通过运行Spark Streaming作业来消费Kafka数据。

步骤一 创建Hadoop集群和Kafka集群

推荐您将Hadoop集群和Kafka集群创建在同一个安全组下。如果Hadoop集群和Kafka集群不在同一个安全组下,则两者的网络默认是不互通的,您需要对两者的安全组分别进行相关配置,以使两者的网络互通。

  1. 登录阿里云 E-MapReduce 控制台
  2. 创建Hadoop集群,详情请参见创建集群
    image.png
  3. 创建Kafka集群,详情请参见创建集群
    image.png

步骤二 获取JAR包并上传到Hadoop集群

本例中的JAR包:对E-MapReduce的Demo进行了一定的修改后,编译生成的JAR包。JAR包需要上传到Hadoop集群的emr-header-1主机中。

  1. 获取JAR包(本例JAR下载地址)。
  2. 返回到阿里云 E-MapReduce 控制台
  3. 集群管理页面,单击Hadoop集群的集群ID,进入Hadoop集群。
  4. 在左侧导航树中选择主机列表,然后在右侧查看Hadoop集群中emr-header-1主机的IP信息
  5. 通过SSH客户端登录emr-header-1主机。
  6. 上传JAR包到emr-header-1主机的某个目录。

说明: 后续步骤中的代码有涉及到此路径,本例上传路径为/home/hadoop。上传JAR包,请保留该登录窗口,后续步骤仍将使用。

步骤三 在Kafka集群上创建Topic

您可直接在E-MapReduce上以可视化的方式来创建Topic(详情请参见Kafka 元数据管理),也可登录Kafka集群的emr-header-1主机后以命令行的方式来创建Topic。本例以命令行方式创建一个分区数为10、副本数为2、名称为test的Topic。

  1. 返回到阿里云 E-MapReduce 控制台
  2. 集群管理页面,单击Kafka集群的集群ID,进入Kafka集群。
  3. 在左侧导航树中选择主机列表,然后在右侧查看Kafka集群中emr-header-1主机的IP信息
  4. 在SSH客户端中新建一个命令窗口,登录Kafka集群的emr-header-1主机。
  5. 通过以下命令创建Topic。
/usr/lib/kafka-current/bin/kafka-topics.sh --partitions 10 --replication-factor 2 --zookeeper emr-header-1:2181 /kafka-1.0.0 --topic test --create

说明 :创建Topic后,请保留该登录窗口,后续步骤仍将使用。

步骤四 运行Spark Streaming作业

完成上述操作后,您即可在Hadoop集群上运行Spark Streaming作业。本例将运行一个作业进行流式单词统计(WordCount)。

  1. 返回到Hadoop集群的emr-header-1主机登录窗口。
    如果误关闭了此窗口,请重新登录,详情请参见步骤二 获取JAR包并上传到Hadoop集群中的相关步骤。
  2. 通过如下作业命令来进行流式单词统计(WordCount)。
spark-submit --class com.aliyun.emr.example.spark.streaming.KafkaSample  /home/hadoop/examples-1.2.0-shaded-2.jar 192.168.xxx.xxx:9092 test 5

命令中JAR包后面的三个关键参数说明如下:

  • 192.168.xxx.xxx:Kafka集群中任一Kafka Broker组件的内网或外网IP地址,示例如图 1所示。
  • test:Topic名称。
  • 5:时间间隔。

图 1. Kafka集群组件
image.png

步骤五 使用Kafka发布消息

进行本步骤操作时,需要保持Spark Streaming作业一直处于运行状态。运行Kafka的生产者(producer)后,在Kafka客户端的命令行中输入文本时,在Hadoop集群客户端的命令行中会实时显示单词统计结果。

  1. 返回到Kafka集群的emr-header-1主机登录窗口。
    如果误关闭了此窗口,请重新登录,详情请参见步骤三 在Kafka集群上创建Topic中的相关步骤。
  2. 在Kafka集群的登录窗口中,通过如下命令来运行生产者(producer)。
/usr/lib/kafka-current/ /bin/kafka-console-producer.sh --topic test --broker-list emr-worker-1:9092
  1. 在Kafka登录窗口的命令行中不断输入文本,则在Hadoop集群登录窗口中实时显示文本的统计信息。
    image.png

步骤六 查看Spark Streaming作业的进展

Spark Streaming作业开始运行后,您可在E-MapReduce上查看作业的状态。

  1. 返回到阿里云 E-MapReduce 控制台
  2. 在Hadoop集群的访问链接与端口页面中,单击Spark History Server UI后的链接,查看Spark Streaming作业的状态。详情请参见访问链接与端口

image.png
image.png


阿里巴巴开源大数据技术团队成立Apache Spark中国技术社区,定期推送精彩案例,技术专家直播,问答区数个Spark技术同学每日在线答疑,只为营造纯粹的Spark氛围,欢迎钉钉扫码加入!
image.png
对开源大数据和感兴趣的同学可以加小编微信(下图二维码,备注“进群”)进入技术交流微信群。

image.png

相关文章
|
3月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
57 3
|
3月前
|
消息中间件 分布式计算 NoSQL
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
51 0
|
3月前
|
消息中间件 存储 分布式计算
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
105 0
|
3月前
|
消息中间件 存储 运维
为什么说Kafka还不是完美的实时数据通道
【10月更文挑战第19天】Kafka 虽然作为数据通道被广泛应用,但在实时性、数据一致性、性能及管理方面存在局限。数据延迟受消息堆积和分区再平衡影响;数据一致性难以达到恰好一次;性能瓶颈在于网络和磁盘I/O;管理复杂性涉及集群配置与版本升级。
110 1
|
3月前
|
消息中间件 Java Kafka
Flink-04 Flink Java 3分钟上手 FlinkKafkaConsumer消费Kafka数据 进行计算SingleOutputStreamOperatorDataStreamSource
Flink-04 Flink Java 3分钟上手 FlinkKafkaConsumer消费Kafka数据 进行计算SingleOutputStreamOperatorDataStreamSource
63 1
|
3月前
|
消息中间件 分布式计算 Kafka
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
61 0
|
5月前
|
vr&ar 图形学 开发者
步入未来科技前沿:全方位解读Unity在VR/AR开发中的应用技巧,带你轻松打造震撼人心的沉浸式虚拟现实与增强现实体验——附详细示例代码与实战指南
【8月更文挑战第31天】虚拟现实(VR)和增强现实(AR)技术正深刻改变生活,从教育、娱乐到医疗、工业,应用广泛。Unity作为强大的游戏开发引擎,适用于构建高质量的VR/AR应用,支持Oculus Rift、HTC Vive、Microsoft HoloLens、ARKit和ARCore等平台。本文将介绍如何使用Unity创建沉浸式虚拟体验,包括设置项目、添加相机、处理用户输入等,并通过具体示例代码展示实现过程。无论是完全沉浸式的VR体验,还是将数字内容叠加到现实世界的AR应用,Unity均提供了所需的一切工具。
186 0
|
消息中间件 分布式计算 大数据
【Spark Summit East 2017】使用Spark与Kafka构建Second Look业务用例实时平台
本讲义出自Ivy Lu在Spark Summit East 2017上的演讲,主要介绍了如何使用Spark与Kafka创建一个重新审视用例的实时平台Second Look,Second Look是由Capital One构建的用于检测并通知持卡人一些潜在的错误和意想不到的费用的实时业务平台。
1505 0
|
2月前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
154 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
3月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
77 0