数据仓库之数据接入
前段时间尝试了爬虫,就想着这些数据在我学习大数据的路上能派上什么用场,于是构思了一个小项目来练手,大概的逻辑就是尝试将数据存入分布式数仓中,然后展示
基础结构
pyhton爬虫 -> csv -> filebeat -> kafka -> spark -> hive -> mysql -> python可视化
组件
Hadoop 、Filebeat、Kafka、Spark、Hive、MySQL
第一步:爬虫编写
参考我之前写的爬虫
第二步:数据接入
模拟数据实时写入脚本(生产者脚本)
写个shell脚本模拟数据实时写入
1 | !/bin/bash |
搭建Kafka集群
kafka简述与集群配置_Relian哈哈的博客-CSDN博客_kafka集群配置
编写Kafka集群启动脚本
1 |
|
创建topic(测试用)
1 | ./bin/kafka-topics.sh --create --zookeeper bigdata01:2181,bigdata02:2181,bigdata03:2181 --topic bili |
或者
1 | ./bin/kafka-topics.sh --create --bootstrap-server bigdata01:9092 --topic bili |
这里可以指定多个分区多个副本来保证高可用
安装filebeat连接kafka
修改filebeat.yml
1 | filebeat.inputs: |
测试filebeat是否能将数据传入kafka
启动集群(在kfk.sh所在目录下)
1 | sh kfk.sh start |
后台启动filebeat(在filebeat目录中)
1 | nohup ./filebeat -e -c filebeat.yml >/dev/null 2>&1 & |
以上命令的解释:linux重定向及/dev/null 2>&1详解 - 少说点话 - 博客园 (cnblogs.com)
开启kafka-console-consumer(在bigdata02)
1 | /bin/kafka-console-consumer.sh --bootstrap-server bigdata02:9092 --topic bili --from-beginning |
启动模拟数据实时写入的shell脚本(在bigdata01)
1 | sh simulate_data_access.sh |
可以在bigdata02中看到数据,但是这个好像把csv的第一行也当成数据给生产了。。
遇到的坑
zookeeper集群启动有时候会失败
有时候会起不来,发现zookeeper启动需要一些时间
在脚本中加入sleep 5
后就可以稳定启动了
header被当作数据
最后查看消息时发现csv文件的第一行被当成数据给生产了于是我又重建了topic,删除了数据源的第一行,重新生产数据,正常了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 62bit的秘密基地!