新一代实时神器-Fluss初识及部署

Fluss 简介

Fluss 是一种为实时分析而构建的流式存储,可以用作 Lakehouse 架构的实时数据层。

新一代实时神器-Fluss初识及部署_第1张图片

Fluss 支持亚秒级延迟的流式读取写入,并以列格式存储数据,从而提高查询性能并降低存储成本。它提供灵活的表类型,包括仅追加日志表和可更新的 PrimaryKey 表,以满足不同的实时分析和处理需求。

在作者看来,其实 Fluss 目前的主要替换者是 Kafka,它的出现也是为了替换 kafka 在实时数仓链路中的部分,解决 Kafka 的缺点:

  1. 数据存储:kafka 数据存储在 Broker 本地,且一般只会存 7 天数据,在笔者公司更短,因为磁盘成本和数据量问题,实际下来kafka数据存储只有48小时,而Fluss 可以自动将数据存入远端存储,典型的就是HDFS,极大降低存储成本
  2. 数据查询:kafka 中间数据查询困难,数据排查只能根据异常数据时间,从某个时间点消费往后数据进行排查,而 Fluss 可以实现点查(K,V特性)
  3. 性能:当实时任务数据重刷或者数据查询时,指定历史偏移量或者时间消费kafaka中的历史数据,会导致 Kafka 的缓存失效,所有数据全部从磁盘拉取,影响性能;还有一点就是Fluss支持列裁剪,用户可以指读取需要的数据列降低 IO 开销。
  4. 数据落盘: 在Kafka的架构中,如果需要数据落盘,方便数仓开发人员排查问题,需要单独的任务进行处理写入 Paimon 或者 iceberg 等数据湖格式存储;Fluss 支持 LakeStorage 存储,降低了这一部分的使用门槛(当然 Lake storage 功能也是单独的写入Paimon等数据湖的Flink任务,但是整个Fluss库只需一个任务配置即可,不需要重复开发)。

有其他看法欢迎大家一起讨论。

安装方式

官方支持 Local Cluster (单机模式)Distributed Cluster (分布式机器模式),Docker 三种,这是部署 Distributed Cluster 模式

部署

环境准备

  • linux 系统
  • jdk 17 及以上 wget https://download.oracle.com/java/17/archive/jdk-17.0.12_linux-x64_bin.tar.gz
  • zookeeper 集群 最好 3.8以上,本次使用,3.8.4

部署规划

部署 一个 协调服务器(coordinator server) 和跨三台机器的多个 **Tablet 服务器 (tablet server)**组成的 Fluss 集群

组件 地址
CoordinatorServer 10.255.10.1
TabletServer 10.255.10.2
TabletServer 10.255.10.3
TabletServer 10.255.10.4

下载 Fluss

下载地址:https://alibaba.github.io/fluss-docs/downloads/

部署规划

组件 地址
CoordinatorServer 10.255.10.1
TabletServer 10.255.10.2
TabletServer 10.255.10.3
TabletServer 10.255.10.4
**ZK 地址 ** 10.255.10.2:2181,10.255.10.3:2181,10.255.10.4:2181

配置

配置文件 conf/server.yaml以下列出部署的主要配置信息

  • Coordinator Server 配置
#==============================================================================
# Zookeeper
#==============================================================================
# zookeeper 地址
zookeeper.address: 10.255.10.2:2181,10.255.10.3:2181,10.255.10.4:2181
zookeeper.path.root: /fluss

#==============================================================================
# Common
#==============================================================================

# THe default bucket number to be used when creating tables if no bucket number
# fluss 表默认的分桶数
default.bucket.number: 1

# The default replication factor to be used when creating tables if no replication
# fluss 表默认的备份
default.replication.factor: 2

# The local data directory to be used for Fluss to storing kv and log data.
# fluss 表本地存储路径,fluss 会将近期的实时数据存储在本地目录
data.dir: /data/fluss-data

# The remote data directory to be used for Fluss. Now, it is only used for storing
# 开启远程存储,这里使用 HDFS , fluss 可以将快照信息和历史数据存入远程存储
remote.data.dir: hdfs://HDPCluster/fluss-remote-data

#==============================================================================
# Coordinator Server
#==============================================================================
# Coordinator Server 地址
coordinator.host: 10.255.10.1
coordinator.port: 9123
  • Tablet Server 配置
#==============================================================================
# Zookeeper
#==============================================================================
# zookeeper 地址
zookeeper.address: 10.255.10.2:2181,10.255.10.3:2181,10.255.10.4:2181
zookeeper.path.root: /fluss

#==============================================================================
# Common
#==============================================================================

# THe default bucket number to be used when creating tables if no bucket number
# fluss 表默认的分桶数
default.bucket.number: 1

# The default replication factor to be used when creating tables if no replication
# fluss 表默认的备份
default.replication.factor: 2

# The local data directory to be used for Fluss to storing kv and log data.
# fluss 表本地存储路径,fluss 会将近期的实时数据存储在本地目录
data.dir: /data/fluss-data

# The remote data directory to be used for Fluss. Now, it is only used for storing
# 开启远程存储,这里使用 HDFS , fluss 可以将快照信息和历史数据存入远程存储
remote.data.dir: hdfs://HDPCluster/fluss-remote-data

#==============================================================================
# Coordinator Server
#==============================================================================
# Coordinator Server 地址
coordinator.host: 10.255.10.1
coordinator.port: 9123

#==============================================================================
# Tablet Server
#==============================================================================
# Tablet Server 配置 
tablet-server.host: 10.255.10.2

# The id of the tablet server to be run, must be set and should be different
# when running multiple tablet servers.
tablet-server.id: 1

  • tablet-server.id 是 TabletServer 的唯一 id,如果你有多个 TabletServer,你应该为每个 TabletServer 设置不同的 id。所以 TabletServer 其他配置都一样只有 tablet-server.hosttablet-server.id 需要更改,这里 tablet-server.id 分别为 1, 2, 3

  • 对于其他一些属性,您可以参考 配置 (https://alibaba.github.io/fluss-docs/docs/maintenance/configuration/)了解更多详细信息。

  • 注意 zookeeper 需要 3.8.x 版本 否则无法启动

  • 注意 关于 remote.data.dir 必须以 hdfs 开头,如果需要使用 nns 名称 这里是 HDPCluster 代替 namenode 的 host:port 形式,需要在部署机器配置 HADOOP_CONF_DIR环境变量,否则会报错无法识别 HDPCluster hostname 错误

服务启动

以上即完成了Fluss 分布式部署, 目前暂未发现 coordinator server 高可用部署方式 后续发现进行更新

  • coordinator启动

./bin/coordinator-server.sh start

  • tablet启动

./bin/tablet-server.sh start

你可能感兴趣的:(大数据,Flink,Fluss,flink,大数据,数据结构,etl)