WaterDrop On Spark(v1.x 版本只支持spark)

前言

Waterdrop 是一个非常易用,高性能,能够应对海量数据的实时数据处理产品,构建于Apache Spark之上。

开源项目地址:https://interestinglab.github.io/waterdrop

Spark固然是一个优秀的分布式数据处理工具,但Spark在我们的日常使用中还是存在不小的问题。因此可以通过某种方式让Spark的使用更简单,更高效,使用Spark的优质经验固化到Waterdrop这个产品中,明显减少学习成本,加快分布式数据处理能力在生产环境落地。

特性

  • 简单易用,灵活配置,无需开发;可运行在单机、Spark Standalone集群、Yarn集群、Mesos集群之上。
  • 实时流式处理, 高性能, 海量数据处理能力
  • 模块化和插件化,易于扩展。Waterdrop的用户可根据实际的需要来扩展需要的插件,支持Java/Scala实现的Input、Filter、Output插件。
  • 支持利用SQL做数据处理和聚合

原理和工作流程

WaterDrop On Spark(v1.x 版本只支持spark)_第1张图片

Waterdrop 利用了Spark的Streaming, SQL, DataFrame等技术,Java的反射机制、Service Loader等技术以及Antlr4的语法解析技术, 实现了一套完整的可插拔的数据处理工作流,如下:

WaterDrop On Spark(v1.x 版本只支持spark)_第2张图片

多个Filter构建了数据处理的Pipeline,满足各种各样的数据处理需求,如果您熟悉SQL,也可以直接通过SQL构建数据处理的Pipeline,简单高效。 目前Waterdrop支持的Filter列表(数据处理插件), 仍然在不断扩充中。 您也可以开发自己的数据处理插件,整个系统是易于扩展的。通过下面的配置示例,你可以快速了解到这种工作流程:

spark {
  # Waterdrop defined streaming batch duration in seconds
  spark.streaming.batchDuration = 5
  spark.app.name = "Waterdrop"
  spark.ui.port = 13000
}
input {
  socket {}
} 
filter {
  split {
    fields = ["msg", "name"]
    delimiter = ","
  }
}
output {
  stdout {}
}

亲测:

input:
    File
    FileStream
    Hdfs
    HdfsStream
    JDBC
    hive
file:
    split
    sql
    add
    drop
output:
    file
    hdfs
    kafka
    stdout(控制台输出)
    clickhouse
  • spark是spark相关的配置,可配置的spark参数见: Spark Configuration, 其中master, deploy-mode两个参数不能在这里配置,需要在Waterdrop启动脚本中指定。
  • input可配置任意的input插件及其参数,具体参数随不同的input插件而变化。input支持包括File, Hdfs, Kafka, S3, Socket等插件。
  • filter可配置任意的filter插件及其参数,具体参数随不同的filter插件而变化。filter支持包括Date, Json, Split, Sql, Table, Repartition等40+个插件。filter中的多个插件按配置顺序形成了数据处理的pipeline, 上一个filter的输出是下一个filter的输入。
  • output可配置任意的output插件及其参数,具体参数随不同的output插件而变化。

filter处理完的数据,会发送给output中配置的每个插件。output支持包括Elasticsearch, File, Hdfs, Jdbc, Kafka, Mysql, S3等插件。

WaterDrop 未来发展路线

Waterdrop 会分为3条路线,详细展开:

  • 提供更多Input, Filter, Output插件,提高易用性、可靠性、数据一致性。
  • 支持Apache Flink / Apache Beam,支持Spark以外的分布式数据计算模型。
  • 支持流式机器学习,能够通过简单的Pipeline和配置,完成常用流式机器学习模型的训练。

 

Waterdrop 项目由Interesting Lab开源。Interesting Lab (https://github.com/InterestingLab), 中文译名有趣实验室。成立于2016年,致力于让大数据变得更简单有价值。

你可能感兴趣的:(WaterDrop)