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;