单机,伪分布式,完全分布式-----搭建Hadoop大数据平台

Hadoop大数据——
随着计算机技术的发展,互联网的普及,信息的积累已经到了一个非常庞大的地步,信息的增长也在不断的加快。
信息更是爆炸性增长,收集,检索,统计这些信息越发困难,必须使用新的技术来解决这些问题。
大数据由巨型数据组成,这些数据集大小超出人类在可接受时间下的收集,使用,管理和处理能力。
把数据集合并进行分析可得出许多额外的信息和数据关系性,可用来察觉商业趋势,判定研究质量,避免疾病扩散,打击犯罪或测定及时交通路况等,这样的用途正是大型数据集盛行的原因。
从各种各样类型的数据中,快速获得有价值信息的能力,适用于大数据的技术,包括大规模并行处理数据库,数据挖掘电网,分布式文件系统,分布式数据库,云计算平台,互联网,和可扩展的存储系统。



大数据特性——
 数量:TB/EB级,记录/日志,事物,表&文件
 速度:批处理,实时,多进程,数据流
 种类:结构化,非结构化,多因素,概率性
 价值:统计学,事件性,相关性,假设性
 真实性:可信性,真伪性,来源&信誉,有效性,可审计性



大数据与Hadoop——
 Hadoop是一种分析和处理海量数据的软件平台,开源,使用Java开发,可以提供一个分布式基础架构。
 特点:高扩展性,高可靠性,高效性,高容错性,低成本


Hadoop起源——
03年开始,Google陆续发表了几篇论文,GFS,MapReducs,BigTable。
GFS是一个可扩展的分布式文件系统,用于大型的,分布式的,对大量数据进行访问的应用,他运行于廉价的平台硬件上,提供容错功能。
Mapreduce是针对分布式并行计算的一套编程模型,由MAP和reducs组成,,Map是影设,把指令分发到多个worker上去,reducs是规约,把Map的worker计算出来的结果合并。
 bigtable:存储结构化数据,bigtable是建立在GFS,scheduler,lockserver和Mapreduce之上的,每个table都是一个多维的稀疏图。

这三大技术被称为Google的三驾马车,虽然Google没有公布这三个产品的源码,但是他发布了这三个产品的详细设计论文,
Yahoo资助Hadoop按照这三篇论文的开源Java实现,不过在性能上Hadoop比Google要差很多。
 GFS-----> HDFS
 Mapreduce--------> Mapreduce
 bigtable-------> Hbase



Hadoop常用组件——
 hdfs(hadoop分布式文件系统)
 mapreduce(分布式计算框架)
 zookeeper(分布式协作服务)
 hbase(分布式列存数据库)
 hive(基于Hadoop的数据仓库)
 sqoop(数据同步工具)
 pig(基于Hadoop的数据流系统)
 mahout(数据挖倔算法库)
 flume(日志收集工具)


Hadoop核心组件——
 processing:spark,mapreduce(分布式计算框架)
 resource management:yarn(集群资源管理系统)
 storage:hdfs(分布式文件系统)


hdfs角色及概念——
 是Hadoop体中数据存储管理的基础,他是一个高度容错的系统,用于低成本的通用硬件上运行。

角色和概念:
 client---(切分文件,访问hdfs,与namednode交互,获取文件位置信息,与datanode交互,读取和写入数据)
 namenode---(master节点,管理hdfs的名称空间和数据块映射信息,配置副本策略,处理所有客户端请求)
 secondary namenode---(定期合并fsimage和fsedits,推送给namenode,紧急情况下,可辅助恢复namenode,它并非是热备份)
 datanode---(数据存储节点,存储实际的数据,汇报存储信息给namenode)
 block:每块缺省64mb大小,每块可以多个副本



mapreduce结构——
源自Google的mapreduce论文,java实现的分布式计算框架。
 
