<commit_before># Waterdrop

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

## 为什么我们需要 Waterdrop

Databricks 开源的 Apache Spark 对于分布式数据处理来说是一个伟大的进步。我们在使用 Spark 时发现了很多可圈可点之处，同时我们也发现了我们的机会 —— 通过我们的努力让Spark的使用更简单，更高效，并将业界和我们使用Spark的优质经验固化到Waterdrop这个产品中，明显减少学习成本，加快分布式数据处理能力在生产环境落地。

除了大大简化分布式数据处理难度外，Waterdrop尽所能为您解决可能遇到的问题：
* 数据丢失与重复
* 任务堆积与延迟
* 吞吐量低
* 应用到生产环境周期长
* 缺少应用运行状态监控


"Waterdrop" 的中文是“水滴”，来自中国当代科幻小说作家刘慈欣的《三体》系列，它是三体人制造的宇宙探测器，会反射几乎全部的电磁波，表面绝对光滑，温度处于绝对零度，全部由被强互作用力紧密锁死的质子与中子构成，无坚不摧。在末日之战中，仅一个水滴就摧毁了人类太空武装力量近2千艘战舰。

## Waterdrop 使用场景

* 海量数据ETL
* 海量数据聚合
* 多源数据处理

## Waterdrop 的特性

* 简单易用，灵活配置，无需开发
* 支持实时流式处理和离线分批处理2种运行模式
* 高性能
* 海量数据处理能力
* 模块化和插件化，易于扩展
* 支持利用SQL做数据处理和聚合
* 支持spark 1.6 ～ spark 2.x

## Waterdrop 的工作流程

input[数据源输入] -> serializer[数据反序列化] -> filter[数据处理] -> serializer[数据序列化] -> output[结果输出]

## Waterdrop 支持的插件

* Input plugin

Hdfs, Http, Kafka, Redis, Stdin, Tcp, 自行开发的Input plugin

* Filter plugin

Aggregate, Clone, Date, Dict, Drop, Geoip, Grok, Kv, Prune, Range, Split, SQL, 自行开发的Filter plugin

* Output plugin

Elasticsearch, File, HBase, Hdfs, Http, Kafka, Mongodb, MySQL, Stdout, 自行开发的Output plugin

* Serializer plugin

Carbondata, Csv, Json, Gzip, ORC, Parquet, Protobuf, Raw, 自行开发的Serializer plugin

## 环境依赖

需要以下Spark集群环境的任意一种：
* Spark on Yarn
* Spark Standalone
* Spark on Mesos

如果您的数据量较小或者只是做功能验证，也可以仅使用local模式启动，无需集群环境。

## 配置

[Waterdrop 配置](./docs/english/index.md)

## 部署和测试

## 性能调优

## 开发者指引<commit_msg>added introduction ppt of waterdrop<commit_after># Waterdrop

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

## 为什么我们需要 Waterdrop

Databricks 开源的 Apache Spark 对于分布式数据处理来说是一个伟大的进步。我们在使用 Spark 时发现了很多可圈可点之处，同时我们也发现了我们的机会 —— 通过我们的努力让Spark的使用更简单，更高效，并将业界和我们使用Spark的优质经验固化到Waterdrop这个产品中，明显减少学习成本，加快分布式数据处理能力在生产环境落地。

除了大大简化分布式数据处理难度外，Waterdrop尽所能为您解决可能遇到的问题：
* 数据丢失与重复
* 任务堆积与延迟
* 吞吐量低
* 应用到生产环境周期长
* 缺少应用运行状态监控


"Waterdrop" 的中文是“水滴”，来自中国当代科幻小说作家刘慈欣的《三体》系列，它是三体人制造的宇宙探测器，会反射几乎全部的电磁波，表面绝对光滑，温度处于绝对零度，全部由被强互作用力紧密锁死的质子与中子构成，无坚不摧。在末日之战中，仅一个水滴就摧毁了人类太空武装力量近2千艘战舰。

## Waterdrop 使用场景

* 海量数据ETL
* 海量数据聚合
* 多源数据处理

## Waterdrop 的特性

* 简单易用，灵活配置，无需开发
* 支持实时流式处理和离线分批处理2种运行模式
* 高性能
* 海量数据处理能力
* 模块化和插件化，易于扩展
* 支持利用SQL做数据处理和聚合
* 支持spark 1.6 ～ spark 2.x

## Waterdrop 的工作流程

input[数据源输入] -> serializer[数据反序列化] -> filter[数据处理] -> serializer[数据序列化] -> output[结果输出]

## Waterdrop 支持的插件

* Input plugin

Hdfs, Http, Kafka, Redis, Stdin, Tcp, 自行开发的Input plugin

* Filter plugin

Aggregate, Clone, Date, Dict, Drop, Geoip, Grok, Kv, Prune, Range, Split, SQL, 自行开发的Filter plugin

* Output plugin

Elasticsearch, File, HBase, Hdfs, Http, Kafka, Mongodb, MySQL, Stdout, 自行开发的Output plugin

* Serializer plugin

Carbondata, Csv, Json, Gzip, ORC, Parquet, Protobuf, Raw, 自行开发的Serializer plugin

## 环境依赖

需要以下Spark集群环境的任意一种：
* Spark on Yarn
* Spark Standalone
* Spark on Mesos

如果您的数据量较小或者只是做功能验证，也可以仅使用local模式启动，无需集群环境。

## 配置/文档

[Waterdrop介绍PPT](http://slides.com/garyelephant/waterdrop/fullscreen?token=<PASSWORD>)

[Waterdrop 配置](./docs/english/index.md)

## 部署和测试

## 性能调优

## 开发者指引
{'fraction_non_alphanumeric': 0.10867430441898528, 'fraction_numerical': 0.0032733224222585926, 'mean_word_length': 6.564356435643564, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 12, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4749629', 'n_tokens_mistral': 2034, 'n_tokens_neox': 2269, 'n_words': 240}