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 ...]]