角色及概念:
  jobtracker--(master节点,只有一个,管理所有作业,任务/作业的监控,错误处理等,将任务分解成一系列任务,并分派给tasktracker)
  tasktracker--(slave节点,一般是多台,运行map task和reduce task,并与jobtracker交互,汇报任务状态)
  map task--(解析每条数据记录,传递给用户编写的map(),并执行,将输出结果写入本地磁盘,如果为map-only作业,直接写入hdfs)
  reducer task--(从map task的执行结果中,远程读取输入数据,对数据进行排序,将数据按照分组传递给用户编写的reduce函数执行)


yarn结构——
yarn是Hadoop的一个通用的资源管理系统,yarn的核心思想是将jobtracker和tasktacker进行分离。
 由下面极大构成组件:
  resourcemanager:一个全局的资源管理器
  nodemanager:每个节点(RM)代理
  applicationmaster:表示每个应用
  每一个applicationmaster有多个container在nodemanager上运行。

yarn角色:
 resourcemanager--(处理客户端请求,启动/监控applicationmaster,监控nodemanager,资源分配与调度)
 nodemanager--(单个节点上的资源管理,处理来自resourcemanager和applicationmaster的命令)
 applicationmaster--(数据切分,为应用程序申请资源,并分配给内部任务,任务监控与容错)
 container--(对任务运行环境的抽象,封装了cpu,内存等,多维资源以及环境变量,启动命令等任务运行相关的信息资源分配与调度)
 client--(用户与yarn交互的客户端程序,提交应用程序,监控应用程序状态,杀死应用程序等)



————————————————————————————————————————————————————————————————————————————————————————————————————————————



Hadoop安装配置——
 Hadoop的部署模式有三种
  单机
  伪分布式(伪分布式的安装和完全分布式安装一样,区别是所有角色都安装在一台机器上,使用本地磁盘,一般生产环境都会使用完全分布式,伪分布式一般用学习和测试方面的功能,所以这次为分布式就不搭建了)
  完全分布式


Hadoop单机模式安装配置:
  Hadoop的单机模式安装非常简单,只需要配置好环境变量即可运行,这个模式一般用来学习和测试。(配置时注意把主机名和对应的ip地址加到hosts文件上,dns是不管用的)
  获取软件:http://hadoop.apache.org
  安装配置java环境,安装jps工具:安装openjdk和openjdk-devel
  设置环境变量,启动运行:hadoop-env.sh JAVA_HOME=""

[root@x ~]# yum -y install java-1.8.0-openjdk-devel.x86_64(安装Java开发包)
[root@x ~]# java -version(安装jdk后运行命令要能看见版本信息)
openjdk version "1.8.0_131"
[root@x ~]# jps(jps要可以看见pid号)
1527 Jps
[root@x ~]# tar -xvf hadoop-2.8.4.tar.gz(解压)
[root@x ~]# mv hadoop-2.8.4 /usr/local/hadoop(移动到/usr/local/hadoop下)
[root@x ~]# rpm -qa | grep openjdk(查看openjdk的安装信息)
[root@x ~]# rpm -ql java-1.8.0-openjdk-devel-1.8.0.131-11.b12.el7.x86_64(查看openjdk安装到哪个目录下)
..........
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/bin
..........
[root@x]# cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre/(Java的家目录)
[root@x hadoop]# cd /usr/local/hadoop/etc/hadoop/(到Hadoop的配置目录下)
[root@x hadoop]# vim hadoop-env.sh(修改配置Java环境变量)
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre"
(Java的家目录)
export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"(修改Hadoop的配置文件路径)
[root@x bin]# ./hadoop version(到/usr/local/hadoop/bin目录执行命令,可以看到版本信息就说明没问题了)
Hadoop 2.8.4
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 17e75c2a11685af3e043aa5e604dc831e5b14674
Compiled by jdu on 2018-05-08T02:50Z
Compiled with protoc 2.5.0
From source with checksum b02a59bb17646783210e979bea443b0
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.8.4.jar




