大数据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、