Spark、Kafka - 实时计算
现在提到实时计算,可能大家首先会想到flink。的确,flink在开源实时领域方面绝对算是TOP了。18年的时候,实时处理还是SparkStreaming应用的比较广泛。所以当时我安装的是Spark集群,来模拟的实时计算。
其实Spark/flink集群都是可以不搭建的,在Spark集群上运行程序属于standlone模式,如果使用yarn模式只需要有客户端就可以了。Spark程序运行在yarn上,能对cpu和内存进行资源隔离,而且不需要要单独维护一个Spark集群。
而作为实时处理配套,Kafka和Rabbitmq之间我还是倾向于Kafka。在Kafka搭建之前,先搭建zookeeper集群,zk是kafka的依赖组件,用来记录一些元数据。
下图命令操作就是消费写入Kafka的数据。
我们要做的就是将数据库/数据仓库中的离线数据,转换为数据流(Data Stream),作为生产者实时写入到Kafka中。
我们开发的Spark/flink程序作为消费者实时读取Kafka中的数据,实时处理并数据计算结果。如下图,为SparkStreaming的程序监控页面。
SparkStreming程序,可以使用Java、Scala、Python开发,但是选择Scala比较好一些。一是Scala的语法结构更贴合流式处理,二是源码都是Scala写的。
Flume - 数据交换神器
当初刚接触Flume的时候,真的没玩明白,云里雾里的。后来深入研究了一下之后,数据在oracle、MySQL、Kafka、HDFS以及其他存储平台上,就可以进行同步。不过MySQL和oracle需要自己定义Source和Sink。
Flume的简单之处在于配置化。当初我将数据从MySql抽取到Kafka,部分配置如下。
顺带一提,在大数据量的情况下,Flume很多参数还是需要调的。当初我将1W亿/天的数据从Kafka落地到HDFS的时候,写了几千行的配置,调了很多参数。
3. 数据展示
最后就是前台的数据展示了,使用了Springboot和Vue做了一个POI数据管理系统。主要实现分类查询和POI搜索标点地图展示功能。
但是这个系统,我只找到了登录页面和地图搜索标点的截图了....
数据管理系统发挥的空间还是挺多的,比如页面样式的优化,再比如前台可以使用Node + Vue,后端使用Springboot来实现前后端分离架构。
结语
主要是给大家提供一个大数据平台毕业设计的基本思路,很多细节的地方还可以优化。我们也不难发现,这里的大数据集群都是独立安装的,我们同样可以使用Ambari进行统一的安装、管理、启动、状态监控。
最近也是在研究Ambari,前几周刚花了一个星期,完成了Ambari2.7.5的编译安装工作。后期的目标是配合docker在一台机器上完成大数据集群的搭建工作,当然这里主要是玩,构建测试环境,性能啥的就不要考虑了哈。
忙完这一阵,完成Scrapy系列文章,就开始着手准备大数据平台系列文章的编写。期待下一次相遇。