Centos7.8 安装Waterdrop

1. Waterdrop由来

1.1. 什么是Waterdrop

Waterdrop 是一个非常易用,高性能、支持实时流式离线批处理的海量数据处理产品,架构于Apache Spark 和 Apache Flink之上。
“Waterdrop” 的中文是“水滴”,来自中国当代科幻小说作家刘慈欣的《三体》系列,它是三体人制造的宇宙探测器,会反射几乎全部的电磁波,表面绝对光滑,温度处于绝对零度,全部由被强互作用力紧密锁死的质子与中子构成,无坚不摧。在末日之战中,仅一个水滴就摧毁了人类太空武装力量近2千艘战舰。

1.2. 为什么我们需要 Waterdrop

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

除了大大简化分布式数据处理难度外,Waterdrop尽所能为您解决可能遇到的问题:

  • 数据丢失与重复
  • 任务堆积与延迟
  • 吞吐量低
  • 应用到生产环境周期长
  • 缺少应用运行状态监控

1.3. Waterdrop 使用场景

  • 简单易用,灵活配置,无需开发
  • 实时流式处理
  • 高性能
  • 海量数据处理能力
  • 模块化和插件化,易于扩展
  • 支持利用SQL做数据处理和聚合
  • Spark Structured Streaming
  • 支持Spark 2.x

1.4. Waterdrop 的工作流程

Input/Source[数据源输入] -> Filter/Transform[数据处理] -> Output/Sink[结果输出]

在这里插入图片描述
多个Filter构建了数据处理的Pipeline,满足各种各样的数据处理需求,如果您熟悉SQL,也可以直接通过SQL构建数据处理的Pipeline,简单高效。目前Waterdrop支持的Filter列表, 仍然在不断扩充中。您也可以开发自己的数据处理插件,整个系统是易于扩展的。

1.5. Waterdrop 支持的插件

  • Input/Source plugin
    Fake, File, Hdfs, Kafka, S3, Socket, 自行开发的Input plugin

  • Filter/Transform plugin
    Add, Checksum, Convert, Date, Drop, Grok, Json, Kv, Lowercase, Remove, Rename, Repartition, Replace, Sample, Split, Sql, Table, Truncate, Uppercase, Uuid, 自行开发的Filter plugin

  • Output/Sink plugin
    Elasticsearch, File, Hdfs, Jdbc, Kafka, Mysql, S3, Stdout, 自行开发的Output plugin

1.6. 环境依赖

1.java运行环境,java >= 8

2.如果您要在集群环境中运行Waterdrop,那么需要以下Spark集群环境的任意一种:

  • Spark on Yarn
  • Spark Standalone
  • Spark on Mesos
    如果您的数据量较小或者只是做功能验证,也可以仅使用local模式启动,无需集群环境,Waterdrop支持单机运行

2. Waterdrop安装部署

2.1. 环境准备

1.Waterdrop 依赖JDK1.8运行环境。
2.Waterdrop 依赖Spark,安装Waterdrop前,需要先准备好Spark。 请先下载Spark, Spark版本请选择 >= 2.x.x。下载解压后,不需要做任何配置即可提交Spark deploy-mode = local模式的任务。 如果你期望任务运行在Standalone集群或者Yarn、Mesos集群上,请参考Spark官网配置文档。

2.2. 下载安装Waterdrop

下载地址:
社区版本(Community)
https://github.com/InterestingLab/waterdrop/releases

商业版本(Enterprise)
https://pan.baidu.com/s/15y4OcpXIumahiaYM0x6oiw
下载Waterdrop安装包并解压, 这里以社区版为例:

wget https://github.com/InterestingLab/waterdrop/releases/download/v<version>/waterdrop-<version>.zip -O waterdrop-<version>.zip
unzip waterdrop-<version>.zip
ln -s waterdrop-<version> waterdrop

2.3. 快速开始

我们以一个通过socket接收数据,将数据分割为多个字段,并输出处理结果的应用为例,快速展示Waterdrop的使用方法。

步骤1:配置 Waterdrop

编辑 config/waterdrop-env.sh, 指定必须环境配置如SPARK_HOME(Spark下载并解压后的目录)

编辑 config/application.conf, 它决定了Waterdrop启动后,数据输入,处理,输出的方式和逻辑。

spark {
  # Waterdrop defined streaming batch duration in seconds
  spark.streaming.batchDuration = 5

  spark.app.name = "Waterdrop"
  spark.ui.port = 13000
}

input {
  socketStream {}
}

filter {
  split {
    fields = ["msg", "name"]
    delimiter = ","
  }
}

output {
  stdout {}
}

步骤2:启动netcat server用于发送数据

nc -l -p 9999

步骤3:启动Waterdrop

cd waterdrop
./bin/start-waterdrop.sh --master local[4] --deploy-mode client --config ./config/application.conf

步骤4:在nc端输入

Hello World, Gary

Waterdrop日志打印出:

+-----------------+-----------+----+
|raw_message      |msg        |name|
+-----------------+-----------+----+
|Hello World, Gary|Hello World|Gary|
+-----------------+-----------+----+

3. 总结

Waterdrop简单易用,还有更丰富的数据处理功能等待被发现。本文展示的数据处理案例, 无需任何代码、编译、打包,比官方的Quick Example更简单。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值