Some checks failed
go: build dev binaries / cleanup (push) Successful in 4s
Codespell / Check for spelling errors (push) Failing after 3s
docker: build dev containers / build-rust-binaries (amd64, x86_64-unknown-linux-musl) (push) Failing after 3s
docker: build dev containers / build-dev-containers (push) Has been skipped
docker: build dev containers / build-rust-binaries (arm64, true, aarch64-unknown-linux-musl) (push) Failing after 3s
End to End / FUSE Mount (push) Failing after 2s
EC Integration Tests / EC Integration Tests (push) Failing after 30s
FUSE DLM Integration Tests / FUSE DLM Integration Tests (push) Failing after 3s
FUSE Volume Server Failover Tests / FUSE Volume Server Failover (push) Failing after 3s
FUSE Integration Tests / FUSE Integration Testing (push) Failing after 2s
FUSE P2P Peer Chunk Sharing Integration Tests / FUSE P2P Peer Chunk Sharing (push) Failing after 3s
go: build binary / Go Vet (push) Failing after 2s
go: build binary / Go Vet 32-bit (push) Failing after 3s
go: build binary / Build (push) Failing after 4s
go: build binary / Build cross-platform (freebsd/amd64) (push) Failing after 3s
go: build binary / Build cross-platform (windows/amd64) (push) Failing after 3s
go: build binary / Build cross-platform (darwin/arm64) (push) Failing after 3s
go: build binary / Build cross-platform (windows/arm64) (push) Failing after 3s
go: build binary / Test (push) Failing after 2s
go: build binary / Test 32-bit (push) Failing after 3s
helm: lint and test charts / lint-test (push) Failing after 3s
Java Client Integration Tests / Java Integration Tests (11) (push) Failing after 3s
Java Client Integration Tests / Java Integration Tests (17) (push) Failing after 3s
go: build dev binaries / build_dev_linux_windows (amd64, linux) (push) Failing after 2s
go: build dev binaries / build_dev_linux_windows (amd64, windows) (push) Failing after 3s
go: build dev binaries / build_dev_darwin (amd64, darwin) (push) Has been skipped
go: build dev binaries / build_dev_darwin (arm64, darwin) (push) Has been skipped
Java Client Unit Tests / Java Unit Tests (11) (push) Failing after 3s
Java Client Unit Tests / Java Unit Tests (17) (push) Failing after 2s
Java Client Unit Tests / Java Unit Tests (21) (push) Failing after 3s
Java Client Unit Tests / Java Unit Tests (8) (push) Failing after 3s
Kafka Quick Test (Load Test with Schema Registry) / Kafka Client Load Test (Quick) (push) Failing after 3s
Kafka Gateway Tests / Kafka Unit Tests (unit-tests-1) (push) Failing after 11s
Kafka Gateway Tests / Kafka Integration Tests (Critical) (integration-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka End-to-End Tests (with SMQ) (e2e-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka Consumer Group Tests (Highly Isolated) (consumer-group-1) (push) Failing after 2s
Kafka Gateway Tests / Kafka Client Compatibility (with SMQ) (client-compat-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka SMQ Integration Tests (Full Stack) (smq-integration-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka Protocol Tests (Isolated) (protocol-1) (push) Failing after 3s
KMS Tests / KMS Provider Integration Tests (push) Failing after 2s
KMS Tests / S3 KMS End-to-End Tests (push) Failing after 3s
Master Cold Start Tests / Master Cold Start Tests (push) Failing after 4s
Metadata Subscribe Integration Tests / Metadata Subscribe Integration Tests (push) Failing after 3s
Multi-Master Tests / Multi-Master Failover Tests (push) Failing after 3s
Performance / CPU and Heap Profile (push) Failing after 2s
Performance / S3 Read/Write Benchmark (rust volume) (push) Failing after 3s
pjdfstest POSIX Compliance / pjdfstest (push) Failing after 2s
Plugin Worker Integration Tests / Plugin Worker: erasure_coding (push) Failing after 3s
Plugin Worker Integration Tests / Plugin Worker: vacuum (push) Failing after 3s
Rust Volume Server Tests / Rust Integration Tests (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 1) (push) Failing after 2s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 1) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 2) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 2) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 3) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Distributed Tests (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Performance Tests (push) Failing after 3s
Performance / Throughput Benchmark (go volume) (push) Failing after 3s
Performance / Throughput Benchmark (rust volume) (push) Failing after 2s
Performance / S3 Read/Write Benchmark (go volume) (push) Failing after 3s
Plugin Worker Integration Tests / Plugin Worker: volume_balance (push) Failing after 3s
PostgreSQL Gateway Tests / PostgreSQL Basic Tests (push) Failing after 3s
Rust Volume Server Tests / Rust Unit Tests (push) Failing after 2s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 3) (push) Failing after 3s
Rust Plugin Worker Tests / Rust Plugin Worker Build and Unit Tests (push) Failing after 3s
rust: build dev volume server binaries / cleanup (push) Successful in 3s
S3 ETag and ACL Tests / S3 ETag + ACL Integration Tests (push) Failing after 3s
S3 IAM Integration Tests / IAM Unit Tests (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (advanced) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (basic) (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Integration Tests (group) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (policy-enforcement) (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Integration Tests (sts) (push) Failing after 4s
S3 Keycloak Integration Tests / S3 Keycloak Integration Tests (push) Failing after 3s
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.11) (push) Failing after 3s
S3 PyArrow Parquet Tests / Go Unit Tests (Implicit Directory) (push) Has been cancelled
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.12) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-darwin (darwin-amd64, x86_64-apple-darwin) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-darwin (darwin-arm64, aarch64-apple-darwin) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-linux (linux-amd64, x86_64-unknown-linux-gnu) (push) Has been cancelled
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.9) (push) Has been cancelled
S3 Proxy Signature Tests / S3 Proxy Signature Verification Tests (push) Has been cancelled
S3 SDK V2 Route Disambiguation Tests / S3 SDK V2 Routing Tests (push) Has been cancelled
S3 SSE Tests / S3 SSE Integration Tests (quick) (push) Has been cancelled
S3 SSE Tests / S3 SSE Compatibility Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Metadata Persistence Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Copy Operations Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Multipart Upload Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Performance Test (push) Has been cancelled
S3 SSE Tests / S3 Volume Encryption Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Integration Tests (comprehensive) (push) Has been cancelled
Spark Integration Tests / Spark Integration Tests (push) Failing after 2s
Telemetry Integration Tests / telemetry-integration-test (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 1) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 1) (push) Failing after 3s
Ceph S3 tests / Basic S3 tests (KV store) (push) Has been cancelled
Ceph S3 tests / S3 Versioning & Object Lock tests (push) Has been cancelled
S3 Policy Integration Tests / S3 Policy Unit Tests (push) Failing after 3s
Ceph S3 tests / S3 CORS tests (push) Has been cancelled
Ceph S3 tests / SeaweedFS Custom S3 Copy tests (push) Has been cancelled
Ceph S3 tests / Basic S3 tests (SQL store) (push) Has been cancelled
test s3 over https using aws-cli / awscli-tests (push) Has been cancelled
TLS Rotation Integration Tests / TLS Rotation Integration Tests (push) Has been cancelled
Vacuum Integration Tests / Vacuum Integration Tests (push) Has been cancelled
S3 Policy Integration Tests / S3 Policy Variables Integration Tests (push) Failing after 3s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (advanced-policy) (push) Failing after 3s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (basic-policy) (push) Failing after 2s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (contextual-policy) (push) Failing after 4s
S3 Policy Integration Tests / Trusted Proxy Detection Tests (push) Failing after 2s
S3 Policy Integration Tests / S3 Policy Shell Integration Tests (push) Failing after 3s
Samba on FUSE Integration / samba-integration (push) Failing after 2s
SFTP Integration Tests / SFTP Integration Testing (push) Failing after 3s
terraform: validate and test modules / fmt, validate, plan-level tests (push) Failing after 3s
terraform: validate and test modules / local cluster smoke test (real weed) (push) Failing after 2s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 3) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 2) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 2) (push) Failing after 2s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 3) (push) Failing after 5s
mount: windows conformance / WinFsp conformance (push) Has been cancelled
mount: windows / Mount on Windows (push) Has been cancelled
200 lines
4.6 KiB
Markdown
200 lines
4.6 KiB
Markdown
# SeaweedFS Hadoop3 Client
|
|
|
|
Hadoop FileSystem implementation for SeaweedFS, compatible with Hadoop 3.x.
|
|
|
|
## Building
|
|
|
|
```bash
|
|
mvn clean install
|
|
```
|
|
|
|
## Testing
|
|
|
|
This project includes two types of tests:
|
|
|
|
### 1. Configuration Tests (No SeaweedFS Required)
|
|
|
|
These tests verify configuration handling and initialization logic without requiring a running SeaweedFS instance:
|
|
|
|
```bash
|
|
mvn test -Dtest=SeaweedFileSystemConfigTest
|
|
```
|
|
|
|
### 2. Integration Tests (Requires SeaweedFS)
|
|
|
|
These tests verify actual FileSystem operations against a running SeaweedFS instance.
|
|
|
|
#### Prerequisites
|
|
|
|
1. Start SeaweedFS with default ports:
|
|
```bash
|
|
# Terminal 1: Start master
|
|
weed master
|
|
|
|
# Terminal 2: Start volume server
|
|
weed volume -master=localhost:9333
|
|
|
|
# Terminal 3: Start filer
|
|
weed filer -master=localhost:9333
|
|
```
|
|
|
|
2. Verify services are running:
|
|
- Master: http://localhost:9333
|
|
- Filer HTTP: http://localhost:8888
|
|
- Filer gRPC: localhost:18888
|
|
|
|
#### Running Integration Tests
|
|
|
|
```bash
|
|
# Enable integration tests
|
|
export SEAWEEDFS_TEST_ENABLED=true
|
|
|
|
# Run all tests
|
|
mvn test
|
|
|
|
# Run specific test
|
|
mvn test -Dtest=SeaweedFileSystemTest
|
|
```
|
|
|
|
### Test Configuration
|
|
|
|
Integration tests can be configured via environment variables or system properties:
|
|
|
|
- `SEAWEEDFS_TEST_ENABLED`: Set to `true` to enable integration tests (default: false)
|
|
- Tests use these default connection settings:
|
|
- Filer Host: localhost
|
|
- Filer HTTP Port: 8888
|
|
- Filer gRPC Port: 18888
|
|
|
|
### Running Tests with Custom Configuration
|
|
|
|
To test against a different SeaweedFS instance, modify the test code or use Hadoop configuration:
|
|
|
|
```java
|
|
conf.set("fs.seaweed.filer.host", "your-host");
|
|
conf.setInt("fs.seaweed.filer.port", 8888);
|
|
conf.setInt("fs.seaweed.filer.port.grpc", 18888);
|
|
```
|
|
|
|
## Test Coverage
|
|
|
|
The test suite covers:
|
|
|
|
- **Configuration & Initialization**
|
|
- URI parsing and configuration
|
|
- Default values
|
|
- Configuration overrides
|
|
- Working directory management
|
|
|
|
- **File Operations**
|
|
- Create files
|
|
- Read files
|
|
- Write files
|
|
- Append to files
|
|
- Delete files
|
|
|
|
- **Directory Operations**
|
|
- Create directories
|
|
- List directory contents
|
|
- Delete directories (recursive and non-recursive)
|
|
|
|
- **Metadata Operations**
|
|
- Get file status
|
|
- Set permissions
|
|
- Set owner/group
|
|
- Rename files and directories
|
|
|
|
## Usage in Hadoop
|
|
|
|
1. Copy the built JAR to your Hadoop classpath:
|
|
```bash
|
|
cp target/seaweedfs-hadoop3-client-*.jar $HADOOP_HOME/share/hadoop/common/lib/
|
|
```
|
|
|
|
2. Configure `core-site.xml`:
|
|
```xml
|
|
<configuration>
|
|
<property>
|
|
<name>fs.seaweedfs.impl</name>
|
|
<value>seaweed.hdfs.SeaweedFileSystem</value>
|
|
</property>
|
|
<property>
|
|
<name>fs.seaweed.filer.host</name>
|
|
<value>localhost</value>
|
|
</property>
|
|
<property>
|
|
<name>fs.seaweed.filer.port</name>
|
|
<value>8888</value>
|
|
</property>
|
|
<property>
|
|
<name>fs.seaweed.filer.port.grpc</name>
|
|
<value>18888</value>
|
|
</property>
|
|
<!-- Optional: Replication configuration with three priority levels:
|
|
1) If set to non-empty value (e.g. "001") - uses that value
|
|
2) If set to empty string "" - uses SeaweedFS filer's default replication
|
|
3) If not configured (property not present) - uses HDFS replication parameter
|
|
-->
|
|
<!-- <property>
|
|
<name>fs.seaweed.replication</name>
|
|
<value>001</value>
|
|
</property> -->
|
|
</configuration>
|
|
```
|
|
|
|
3. Use SeaweedFS with Hadoop commands:
|
|
```bash
|
|
hadoop fs -ls seaweedfs://localhost:8888/
|
|
hadoop fs -mkdir seaweedfs://localhost:8888/test
|
|
hadoop fs -put local.txt seaweedfs://localhost:8888/test/
|
|
```
|
|
|
|
## Continuous Integration
|
|
|
|
For CI environments, tests can be run in two modes:
|
|
|
|
1. **Configuration Tests Only** (default, no SeaweedFS required):
|
|
```bash
|
|
mvn test -Dtest=SeaweedFileSystemConfigTest
|
|
```
|
|
|
|
2. **Full Integration Tests** (requires SeaweedFS):
|
|
```bash
|
|
# Start SeaweedFS in CI environment
|
|
# Then run:
|
|
export SEAWEEDFS_TEST_ENABLED=true
|
|
mvn test
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Tests are skipped
|
|
|
|
If you see "Skipping test - SEAWEEDFS_TEST_ENABLED not set":
|
|
```bash
|
|
export SEAWEEDFS_TEST_ENABLED=true
|
|
```
|
|
|
|
### Connection refused errors
|
|
|
|
Ensure SeaweedFS is running and accessible:
|
|
```bash
|
|
curl http://localhost:8888/
|
|
```
|
|
|
|
### gRPC errors
|
|
|
|
Verify the gRPC port is accessible:
|
|
```bash
|
|
# Should show the port is listening
|
|
netstat -an | grep 18888
|
|
```
|
|
|
|
## Contributing
|
|
|
|
When adding new features, please include:
|
|
1. Configuration tests (no SeaweedFS required)
|
|
2. Integration tests (with SEAWEEDFS_TEST_ENABLED guard)
|
|
3. Documentation updates
|
|
|