实时数据分析门槛较高,咱们如何用极少的开发工做就完成实时数据平台的搭建,作出炫酷的图表呢?java
如何快速的搭建实时数据分析平台,首先咱们须要实时数据的接入端,咱们选择高扩展性、容错性、速度极快的消息系统Kafka,而实时数据仓库,因为 Druid提供了很是方便快捷配置方式,若是不想编写负责的Flink和Spark代码,Druid绝对是一个不错的选择,有了数据仓库,咱们必须须要一个可视化和交互式分析的平台,对druid支持最好的无疑是Superset了。python
请注意,druid目前并不支持windows,因此咱们将kafka 与 druid部署于咱们的centos服务器中,而superset,能够在本地安装。sql
最终咱们经过Kafka的实时数据接入能力,Druid的实时数据仓库存储,聚合能力,Superset的数据可视化与交互式分析能力,快速的搭建一套实时数据分析平台。数据库
注:对于本教程须要的全部安装包,若是须要请在公众号回复 “实时数仓安装包” 下载apache
若是已有安装包,文中的Download安装包内容能够跳过~json
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统。flask
查看centos版本 cat /etc/redhat-release 个人是7.6bootstrap
访问Kafka官网 http://kafka.apache.org/windows
选择左下方Download按钮centos
最新的版本已是2.5 为了与公司版本统一 咱们下滑选择1.0.0 注意选择二进制安装包
上传包到服务器 进入所在目录
解压安装包:
tar -zxvf kafka_2.11-1.0.0.tgz
进入kafka目录 cd kafka_2.11-1.0.0
目录结构以下:
若是须要用本身的 zookeeper 多集群配置 须要修改 vi config/server.properties
咱们这里启动kafka自带zk:-daemon 为后台启动
./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
启动Kafka
./bin/kafka-server-start.sh -daemon config/server.properties
不报错的话 查看进程是否正常运行 zk运行端口2181 kafka运行端口 9092
netstat -tunlp|egrep "(2181|9092)"
Kafka安装成功!
咱们用命令行感觉一下kafka
用一个生产者向test里发消息
./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
再开启一个终端:
进入kafka的目录
开启消费者监听消息
./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
回到刚才的生产者 发送消息
再看消费者一端 消息收到了
Druid是一个分布式的支持实时分析的数据存储系统。通俗一点:高性能实时分析数据库。它由美国广告技术公司MetaMarkets于2011年建立,而且于2012年开源。MetaMarkets是一家专门为在线媒体公司提供数据服务的公司,主营是DSP广告运营推送平台,因为对实时性要求很是高,公司不得不放弃原始的大数据方案,Druid也就应运而生。
Druid官网地址 https://druid.apache.org/
选择Download
进入Download页
其余版本下载地址:https://archive.apache.org/dist/druid/
咱们使用的版本是0.17.0
上传包到服务器
解压
tar -zxvf apache-druid-0.17.0-bin.tar.gz
进入目录
cd apache-druid-0.17.0
目录结构以下
咱们选择最轻量的而服务器配置:
单服务器参考配置
Nano-Quickstart:1个CPU,4GB RAM
启动命令: bin/start-nano-quickstart
配置目录: conf/druid/single-server/nano-quickstart
cd apache-druid-0.17.0/conf/druid/single-server/nano-quickstart/
vi _common/common.runtime.properties
修改zk地址 # # Zookeeper,大概在46~55行中间,对zk进行配置 # druid.zk.service.host=localhost:2181
修改默认端口验证
vi bin/verify-default-ports
把这行的2181去掉
my @ports = @ARGV; if (!@ports) { @ports = (1527, 8083, 8090, 8100, 8200, 8888); }
咱们也能够自定义端口 都要在这里修改
随后咱们启动
bin/start-nano-quickstart
启动成功!!
访问页面localhost:8888
druid已经成功启动!
在kafka目录中运行命令 {PATH_TO_DRUID}替换为druid目录 这些是druid的测试数据
export KAFKA_OPTS="-Dfile.encoding=UTF-8" ./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic wikipedia < {PATH_TO_DRUID}/quickstart/tutorial/wikiticker-2015-09-12-sampled.json
请将localhost替换为安装服务器的地址!
选择Apache Kafka
并单击Connect data
localhost:9092
Superset 是一款由 Airbnb 开源的“现代化的企业级 BI(商业智能) Web 应用程序”,其经过建立和分享 dashboard,为数据分析提供了轻量级的数据查询和可视化方案。
Python官网,点击进入https://www.python.org/
点击Python官网的Downloads,而后在下拉菜单中点Windows,进入版本选择页面
进入版本选择页面,能够在最上面看到有Python3的最新版和Python2的最新版,在这里点击Python3.7.3进入下载页面 进入下载页面后,向下滚动鼠标,找到"Files",这里列出了Python3.7.3版本的不一样操做系统的安装包或相关文件,咱们是在Windows10里面安装,选择对应版本的安装包下载,点击下载,等待一会就能够下载完成了
将下载完成的Python3.7.3安装包剪切到电脑桌面(不放桌面也能够,只是这样更方便),双击打开,而后将下方的两个选项框都打钩,再点击Customize installation进入下一步
这个界面默认全部选项都是打钩的,保持默认便可,点击Next进入下一步
将Install for all users选项打钩,其余的选项保持默认,此时下方的默认安装路径为C:\Program Files\Python37,这里能够点击Browse,根据本身的需求选择安装目录,可是目录名中最好不要包含中文.
若是C盘有不少空间,能够不更改,或者有固态硬盘的,能够选择将Python3.7.3装在固态盘中.
确认好安装位置后,点击Install进行安装
如今Python3.7.3开始安装,能够看到安装的进度条在读条,什么也不用作,稍等一会就安装完成了
进度条完成,会显示下面的菜单,表示已经安装成功了,如今点击Close便可,Python3.7.3已经安装成功了
在安装完成Python3.7.3后,已经自动帮咱们配好了环境变量(很是省事),咱们直接在命令行里面使用python命令,就会进入Python3.7.3的交互界面.
按Win+R进入运行界面,在里面输入cmd回车,进入Windows的命令行,在命令行输入python37能够进入Python3.7.3的命令行模式,(输入a = 1,而后输入a,控制台输出1)测试成功,说明Python3.7.3安装成功
使用pip 须要下载一会~ 网很差可能下载失败,须要从新执行,以前下载的会缓存,网速很差的话可能很难~ 耐心一点
pip install apache-superset
成功!!
记录一下superset的安装位置 进入该目录
# 初始化数据库 python superset db upgrade
这个过程当中会提示缺乏包,初始化失败
依次安装便可 好比这里缺乏 flask_migrate
咱们就
pip install flask_migrate
# 建立管理员帐号 python superset fab create-admin
提示输入用户名 密码
# 载入案例数据 也会有点慢 服务器在国外 也能够多试几回 不行能够跳过 python superset load_examples
# 初始化角色和权限 python superset init
# 启动服务,默认端口号 5000,使用 -p 更改端口号 python superset run
成功!!
浏览器访问http://localhost:5000/
这时候还不能连Druid
须要安装pydruid
pip install pydruid
重启superset
新建数据源
成功!! 保存
新建刚才的表
进入表 设置展现效果
这里根据数据状况 进行各类展现设置
选择sqlLite 进行sql查询
至此实时数据分析平台已经搭建完成,能够进行实时数据的接入,展现,分析等等工做。
java 向kafka中发送数据demo
依赖
<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>1.0.0</version> </dependency>
demo
public class ProducerTestDemo { public static void main(String[] args) throws Exception { Properties properties = new Properties(); properties.put("bootstrap.servers", "localhost:9092"); properties.put("acks", "all"); properties.put("retries", 0); properties.put("batch.size", 16384); properties.put("linger.ms", 1); properties.put("buffer.memory", 33554432); properties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); KafkaProducer<String, String> kafkaProducer = new KafkaProducer<String, String>(properties); try{ BufferedReader br = new BufferedReader(new FileReader(new File("C:\\aaa.csv"))); String s = null; while((s = br.readLine())!=null){ kafkaProducer.send(new ProducerRecord<String, String>("topic", s)); } br.close(); }catch(Exception e){ e.printStackTrace(); } kafkaProducer.close(); } }
更多实时数据分析相关博文与科技资讯,欢迎关注 “实时流式计算”