模块简介:
[root@x hadoop]# ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.4.jar
An example program must be given as the first argument.
Valid program names are:
  aggregatewordcount:
  aggregatewordhist:
  bbp:
  dbcount:
  distbbp:
  grep:(支持正则表达式,匹配关键字)
  join:
  multifilewc:
  pentomino:
  pi:
  randomtextwriter:
  randomwriter:
  secondarysort:
  sort:
  sudoku:
  teragen:
  terasort:
  teravalidate:
  wordcount:(统计模块,统计每个词出现的频率,把要分析的文件结果放到指定的某个文件下)
  wordmean:
  wordmedian:
  wordstandarddeviation:




实例:
[root@x hadoop]# ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.4.jar wordcount /root/xx/passwd /root/output(运行wordcount统计模块,我提前在root/xx/复制了、etc/passwd这个文件,现在就是分析这个文件,并把分析结果放到root/output这个文件)
[root@x ~]# cat output/part-r-00000 (统计每个词出现的频率)
Daemon:/var/lib/rpcbind:/sbin/nologin    1
Management:/:/sbin/nologin    1
Network    1
SSH:/var/empty/sshd:/sbin/nologin    1
User:/var/ftp:/sbin/nologin    1
abrt:x:173:173::/etc/abrt:/sbin/nologin    1



[root@x hadoop]# ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.4.jar grep /root/xx/passwd /root/xxx 'uuid'(运行grep正则匹配模式,匹配root/xx/passwd/这个文件的uuid这个关键字,把内容保存到root/xxx文件里)
[root@x ~]# cat xxxx/part-r-00000(查看结果root出现了4次)
4    root




————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

Hadoop伪分布式
Hadoop-env.sh(配置环境变量)
    JAVA_HOME
    HADOOP_CONF_DIR


Xml文件配置格式(name和value是对应的,且只能修改变量值,关键字不可修改)
  <configuration>
      <property>(关键配置)
          <name>关键字</name>
          <value>变量值</value>
          <description>描述</description>(描述写也可以,不写就dd)
      </property>
      <property>(常用配置)
         <name>关键字</name>
         <value>变量值</value>
      </property>
  </configuration>


cd /usr/local/hadoop/etc/hadoop/
core-site.xml  详细介绍:http://hadoop.apache.org/docs/r2.8.4/hadoop-project-dist/hadoop-common/core-default.xml

hdfs-site.xml  详细介绍:http://hadoop.apache.org/docs/r2.8.4/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
  dfs.replication:设置数据存放多少份
  dfs.namenode.name.dir:存映射关系数据的路径
  dfs.datanode.data.dir:真实存放数据的路径
  dfs.namenode.http-address:namenode
  dfs.namenode.secnodary.http-address:namenode的辅助
  dfs.webhdfs.enabled:默认正常情况会打开调用,在互联网下为了安全起见要关闭
  dfs.permissions.enabled:设置hdfs的一个权限,默认打开,


mapred-default.xml: 详细介绍:http://hadoop.apache.org/docs/r2.8.4/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
  mapreduce.framework.name:使用什么样的集群管理系统,默认是local
  mapreduce.jobtracker.http.address:jobtracker的ip地址
  mapreduce.jobhistory.address:
  mapreduce.jobhistory.webapp.address:


yarn-default.xml  详细介绍:http://hadoop.apache.org/docs/r2.8.4/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
  yarn.resourcemanager.hostname:(配了这个值,倒数1到5的值都不用配置,不配置hostname,后面的都要配置)
  yarn.nodemanager.aux-services:
  yarn.nodemanager.aux-services.mapreduce_shuffle.class:(使用什么样的类)
  yarn.resourcemanager.address:
  yarn.resourcemanager.scheduler.address:
  yarn.resourcemanager.resource-tracker.address:
  yarn.resourcemanager.admin.address:
  yarn.resourcemanager.webapp.address:

Deprecated Properties  详细介绍:http://hadoop.apache.org/docs/r2.8.4/hadoop-project-dist/hadoop-common/DeprecatedProperties.html


