一小时搭建实时数据分析平台

file

实时数据分析门槛较高,咱们如何用极少的开发工做就完成实时数据平台的搭建,作出炫酷的图表呢?java

file
如何快速的搭建实时数据分析平台,首先咱们须要实时数据的接入端,咱们选择高扩展性、容错性、速度极快的消息系统Kafka,而实时数据仓库,因为 Druid提供了很是方便快捷配置方式,若是不想编写负责的Flink和Spark代码,Druid绝对是一个不错的选择,有了数据仓库,咱们必须须要一个可视化和交互式分析的平台,对druid支持最好的无疑是Superset了。python

请注意,druid目前并不支持windows,因此咱们将kafka 与 druid部署于咱们的centos服务器中,而superset,能够在本地安装。sql

最终咱们经过Kafka的实时数据接入能力,Druid的实时数据仓库存储,聚合能力,Superset的数据可视化与交互式分析能力,快速的搭建一套实时数据分析平台。数据库

注:对于本教程须要的全部安装包,若是须要请在公众号回复 “实时数仓安装包” 下载apache

​ 若是已有安装包,文中的Download安装包内容能够跳过~json

1、CentOS下安装Kafka

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统。flask

下载安装包

查看centos版本 cat /etc/redhat-release 个人是7.6bootstrap

file

访问Kafka官网 http://kafka.apache.org/windows

选择左下方Download按钮centos

file

最新的版本已是2.5 为了与公司版本统一 咱们下滑选择1.0.0 注意选择二进制安装包

file

启动

上传包到服务器 进入所在目录

解压安装包:

tar -zxvf kafka_2.11-1.0.0.tgz

进入kafka目录 cd kafka_2.11-1.0.0

目录结构以下:

file

若是须要用本身的 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)"

file

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

回到刚才的生产者 发送消息

file

再看消费者一端 消息收到了

file

2、CentOS安装Druid

Druid是一个分布式的支持实时分析的数据存储系统。通俗一点:高性能实时分析数据库。它由美国广告技术公司MetaMarkets于2011年建立,而且于2012年开源。MetaMarkets是一家专门为在线媒体公司提供数据服务的公司,主营是DSP广告运营推送平台,因为对实时性要求很是高,公司不得不放弃原始的大数据方案,Druid也就应运而生。

下载安装包

Druid官网地址 https://druid.apache.org/

选择Download

file

进入Download页

file

其余版本下载地址:https://archive.apache.org/dist/druid/

咱们使用的版本是0.17.0

file

上传包到服务器

解压

tar -zxvf apache-druid-0.17.0-bin.tar.gz

进入目录

cd apache-druid-0.17.0

目录结构以下

file

咱们选择最轻量的而服务器配置:

启动

单服务器参考配置

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

启动成功!!

file

访问页面localhost:8888

file

druid已经成功启动!

导入Kafka数据

在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

载入kafka数据到Druid

请将localhost替换为安装服务器的地址!

进入localhost:8888 点击load data

选择Apache Kafka并单击Connect data

file

输入kafka服务器localhost:9092
输入topic wikipedia 能够预览数据 而后下一步

file

解析数据

file

解析时间戳 设置转换 设置过滤

file

file

file

这步比较重要 肯定统计的范围

file

file

发布!

file

等待任务完成

file

file

去查询页面查看,咱们的数据已经实时写入Druid了

file

3、本地安装Superset

Superset 是一款由 Airbnb 开源的“现代化的企业级 BI(商业智能) Web 应用程序”,其经过建立和分享 dashboard,为数据分析提供了轻量级的数据查询和可视化方案。

win10安装python 3.7

下载

Python官网,点击进入https://www.python.org/

file

点击Python官网的Downloads,而后在下拉菜单中点Windows,进入版本选择页面
file

进入版本选择页面,能够在最上面看到有Python3的最新版和Python2的最新版,在这里点击Python3.7.3进入下载页面 进入下载页面后,向下滚动鼠标,找到"Files",这里列出了Python3.7.3版本的不一样操做系统的安装包或相关文件,咱们是在Windows10里面安装,选择对应版本的安装包下载,点击下载,等待一会就能够下载完成了

file

安装

将下载完成的Python3.7.3安装包剪切到电脑桌面(不放桌面也能够,只是这样更方便),双击打开,而后将下方的两个选项框都打钩,再点击Customize installation进入下一步

file

这个界面默认全部选项都是打钩的,保持默认便可,点击Next进入下一步

file

将Install for all users选项打钩,其余的选项保持默认,此时下方的默认安装路径为C:\Program Files\Python37,这里能够点击Browse,根据本身的需求选择安装目录,可是目录名中最好不要包含中文.

若是C盘有不少空间,能够不更改,或者有固态硬盘的,能够选择将Python3.7.3装在固态盘中.

file

确认好安装位置后,点击Install进行安装

如今Python3.7.3开始安装,能够看到安装的进度条在读条,什么也不用作,稍等一会就安装完成了

进度条完成,会显示下面的菜单,表示已经安装成功了,如今点击Close便可,Python3.7.3已经安装成功了

file

验证

在安装完成Python3.7.3后,已经自动帮咱们配好了环境变量(很是省事),咱们直接在命令行里面使用python命令,就会进入Python3.7.3的交互界面.

按Win+R进入运行界面,在里面输入cmd回车,进入Windows的命令行,在命令行输入python37能够进入Python3.7.3的命令行模式,(输入a = 1,而后输入a,控制台输出1)测试成功,说明Python3.7.3安装成功

file

win10安装superset

安装

使用pip 须要下载一会~ 网很差可能下载失败,须要从新执行,以前下载的会缓存,网速很差的话可能很难~ 耐心一点

pip install apache-superset

file

成功!!

file

记录一下superset的安装位置 进入该目录

初始化
# 初始化数据库
python superset db upgrade

这个过程当中会提示缺乏包,初始化失败

file

依次安装便可 好比这里缺乏 flask_migrate

咱们就

pip install flask_migrate
# 建立管理员帐号
python superset fab create-admin

提示输入用户名 密码

file

# 载入案例数据 也会有点慢 服务器在国外 也能够多试几回 不行能够跳过
python superset load_examples

file

# 初始化角色和权限
python superset init

file

# 启动服务,默认端口号 5000,使用 -p 更改端口号
python superset run

成功!!

file

浏览器访问http://localhost:5000/

file

file

file

superset查询 展现druid数据

这时候还不能连Druid

须要安装pydruid

pip install pydruid

重启superset

新建数据源

file

file

成功!! 保存

file

新建刚才的表

file

file

进入表 设置展现效果

file

这里根据数据状况 进行各类展现设置

file

选择sqlLite 进行sql查询

file

至此实时数据分析平台已经搭建完成,能够进行实时数据的接入,展现,分析等等工做。

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();
    }
}

更多实时数据分析相关博文与科技资讯,欢迎关注 “实时流式计算”

相关文章
相关标签/搜索