HDFS
HDFS由大量伺服器組成存儲叢集,将資料進行分片與副本,實作高容錯。
而分片最小的機關就是塊。預設塊的大小是64M。
HDFS Cli操作
官網
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/FileSystemShell.html
啟動指令
sbin/start-dfs.sh
複制
停止指令
sbin/stop-dfs.sh
複制
建立目錄
hadoop fs -mkdir /chesterdata
複制
檢視是否建立成功
hadoop fs -ls /
複制
上傳檔案
hadoop fs -put test.txt /chesterdata
複制
檢視檔案
hadoop fs -ls /chesterdata
複制
驗證塊是不是64M,上傳一個130M的檔案
hadoop fs -put /usr/local/golang1181/go1.18.1.linux-amd64.tar.gz /chesterdata
複制
檢視此檔案的塊資訊,hdfs的指令
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html
hdfs fsck /chesterdata/go1.18.1.linux-amd64.tar.gz -files -blocks
複制
程式設計語言操作HDFS
在Github上搜hdfs可以看到哪些語言支援hdfs的操作
我們選擇golang來示範操作
引入github.com/colinmarc/hdfs,官網
https://pkg.go.dev/github.com/colinmarc/hdfs#section-readme
package main
import "github.com/colinmarc/hdfs"
複制
通過go mod tidy安裝
[root@localhost hdfsdemo]# go mod tidy
go: finding module for package github.com/colinmarc/hdfs
go: downloading github.com/colinmarc/hdfs v1.1.3
go: found github.com/colinmarc/hdfs in github.com/colinmarc/hdfs v1.1.3
go: finding module for package github.com/golang/protobuf/proto
複制
建立hdfsclient,并嘗試删除hdfs中的/chesterdata/go1.18.1.linux-amd64.tar.gz
package main
import (
"fmt"
"github.com/colinmarc/hdfs"
)
func main() {
client, _ := hdfs.New("localhost:9000")
err := client.Remove("/chesterdata/go1.18.1.linux-amd64.tar.gz")
fmt.Println(err)
}
複制
通過go run .運作
[root@localhost hdfsdemo]# go run .
<nil>
複制
通過cli檢查是否真正删除
[root@localhost hadoop-3.2.3]# hadoop fs -ls /chesterdata
複制