Skip to content
 
 

Latest commit

 

History

479 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gopher

HDFS for Go(gohdfs)

GoDoc build

Important

寻找维护者!如果你或你所在的公司正在生产环境中使用此项目(我本人已不再使用), 并且有兴趣接手维护,请通过邮件联系。

这是一个原生 Go 语言 HDFS 客户端,通过 protocol buffers API 直接连接 NameNode, 无需 JVM 或 Hadoop 客户端。

它尽可能模仿 Go 标准库 os 包的风格,实现了 os.FileInfoos.PathError 等接口。

使用示例:

client, _ := hdfs.New("namenode:8020")

file, _ := client.Open("/mobydick.txt")

buf := make([]byte, 59)
file.ReadAt(buf, 48847)

fmt.Println(string(buf))
// => Abominable are the tumblers into which he pours his poison.

完整文档请查看 GoDoc

命令行工具

除了作为库使用,本项目还包含一个 HDFS 命令行客户端。核心设计理念是符合直觉——直接用你熟悉的 Unix 命令操作 HDFS:

$ gohdfs --help
Usage: gohdfs COMMAND
可用参数是 POSIX 命令的子集,行为保持一致。

可用命令:
  ls [-lahR] [FILE]...
  rm [-rf] FILE...
  mv [-nT] SOURCE... DEST
  mkdir [-p] FILE...
  touch [-c] FILE...
  chmod [-R] OCTAL-MODE FILE...
  chown [-R] OWNER[:GROUP] FILE...
  test [-defsz] FILE...
  cat SOURCE...
  head [-n LINES | -c BYTES] SOURCE...
  tail [-n LINES | -c BYTES] SOURCE...
  du [-sh] FILE...
  checksum FILE...
  get SOURCE [DEST]
  getmerge SOURCE DEST
  put [-f] SOURCE DEST
  df [-h]
  truncate SIZE FILE

由于不需要等待 JVM 启动,它比 hadoop fs 快得多:

$ time hadoop fs -ls / > /dev/null

real  0m2.218s
user  0m2.500s
sys 0m0.376s

$ time gohdfs ls / > /dev/null

real  0m0.015s
user  0m0.004s
sys 0m0.004s

另外还支持 bash 路径自动补全!

安装

releases 页面 下载压缩包,解压后即可使用。

配置客户端,确保以下环境变量之一指向你的 Hadoop 配置文件(core-site.xmlhdfs-site.xml)。 如果系统已安装 Hadoop,这些变量通常已经设置好了:

$ export HADOOP_HOME="/etc/hadoop"
$ export HADOOP_CONF_DIR="/etc/hadoop/conf"

在 Linux 上全局安装 bash 自动补全:

$ ln -sT bash_completion /etc/bash_completion.d/gohdfs

在非 Kerberos 集群中,HDFS 用户默认使用当前系统登录用户。可以通过环境变量覆盖:

$ export HADOOP_USER_NAME=username

Kerberos 认证

hadoop fs 一样,命令行客户端期望 ccache 文件位于默认路径 /tmp/krb5cc_<uid>。 直接使用 kinit 即可:

$ kinit bob@EXAMPLE.com
$ gohdfs ls /

如果不生效,尝试设置 KRB5CCNAME 环境变量指向你的 ccache 文件位置。

兼容性

本库使用 HDFS 协议 "Version 9",兼容基于 Hadoop 2.2.x 及以上版本(包括 3.x)的发行版。

致谢

本库的实现深受 snakebite 启发。

About

go hdfs client forked from https://github.com/colinmarc/hdfs

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages