vector/sinks/webhdfs/
mod.rs

1//! `webhdfs` sink.
2//!
3//! The Hadoop Distributed File System (HDFS) is a distributed file system
4//! designed to run on commodity hardware. HDFS consists of a namenode and a
5//! datanode. We will send rpc to namenode to know which datanode to send
6//! and receive data to. Also, HDFS will rebalance data across the cluster
7//! to make sure each file has enough redundancy.
8//!
9//! ```txt
10//!                     ┌───────────────┐
11//!                     │  Data Node 2  │
12//!                     └───────────────┘
13//!                             ▲
14//! ┌───────────────┐           │            ┌───────────────┐
15//! │  Data Node 1  │◄──────────┼───────────►│  Data Node 3  │
16//! └───────────────┘           │            └───────────────┘
17//!                     ┌───────┴───────┐
18//!                     │   Name Node   │
19//!                     └───────────────┘
20//!                             ▲
21//!                             │
22//!                      ┌──────┴─────┐
23//!                      │   Vector   │
24//!                      └────────────┘
25//! ```
26//!
27//! WebHDFS will connect to the HTTP RESTful API of HDFS.
28//!
29//! For more information, please refer to:
30//!
31//! - [HDFS Users Guide](https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html)
32//! - [WebHDFS REST API](https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/WebHDFS.html)
33//! - [opendal::services::webhdfs](https://docs.rs/opendal/latest/opendal/services/struct.Webhdfs.html)
34//!
35//! `webhdfs` is an OpenDal based services. This mod itself only provide
36//! config to build an [`crate::sinks::opendal_common::OpenDalSink`]. All real implement are powered by
37//! [`crate::sinks::opendal_common::OpenDalSink`].
38
39mod config;
40pub use self::config::WebHdfsConfig;
41
42#[cfg(test)]
43mod test;
44
45#[cfg(all(test, feature = "webhdfs-integration-tests"))]
46mod integration_tests;