[root@x ~]# cd /usr/local/hadoop/etc/hadoop/
[root@x hadoop]# vim core-site.xml
<configuration>
    <property>(关键配置)
      <name>fs.defaultFs</name>(Hadoop运行起来使用哪个集群的文件系统)
      <value>hdfs://x.sec.com:9000</value>(hdfs表示及群文件系统 namenode主机和端口号)
    </property>
    <property>(常用配置)
      <name>hadoop.tmp.dir</name>(Hadoop数据存放地址)
      <value>/vat/hadoop</value>(数据存放路径)
    </property>
</configuration>


实例:常用的配置文件
[root@x hadoop]# vim hdfs-site.xml
<configuration>
    <property>
        <name>dfs.namenode.http-address</name>(namenode)
        <value>x.sec.com:50070</value>(hosts文件里的域名或者ip地址:端口)
    </property>
    <property>
        <name>dfs.namenode.secnodary.http-address</name>(namenode辅助)
        <value>x.sec.com:50070</value>(namenode主机的域名或者ip地址:端口)
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
</conoiguration>

[root@x hadoop]# cp mapred-site.xml.template mapred-site.xml(默认是template,复制一份)
[root@x hadoop]# vim mapred-site.xml
<configuration>
    <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>(集群管理系统用yarn)
    </property>
    <property>
      <name>mapreduce.jobhistory.http.address</name>(jobhistory)
      <value>x.sec.com:50030</value>(jobhistory主机的域名或者ip地址:端口)
    </property>
</configuration>

[root@x hadoop]# vim yarn-site.xml
<configuration>
    <property>
      <name>yarn.resourcemanager.hostname</name>(resourcemanager.hostname)
      <value>x.sec.com</value>(地址)
    </property>
    <property>
      <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
      <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
</configuration>

到此,伪分布式配置到此结束。


————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————


HDFS分布式文件系统:
 分布式文件系统,是指文件系统管理的物理存储资源不一定直接链接在本地节点上,而是通过计算机网络与节点相连
 分布式文件系统的设计基于客户机/服务器模式,一个典型的网络可能包括多个供多用户访问的服务器,对等特性允许一些系统扮演客户机和服务器的双重角色。



完全分布式Hadoop搭建配置
搭建前的准备:把所有主机的selinux和防火墙关闭,并安装jdk环境,在所有主机的hosts文件下,写上对应的主机名和ip地址,就算有dns也不会生效,一定要在hosts文件下把主机对应的ip地址写上。确保安装不会出错。注意:保证所有机器上的系统版本及Java版本的一致性,保证所有安装路径的一致性,还要配置ssh信任关系,主机xx(也就是namenode,secondarynamenode,resouremanager这角色的主机)不需要输入yes也要能成功其他主机。

[root@xx ~]# rm -rf /root/.ssh/known_hosts(把这里的公钥删除)
[root@xx ~]# ssh-keygen -t rsa(rsa加密方式,生成密钥对)
Enter file in which to save the key (/root/.ssh/id_rsa): (回车)
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y(yes)
Enter passphrase (empty for no passphrase):(回车)
Enter same passphrase again: (回车)
SHA256:uNb56uc2XhAD0O3lTgnPLykRcNq1mnH4isrG9j0UTGY root@xx
The key's randomart image is:
+---[RSA 2048]----+
|      .ooo. .    |
|        .=Eo..   |
|        .**Bo.   |
|       .  =O*    |
|      . S +=.o   |
|       o ooo+ .  |
|     .o +.....   |
|     o+. o=.     |
|     ooo+*=o     |
+----[SHA256]-----+
[root@xx ~]# cd /root/.ssh/(进入ssh的秘钥保存文件)
[root@xx .ssh]# scp -p ~/.ssh/id_rsa.pub 172.16.232.30:/root/.ssh/authorized_keys(把秘钥scp到其他客户机,也把这个公钥cp并覆盖到自己主机的authorized_keys,这样登录自己也可以免密码登录)

扩展:
  authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
  id_rsa : 生成的私钥文件
  id_rsa.pub : 生成的公钥文件
  know_hosts : 已知的主机公钥清单

