大数据Spark实时处理--全流程

一、本地项目数据

1、新建工程log-time

  • IDEA----->Maven----->Project SDK:1.8 version 1.8.0_152----->不选 Create from archetype----->next----->Groupid:com.imooc.bigdata----->Artifactld:log-time----->Version:1.0----->finish

2、新建子工程log-web

  • 右击项目----->new----->module----->spring initializr----->next----->module sdk : project sdk(1.8)----->group : com.imooc.bigdata----->artifact : log-web----->type : maven----->packaging : jar----->java version : 8----->package : com.imooc.bigdata----->spring boot : 2.5.5----->finish

3、新建子工程log-server

  • 右击项目----->new----->Module----->Maven----->next----->Artifactld:log-service----->Module name:log-service----->finish

4、配置端口和路径

  • C:\Users\jieqiong\IdeaProjects\log-time\log-web\src\main\resources\application.yml

5、服务端代码(提供接口)

  • C:\Users\jieqiong\IdeaProjects\log-time\log-web\src\main\java\com\imooc\bigdata\logweb\controller\LogController.java

6、客户端代码(上报日志功能开发)

  • (放置对象类)C:\Users\jieqiong\IdeaProjects\log-time\log-service\src\main\java\com\imooc\bigdata\log\domain\Access.java
  • (数据发送类)C:\Users\jieqiong\IdeaProjects\log-time\log-service\src\main\java\com\imooc\bigdata\log\utils\UploadUtils.java
  • (数据制造类)C:\Users\jieqiong\IdeaProjects\log-time\log-service\src\main\java\com\imooc\bigdata\log\utils\MockData.java

7、配置数据落地地点

  • C:\Users\jieqiong\IdeaProjects\log-time\log-web\src\main\resources\log4j.properties

8、主类入口

  • C:\Users\jieqiong\IdeaProjects\log-time\log-web\src\main\java\com\imooc\bigdata\logweb\LogWebApplication.java

9、添加外部数据来源

  • imooc上有配置外部jar包的方法
  • C:\Users\jieqiong\IdeaProjects\log-time\log-service\src\main\java\com\imooc\bigdata\log\utils\Test.java

10、将jar包放入服务器lib路径

11、启动服务器

  • 先启动dfs、yarn
  • jar包服务运行起来后,会在logs目录下,生成一个access.log文件
[hadoop@spark000 lib]$ nohup java -jar log-web-0.0.1-SNAPSHOT.jar
[hadoop@spark000 lib]$ tail -299f nohup.out

12、运行Test.java

  • 在本地IDEA运行的方式,将日志落入磁盘中
  • 日志会生成自动落入服务器中的Logs----->access.java
[hadoop@spark000 logs]$ ll
total 0
-rw-rw-r-- 1 hadoop hadoop 0 Mar 29 10:09 access.log
[hadoop@spark000 logs]$ ll
total 960
-rw-rw-r-- 1 hadoop hadoop 602512 Mar 29 10:11 access.log

 


 

二、Flume

项目里的数据,对接到Flume中。

13、编写flume.conf包

  • 对接服务器上的数据
[hadoop@spark000 config]$ pwd
/home/hadoop/app/apache-flume-1.6.0-cdh5.16.2-bin/config
[hadoop@spark000 config]$ ll
total 40
-rw-rw-r-- 1 hadoop hadoop  637 Mar 11 16:19 access-collect.conf

14、启动flume

  • 要先启动dfs、yarn
  • 再启动制造数据的服务器(执行第11步)
  • 再启动flume
  • 执行本地Test.java
  • 只要flume终端有显示即可,表示运行成功。
[hadoop@spark000 config]$ pwd
/home/hadoop/app/apache-flume-1.6.0-cdh5.16.2-bin/config
[hadoop@spark000 config]$ 
flume-ng agent \
--conf $FLUME_HOME/conf \
--conf-file $FLUME_HOME/config/access-collect.conf \
--name a1 \
-Dflume.root.logger=INFO,console

 


 

三、Kafka

Flume对应Kafka的producer,然后数据sink到Kafka的topic中,最后consumer到topic取数据并消费掉。

15、配置Flume的agent

[hadoop@spark000 config]$ pwd
/home/hadoop/app/apache-flume-1.6.0-cdh5.16.2-bin/config
[hadoop@spark000 config]$ ll
-rw-rw-r-- 1 hadoop hadoop  915 Dec  3 11:12 access-kafka.conf

16、一定要记得开启dfs、yarn、zookeeper、Kafka服务器

  • 启动zookeeper
[hadoop@spark000 bin]$ pwd
/home/hadoop/app/zookeeper-3.4.5-cdh5.16.2/bin
[hadoop@spark000 bin]$ ./zkServer.sh start
JMX enabled by default
Using config: /home/hadoop/app/zookeeper-3.4.5-cdh5.16.2/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
  • 启动kafka服务器
[hadoop@spark000 config]$ pwd
/home/hadoop/app/kafka_2.12-2.5.0/config
[hadoop@spark000 config]$ kafka-server-start.sh -daemon $KAFKA_HOME/config/server-zhang0.properties
[hadoop@spark000 config]$ kafka-server-start.sh -daemon $KAFKA_HOME/config/server-zhang1.properties
[hadoop@spark000 config]$ kafka-server-start.sh -daemon $KAFKA_HOME/config/server-zhang2.properties

17、启动consumer

[hadoop@spark000 ~]$ kafka-console-consumer.sh --bootstrap-server spark000:9092,spark000:9093,spark000:9094 --topic zhang-replicated-topic

18、启动Flume脚本

  • 路径:/home/hadoop/app/apache-flume-1.6.0-cdh5.16.2-bin/config
flume-ng agent \
--name a1 \
--conf $FLUME_HOME/conf \
--conf-file $FLUME_HOME/config/access-kafka.conf \
-Dflume.root.logger=INFO,console

19、对接数据

  • 先打开consumer终端,目前展示为空
  • 执行第11步:启动数据接收服务器
  • 执行第12步:run本地IDEA的C:\Users\jieqiong\IdeaProjects\spark-log4j\log-service\src\main\java\com\imooc\bigdata\log\utils\Test.java
  • 然后会发现kafka的consumer终端加载access.log中的数据。
  • 即:完成了从数据的落地,然后通过Flume把落地的数据收集过来,其次sink到Kafka.。现在是在Kafka的consumer终端来消费/记录数据的。

 


 

 


20、开启master服务

  • 同时开启dfs、yarn、zookeeper、多brker的kafka
[hadoop@spark000 sbin]$ pwd
/home/hadoop/app/spark-3.0.0-bin-2.6.0-cdh5.16.2/sbin
[hadoop@spark000 sbin]$ ./start-master.sh

21、master、多broker的kafka、access-kafka.conf、jar

22、org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 1.0 failed 1 times, most recent failure: Lost task 0.0 in stage 1.0 (TID 1, 192.168.131.1, executor driver): java.lang.ClassCastException: java.sql.Timestamp cannot be cast to java.lang.String

23、

24、

 

posted @ 2022-04-11 16:25  酱汁怪兽  阅读(498)  评论(0编辑  收藏  举报