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


    file

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

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

    请注意,druid目前并不支持windows,所以我们将kafka 与 druid部署于我们的centos服务器中,而superset,可以在本地安装。

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

    注:对于本教程需要的所有安装包,如果需要请在公众号回复 “实时数仓安装包” 下载

    ​ 如果已有安装包,文中的Download安装包内容可以跳过~

    一、CentOS下安装Kafka

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

    下载安装包

    查看centos版本 cat /etc/redhat-release 我的是7.6

    file

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

    选择左下方Download按钮

    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

    二、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

    三、本地安装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 FilesPython37,这里可以点击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();
        }
    }
    

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

  • 相关阅读:
    upgrade和update的区别
    批处理文件的几种路径扩展
    CMD does not support UNC paths as current directories.的巧妙解决方案
    让批处理不回显错误信息
    python中那纠结的os.system()与空格处理
    jQuery Mobel 学习相关资料整理(一)
    c#获取某月的第一天和某月的最后一天
    Umbraco网站制作(七) 调用外部用户控件
    Umbraco网站制作(八) 实现伪静态
    Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。
  • 原文地址:https://www.cnblogs.com/tree1123/p/12793896.html
Copyright © 2020-2023  润新知