准备4台服务器,并规划好主机对应的角色
主机xx:172.16.232.20  角色:namenode,secondarynamenode,resouremanager(master)
主机xxx:172.16.232.30  角色:datanode,nodemanager(节点)
主机xxxx:172.16.232.40  角色:datanode,nodemanager(节点)
主机xxxxx:172.16.232.50  角色:datanode,nodemanager(节点)


实例:
HDFS完全分布式系统配置
配置 Hadoop-env.sh
配置 core-site.xml
配置 hdfs-site.xml

[root@xx ~]# yum -y install java-1.8.0-openjdk-devel.x86_64(在所有主机上操作)
[root@xx ~]# jps(在所有主机上执行命令查看)
2132 Jps
[root@xx ~]# java -version
openjdk version "1.8.0_131"

配置 Hadoop-env.sh(配置环境变量)
[root@xx ~]# tar -xvf hadoop-2.8.4.tar.gz -C /usr/local/(把Hadoop解压到/usr/loacl/)
[root@xx local]# mv hadoop-2.8.4/ hadoop(到目录下重命名为hadoop)
[root@xx ~]# readlink -f $(which java)(找到jre的家目录)
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre/bin/java
[root@xx ~]# cd /usr/local/hadoop/etc/hadoop/
[root@xx hadoop]# vim hadoop-env.sh (配置环境变量)
# The java implementation to use.
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre"(把jre的家目录覆盖上去)
export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"(Hadoop的配置文件目录,默认不是这个,要修改)

配置 core-site.xml
[root@xx hadoop]# vim core-site.xml
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://xx.sec.com:9000</value>(使用集群文件系统,namenode主机及端口)
    </property>
    <property>
        <name>hadoop.tmp.dir</name>(Hadoop数据存放地址)
        <value>/var/hadoop</value>(数据存放路径)
    </property>
</configuration>
[root@xx hadoop]# mkdir /var/hadoop(var下默认是没有Hadoop这个文件夹的,要创建一个文件,且要在所有主机上创建这个文件夹)
[root@xxx ~]# mkdir /var/hadoop
[root@xxxx ~]# mkdir /var/hadoop
[root@xxxxx ~]# mkdir /var/hadoop

配置 hdfs-site.xml
<configuration>
    <property>
        <name>dfs.namenode.http-address</name>(namenode主机)
        <value>xx.sec.com:50070</value>(地址,端口)
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>xx.sec.com:50090</value>
    </property>
    <property>
        <name>dfs.replication</name>(数据冗余,备份)
        <value>2</value>(备份两份)
    </property>
</configuration>

[root@xx hadoop]# vim slaves(编辑这个文件,没有就创建一个,这个文件是namenode集群的主机节点,写上hosts文件里的节点主机,且这里面的主机,不用输入密码也能登录)
xxx.sec.com
xxxx.sec.com
xxxxx.sec.com

[root@xx ~]# scp -r /usr/local/hadoop/ 172.16.232.30:/usr/local/(把xx主机/usr/local/hadoop拷贝到所有集群接节点上)  
[root@xx ~]# scp -r /usr/local/hadoop/ 172.16.232.40:/usr/local/
[root@xx ~]# scp -r /usr/local/hadoop/ 172.16.232.50:/usr/local/

[root@xx ~]# cd /usr/local/hadoop/bin/(到目录下)
[root@xx bin]# ./hadoop version(到所有节点上执行命令,出现以下版本信息就成功安装了完全分布式)
Hadoop 2.8.4
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 17e75c2a11685af3e043aa5e604dc831e5b14674
Compiled by jdu on 2018-05-08T02:50Z
Compiled with protoc 2.5.0
From source with checksum b02a59bb17646783210e979bea443b0
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.8.4.jar


[root@xx ~]# cd /usr/local/hadoop/
[root@xx hadoop]# ./bin/hdfs namenode -format(执行格式化操作namenode -format,只在master主机上操作)
.............
18/05/30 20:07:15 INFO common.Storage: Storage directory /var/hadoop/dfs/name has been successfully formatted.(存储目录格式化成功就说明成功了,没有就根据报错排错)
.............
[root@xx hadoop]# ./sbin/start-dfs.sh (也是只在master主机上执行)
[root@xx hadoop]# jps(执行jps后可以看到节点主机说明没问题了)
[root@xx hadoop]# jps
3442 Jps
3319 SecondaryNameNode
1548 ResourceManager
3132 NameNode


