# 1. 概述
这个工程为大数据实时流处理日志系统的日志分析部分,采用 Flume + kafka + Spark + Hbase 的架构。
script 目录下的 generate_log.py 脚本为日志生成脚本,可以模拟日志的生成,Flume 会将生成的日志迁移到 Kafka 中,
SparkStreaming 从 Kafka 中读取日志,并将处理后得到的统计数据存入 HBase 中。
# 2. 版本
- jdk1.8
- scala 2.11.8
- Hadoop-2.8.1
- zookeeper-3.4.6
- Hbase-1.2.1
- spark-2.4.0-bin-hadoop2.7
- Apache-flume-1.9.0
- kafka_2.11-0.10.2.1
- apache-flume-1.6.0
# 3. 环境配置
## 3.1 集群配置
集群节点分配
| | 本地 | hdp-01 | hdp-02 | hdp-03 |
|:---------:|:----:|:-------------------:|:-----------------------:|:--------------:|
| HDFS | | NameNode、 DataNode | DataNode | DataNode |
| Zookeeper | | QuorumPeerMain | QuorumPeerMain | QuorumPeerMain |
| HBase | | HRegionServer | HMaster、 HRegionServer | HRegionServer |
| Kafka | | Kafka | Kafka | Kafka |
| SparkStreaming | Main | | | |
| Flume | √ | | | |
| log | √ | | | |
| | | | | |
HBase 需要依赖 HDFS 和 Zookeeper,按顺序启动集群:
```
HDFS->Zookeeper->HBase->Kafka->Spark
```
## 3.2 创建HBase表
HBase表需要提前创建好
```shell
bin/start-hbase.sh
bin/hbase shell
```
```
创建名字空间 ns1:create_namespace 'ns1'
创建课程访问统计表,列族为info:create 'ns1:courses_clickcount', 'info'
创建搜索引擎统计表,列族为info:create 'ns1:courses_search_clickcount', 'info'
```
## 3.3 flume配置文件
streaming_log.conf
```
exec-memory-kafka.sources = exec-source #exec的源,用于监控某个文件是否有 数据追加
exec-memory-kafka.sinks = kafka-sink
exec-memory-kafka.channels = memory-channel
exec-memory-kafka.sources.exec-source.type = exec
exec-memory-kafka.sources.exec-source.command = tail -F /home/hadoop/data/click.log #被监控的文件,目录必须正确
exec-memory-kafka.sources.exec-source.shell = /bin/sh -c
exec-memory-kafka.channels.memory-channel.type = memory
exec-memory-kafka.sinks.kafka-sink.type = org.apache.flume.sink.kafka.KafkaSink
exec-memory-kafka.sinks.kafka-sink.brokerList = hdp-01:9092,hdp-02:9092,hdp-03:9092
exec-memory-kafka.sinks.kafka-sink.topic = streamtopic
exec-memory-kafka.sinks.kafka-sink.batchSize = 10
exec-memory-kafka.sinks.kafka-sink.requiredAcks = 1
exec-memory-kafka.sources.exec-source.channels = memory-channel #关联三大组件
exec-memory-kafka.sinks.kafka-sink.channel = memory-channel
```
## 3.4 创建Kafka主题
Kafka 的 topic 需要提前创建好
```shell
bin/kafka-topics.sh --create --zookeeper hdp-01:2181,hdp-02:2181,hdp-03:2181 --replication-factor 3 --partitions 3 --topic streamtopic
bin/kafka-topics.sh --list --zookeeper hdp-01:2181,hdp-02:2181,hdp-03:2181
bin/kafka-topics.sh --describe --zookeeper hdp-01:2181,hdp-02:2181,hdp-03:2181 --topic streamtopic
bin/kafka-console-consumer.sh --zookeeper hdp-01:2181,hdp-02:2181,hdp-03:2181 --topic streamtopic --from-beginning
```
# 4. 启动
## 4.1 生成日志
```shell
python script/generate.log
```
可以使用Linux的crontab命令,周期性调用python脚本,源源不断产生数据,
该脚本会在当前目录生成日志文件。
因此,python脚本与Flume配置文件中监控的目录必须要一直一致,否则将无法收集。
## 4.2 启动Kafka
所有机器执行:
```sbtshell
bin/kafka-server-start.sh -daemon config/server.properties
```
## 4.3 启动Flume
```shell
bin/flume-ng agent -n exec-memory-kafka -c ./conf -f conf/streaming_log.conf -Dflume.root.logger=DEBUG,console -no-reload-conf
```
## 4.4 启动SparkStreaming
运行
```
com.jp.spark.streaming.application.CountByStreaming
```
参数为:
```sbtshell
<kafkaAddr> <group> <topics> <threadNum>
```
启动之后,可以看到HBase中插入了数据:
```sbtshell
Hbase> list
Hbase> scan 'ns1:courses_search_clickcount'
```
赵闪闪168
- 粉丝: 1726
- 资源: 6932
最新资源
- 基于PHP的FeelDesk工单管理系统开源版设计源码
- 基于Antv-X6的组态编辑器与可视化设计源码
- factoryio2.5工厂流水线仿真程序,期末专周可用,多个场景可以咨询 使用简单的梯形图与SCL语言编写,通俗易懂,起到抛砖引玉的作用,比较适合有动手能力的入门初学者 软件环境: 1、西门子编程
- 基于公有云平台的OpenIoT项目设计源码
- 基于微信小程序文件系统的MxLocalBase本地数据库设计源码
- 基于C语言的2023级寒假实践打地鼠游戏设计源码
- 基于matlab的孔入式静压轴承程序,进油孔数为4个,采用有限差分计算轴承油膜厚度及油膜压力 程序已调通,可直接运行
- 控制电机-感应电动机转差型矢量控制伺服模型系统 仿真模型+实验报告(内附实验参数,仿真波形等) 注意:matlab版本需在2016a以下,否则可能打不开
- 控制电机-正弦波永磁同步电动机矢量控制系统仿真 仿真模型+实验报告(内附实验参数,仿真波形等) 注意:matlab版本需在2016a以下,否则可能打不开
- 基于扰动观测器的永磁同步电机(PMSM)模型预测控制(MPC)仿真 速度外环基于模型预测控制、电流内环基于无差拿控制搭建,控制效果理想,模块程序设计通俗易通
- 基于Laravel的简化Smarty模板引擎设计源码
- NSGA2遗传算法多目标优化 三维视图 寻优多个函数(函数类型见图二类型),出图为三维红色为帕列托(图一), 带最终结果图(图三)
- 基于graqhql/mongodb/nodejs/nuxtjs的Vue跨世代实时在线文档编辑系统设计源码
- 基于Java的用户线程模型设计源码
- 基于Rust Axum框架的Web后端项目设计与源码实践
- 基于HTML、CSS和JavaScript的eui后台UI框架设计源码预览版账号密码提供
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