到其他客户机执行jps也要看到信息
[root@xxx hadoop]# jps
2070 DataNode
2238 Jps

[root@xxxx hadoop]# jps
1987 DataNode
2157 Jps

[root@xxxxx hadoop]# jps
2145 Jps
1986 DataNode


[root@xx hadoop]# ./bin/hdfs dfsadmin -report(在master主机执行命令,可以看到所有节点主机的信息就完成了)
Configured Capacity: 160982630400 (149.93 GB)
Present Capacity: 154619985920 (144.00 GB)
DFS Remaining: 154619961344 (144.00 GB)
............................
-------------------------------------------------
Live datanodes (3):

Name: 172.16.232.30:50010 (xxx.sec.com)
Hostname: xxx.sec.com
Decommission Status : Normal
Configured Capacity: 53660876800 (49.98 GB)
.............................

Name: 172.16.232.40:50010 (xxxx.sec.com)
Hostname: xxxx.sec.com
Decommission Status : Normal
Configured Capacity: 53660876800 (49.98 GB)
..............................


Name: 172.16.232.50:50010 (xxxxx.sec.com)
Hostname: xxxxx.sec.com
Decommission Status : Normal
Configured Capacity: 53660876800 (49.98 GB)
.............................



————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————-

HDFS使用

HDFS基本命令(格式其实就是./bin/hadoop fs -后面追加标准的shell命令)
  ./bin/hadoop fs -ls /    对应shell命令   ls /
  ./bin/hadoop/ fs -mkdir /xxx    对应shell命令    mkdir /xxx
  ./bin/hadoop/ fs -rmdir /xxx    对应shell命令    rmdir /xxx
 
[root@xx hadoop]# ./bin/hadoop fs(回车显示常用的命令)
Usage: hadoop fs [generic options]
    [-appendToFile <localsrc> ... <dst>]
    [-cat [-ignoreCrc] <src> ...]
    [-checksum <src> ...]
    [-chgrp [-R] GROUP PATH...]
    [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
    [-chown [-R] [OWNER][:[GROUP]] PATH...]
    [-copyFromLocal [-f] [-p] [-l] [-d] <localsrc> ... <dst>]
    [-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
    [-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] <path> ...]
    [-cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>]
    [-createSnapshot <snapshotDir> [<snapshotName>]]
    [-deleteSnapshot <snapshotDir> <snapshotName>]
    [-df [-h] [<path> ...]]
    [-du [-s] [-h] [-x] <path> ...]
    [-expunge]
    [-find <path> ... <expression> ...]
    [-get [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
    [-getfacl [-R] <path>]
    [-getfattr [-R] {-n name | -d} [-e en] <path>]
    [-getmerge [-nl] [-skip-empty-file] <src> <localdst>]
    [-help [cmd ...]]
    [-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [<path> ...]]
    [-mkdir [-p] <path> ...]
    [-moveFromLocal <localsrc> ... <dst>]
    [-moveToLocal <src> <localdst>]
    [-mv <src> ... <dst>]
    [-put [-f] [-p] [-l] [-d] <localsrc> ... <dst>]
    [-renameSnapshot <snapshotDir> <oldName> <newName>]
    [-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...]
    [-rmdir [--ignore-fail-on-non-empty] <dir> ...]
    [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
    [-setfattr {-n name [-v value] | -x name} <path>]
    [-setrep [-R] [-w] <rep> <path> ...]
    [-stat [format] <path> ...]
    [-tail [-f] <file>]
    [-test -[defsz] <path>]
    [-text [-ignoreCrc] <src> ...]
    [-touchz <path> ...]
    [-truncate [-w] <length> <path> ...]
    [-usage [cmd ...]]





原文地址:https://www.cnblogs.com/Hydraxx/p/9064365.html