A. hadoop分布式每次都要重新啟動嗎
hadoop分布式每次都要重新啟動
1
配置hosts文件,將主機名和對應IP地址映射。如圖中Master、Slave1和Slave2是我們要搭建分布式環境的機器。Master為主機,Slavex為從機。
2
配置SSH的無密碼登錄:可新建專用用戶hadoop進行操作,cd命令進入所屬目錄下,輸入以下指令(已安裝ssh)
ssh-keygen -t rsa -P ""
cat .ssh/id_rsa.pub >>.ssh/authorized_keys
解釋一下,第一條生成ssh密碼的命令,-t 參數表示生成演算法,有rsa和dsa兩種;-P表示使用的密碼,這里使用「」空字元串表示無密碼。
第二條命令將生成的密鑰寫入authorized_keys文件。
這時輸入 ssh localhost,彈出寫入提示後回車,便可無密碼登錄本機。同理,將authorized_keys文件 通過 scp命令拷貝到其它主機相同目錄下,則可無密碼登錄其它機器。
安裝hadoop:安裝方式很簡單,下載安裝包到所屬目錄下,使用
tar -zxvf 安裝包名
進行解壓,解壓完畢可通過mv 命令重命名文件夾,安裝至此完成。解壓後的目錄內容如圖所示。
hadoop配置過程:要實現分布式環境,配置過程是最為重要的,
這里要涉及到的配置文件有7個:
~/hadoop/etc/hadoop/hadoop-env.sh
~/hadoop/etc/hadoop/yarn-env.sh
~/hadoop/etc/hadoop/slaves
~/hadoop/etc/hadoop/core-site.xml
~/hadoop/etc/hadoop/hdfs-site.xml
~/hadoop/etc/hadoop/mapred-site.xml
~/hadoop/etc/hadoop/yarn-site.xml
之後會分別介紹各個配置的的作用和配置關鍵
配置文件1:hadoop-env.sh
該文件是hadoop運行基本環境的配置,需要修改的為java虛擬機的位置。
故在該文件中修改JAVA_HOME值為本機安裝位置(如,export JAVA_HOME=/usr/lib/jvm/java-1.7.0)
配置文件2:yarn-env.sh
該文件是yarn框架運行環境的配置,同樣需要修改java虛擬機的位置。
在該文件中修改JAVA_HOME值為本機安裝位置(如,export JAVA_HOME=/usr/lib/jvm/java-1.7.0)
配置文件3:slaves
該文件裡面保存所有slave節點的信息,以本篇為例
寫入以下內容(hosts里從機的主機名):
Slave1
Slave2
B. 大數據:Hadoop入門
什麼是大數據:
(1.)大數據是指在一定時間內無法用常規軟體對其內容進行抓取,管理和處理的數據集合,簡而言之就是數據量非常大,大到無法用常規工具進行處理,如關系型資料庫,數據倉庫等。這里「大」是一個什麼量級呢?如在阿里巴巴每天處理數據達到20PB(即20971520GB).
2.大數據的特點:
(1.)體量巨大。按目前的發展趨勢來看,大數據的體量已經到達PB級甚至EB級。
(2.)大數據的數據類型多樣,以非結構化數據為主,如網路雜志,音頻,視屏,圖片,地理位置信息,交易數據,社交數據等。
(3.)價值密度低。有價值的數據僅佔到總數據的一小部分。比如一段視屏中,僅有幾秒的信息是有價值的。
(4.)產生和要求處理速度快。這是大數據區與傳統數據挖掘最顯著的特徵。
3.除此之外還有其他處理系統可以處理大數據。
Hadoop (開源)
Spark(開源)
Storm(開源)
MongoDB(開源)
IBM PureDate(商用)
Oracle Exadata(商用)
SAP Hana(商用)
Teradata AsterData(商用)
EMC GreenPlum(商用)
HP Vertica(商用)
註:這里我們只介紹Hadoop。
二:Hadoop體系結構
Hadoop來源:
Hadoop源於Google在2003到2004年公布的關於GFS(Google File System),MapRece和BigTable的三篇論文,創始人Doug Cutting。Hadoop現在是Apache基金會頂級項目,「
Hadoop」一個虛構的名字。由Doug Cutting的孩子為其黃色玩具大象所命名。
Hadoop的核心:
(1.)HDFS和MapRece是Hadoop的兩大核心。通過HDFS來實現對分布式儲存的底層支持,達到高速並行讀寫與大容量的儲存擴展。
(2.)通過MapRece實現對分布式任務進行處理程序支持,保證高速分區處理數據。
3.Hadoop子項目:
(1.)HDFS:分布式文件系統,整個Hadoop體系的基石。
(2.)MapRece/YARN:並行編程模型。YARN是第二代的MapRece框架,從Hadoop 0.23.01版本後,MapRece被重構,通常也稱為MapRece V2,老MapRece也稱為 MapRece V1。
(3.)Hive:建立在Hadoop上的數據倉庫,提供類似SQL語音的查詢方式,查詢Hadoop中的數據,
(5.)HBase:全稱Hadoop Database,Hadoop的分布式的,面向列的資料庫,來源於Google的關於BigTable的論文,主要用於隨機訪問,實時讀寫的大數據。
(6.)ZooKeeper:是一個為分布式應用所設計的協調服務,主要為用戶提供同步,配置管理,分組和命名等服務,減輕分布式應用程序所承擔的協調任務。
還有其它特別多其它項目這里不做一一解釋了。
三:安裝Hadoop運行環境
用戶創建:
(1.)創建Hadoop用戶組,輸入命令:
groupadd hadoop
(2.)創建hser用戶,輸入命令:
useradd –p hadoop hser
(3.)設置hser的密碼,輸入命令:
passwd hser
按提示輸入兩次密碼
(4.)為hser用戶添加許可權,輸入命令:
#修改許可權
chmod 777 /etc/sudoers
#編輯sudoers
Gedit /etc/sudoers
#還原默認許可權
chmod 440 /etc/sudoers
先修改sudoers 文件許可權,並在文本編輯窗口中查找到行「root ALL=(ALL)」,緊跟後面更新加行「hser ALL=(ALL) ALL」,將hser添加到sudoers。添加完成後切記還原默認許可權,否則系統將不允許使用sudo命令。
(5.)設置好後重啟虛擬機,輸入命令:
Sudo reboot
重啟後切換到hser用戶登錄
安裝JDK
(1.)下載jdk-7u67-linux-x64.rpm,並進入下載目錄。
(2.)運行安裝命令:
Sudo rpm –ivh jdk-7u67-linux-x64.rpm
完成後查看安裝路徑,輸入命令:
Rpm –qa jdk –l
記住該路徑,
(3.)配置環境變數,輸入命令:
Sudo gedit /etc/profile
打開profile文件在文件最下面加入如下內容
export JAVA_HOME=/usr/java/jdk.7.0.67
export CLASSPATH=$ JAVA_HOME/lib:$ CLASSPATH
export PATH=$ JAVA_HOME/bin:$PATH
保存後關閉文件,然後輸入命令使環境變數生效:
Source /etc/profile
(4.)驗證JDK,輸入命令:
Java –version
若出現正確的版本則安裝成功。
配置本機SSH免密碼登錄:
(1.)使用ssh-keygen 生成私鑰與公鑰文件,輸入命令:
ssh-keygen –t rsa
(2.)私鑰留在本機,公鑰發給其它主機(現在是localhost)。輸入命令:
ssh--id localhost
(3.)使用公鑰來登錄輸入命令:
ssh localhost
配置其它主機SSH免密登錄
(1.)克隆兩次。在VMware左側欄中選中虛擬機右擊,在彈出的快捷鍵菜單中選中管理---克隆命令。在克隆類型時選中「創建完整克隆」,單擊「下一步」,按鈕直到完成。
(2.)分別啟動並進入三台虛擬機,使用ifconfig查詢個主機IP地址。
(3.)修改每台主機的hostname及hosts文件。
步驟1:修改hostname,分別在各主機中輸入命令。
Sudo gedit /etc/sysconfig/network
步驟2:修改hosts文件:
sudo gedit /etc/hosts
步驟3:修改三台虛擬機的IP
第一台對應node1虛擬機的IP:192.168.1.130
第二台對應node2虛擬機的IP:192.168.1.131
第三台對應node3虛擬機的IP:192.168.1.132
(4.)由於已經在node1上生成過密鑰對,所有現在只要在node1上輸入命令:
ssh--id node2
ssh--id node3
這樣就可以將node1的公鑰發布到node2,node3。
(5.)測試SSH,在node1上輸入命令:
ssh node2
#退出登錄
exit
ssh node3
exit
四:Hadoop完全分布式安裝
1. Hadoop有三種運行方式:
(1.)單機模式:無須配置,Hadoop被視為一個非分布式模式運行的獨立Java進程
(2.)偽分布式:只有一個節點的集群,這個節點即是Master(主節點,主伺服器)也是Slave(從節點,從伺服器),可在此單節點上以不同的java進程模擬分布式中的各類節點
(3.)完全分布式:對於Hadoop,不同的系統會有不同的節點劃分方式。
2.安裝Hadoop
(1.)獲取Hadoop壓縮包hadoop-2.6.0.tar.gz,下載後可以使用VMWare Tools通過共享文件夾,或者使用Xftp工具傳到node1。進入node1 將壓縮包解壓到/home/hser目錄下,輸入命令:
#進入HOME目錄即:「/home/hser」
cd ~
tar –zxvf hadoop-2.6.0.tar.gz
(2.)重命名hadoop輸入命令:
mv hadoop-2.6.0 hadoop
(3.)配置Hadoop環境變數,輸入命令:
Sudo gedit /etc/profile
將以下腳本加到profile內:
#hadoop
export HADOOP_HOME=/home/hser/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
保存關閉,最後輸入命令使配置生效
source /etc/profile
註:node2,和node3都要按照以上配置進行配置。
3.配置Hadoop
(1.)hadoop-env.sh文件用於指定JDK路徑。輸入命令:
[hser@node1 ~]$ cd ~/hadoop/etc/hadoop
[hser@node1 hadoop]$ gedit hadoop-env.sh
然後增加如下內容指定jDK路徑。
export JAVA_HOME=/usr/java/jdk1.7.0_67
(2.)打開指定JDK路徑,輸入命令:
export JAVA_HOME=/usr/java/jdk1.7.0_67
(4.)core-site.xml:該文件是Hadoop全局配置,打開並在
C. 如何刪除每次運行hadoop命令的時輸出目錄
啟動Hadoop
進入HADOOP_HOME目錄。
執行sh bin/start-all.sh
關閉Hadoop
進入HADOOP_HOME目錄。
執行sh bin/stop-all.sh
1、查看指定目錄下內容
hadoop dfs –ls [文件目錄]
eg: hadoop dfs –ls /user/wangkai.pt
2、打開某個已存在文件
hadoop dfs –cat [file_path]
eg:hadoop dfs -cat /user/wangkai.pt/data.txt
3、將本地文件存儲至hadoop
hadoop fs –put [本地地址] [hadoop目錄]
hadoop fs –put /home/t/file.txt /user/t
(file.txt是文件名)
4、將本地文件夾存儲至hadoop
hadoop fs –put [本地目錄] [hadoop目錄]
hadoop fs –put /home/t/dir_name /user/t
(dir_name是文件夾名)
5、將hadoop上某個文件down至本地已有目錄下
hadoop fs -get [文件目錄] [本地目錄]
hadoop fs –get /user/t/ok.txt /home/t
6、刪除hadoop上指定文件
hadoop fs –rm [文件地址]
hadoop fs –rm /user/t/ok.txt
7、刪除hadoop上指定文件夾(包含子目錄等)
hadoop fs –rm [目錄地址]
hadoop fs –rmr /user/t
8、在hadoop指定目錄內創建新目錄
hadoop fs –mkdir /user/t
9、在hadoop指定目錄下新建一個空文件
使用touchz命令:
hadoop fs -touchz /user/new.txt
10、將hadoop上某個文件重命名
使用mv命令:
hadoop fs –mv /user/test.txt /user/ok.txt (將test.txt重命名為ok.txt)
11、將hadoop指定目錄下所有內容保存為一個文件,同時down至本地
hadoop dfs –getmerge /user /home/t
12、將正在運行的hadoop作業kill掉
hadoop job –kill [job-id]
D. 什麼情況下命令 "hadoop fs
在hadoop環境下執行hadoopfs--help,裡面有相關的命令提示,簡單的有ls,,cp,mv等
跟shell一樣,只不過是查看或者操作hdfs文件
Usage:javaFsShell
[-ls<path>]
[-lsr<path>]
[-<path>]
[-s<path>]
[-count[-q]<path>]
[-mv<src><dst>]
[-cp<src><dst>]
[-ln<src><dst>]
[-rm<path>]
[-rmr<path>]
[-expunge]
[-put<localsrc>...<dst>]
[-FromLocal<localsrc>...<dst>]
[-moveFromLocal<localsrc>...<dst>]
[-get[-ignoreCrc][-crc][-repair]<src><localdst>]
[-getmerge[-addnl]<src><localdst>|-getmerge<src><localdst>[addnl]]
[-cat<src>]
[-text<src>]
[-ToLocal[-ignoreCrc][-crc][-repair]<src><localdst>]
[-SeqFileToLocal[-ignoreLen]<srcFile><localDstFile>]
[-moveToLocal[-crc]<src><localdst>]
[-mkdir<path>]
[-setrep[-R][-w][-d]<rep><path/file>]
[-setAcl<user><path><permission>]
[-getAcl[-u<user>][-p<path>]]
[-removeAcl[-u<user>][-p<path>]]
[-touchz<path>]
[-test-[ezd]<path>]
[-stat[format]<path>]
[-tail[-f]<file>]
[-chmod[-R]<MODE[,MODE]...|OCTALMODE>PATH...]
[-chown[-R][OWNER][:[GROUP]]PATH...]
[-chgrp[-R]GROUPPATH...]
[-help[cmd]]
自己試試就可以了,不復雜
E. 如何配置Hadoop環境
安裝前設置
在安裝Hadoop之前,需要進入Linux環境下,連接Linux使用SSH(安全Shell)。按照下面提供的步驟設立Linux環境。
創建一個用
在開始時,建議創建一個單獨的用戶Hadoop以從Unix文件系統隔離Hadoop文件系統。按照下面給出的步驟來創建用戶:
使用 「su」 命令開啟root .
創建用戶從root帳戶使用命令 「useradd username」.
現在,可以使用命令打開一個現有的用戶帳戶「su username」.
打開Linux終端,輸入以下命令來創建一個用戶。
$ su
password:
# useradd hadoop
# passwd hadoop
New passwd:
Retype new passwd
SSH設置和密鑰生成
SSH設置需要在集群上做不同的操作,如啟動,停止,分布式守護shell操作。認證不同的Hadoop用戶,需要一種用於Hadoop用戶提供的公鑰/私鑰對,並用不同的用戶共享。
下面的命令用於生成使用SSH鍵值對。復制公鑰形成 id_rsa.pub 到authorized_keys 文件中,並提供擁有者具有authorized_keys文件的讀寫許可權。
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
安裝Java
Java是Hadoop的主要先決條件。首先,應該使用命令「java-version」驗證 java 存在在系統中。 Java version 命令的語法如下。
$ java -version
如果一切順利,它會給下面的輸出。
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)
如果Java還未安裝在系統中,那麼按照下面的給出的步驟來安裝Java。
第1步
下載Java(JDK<最新版> - X64.tar.gz)
然後JDK-7u71-linux-x64.tar.gz將被下載到系統。
第2步
一般來說,在下載文件夾中的Java文件。使用下面的命令提取 jdk-7u71-linux-x64.gz文件。
$ cd Downloads/
$ ls
jdk-7u71-linux-x64.gz
$ tar zxf jdk-7u71-linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-linux-x64.gz
第3步
為了使Java提供給所有用戶,將它移動到目錄 「/usr/local/」。打開根目錄,鍵入以下命令。
$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit
第4步
用於設置PATH和JAVA_HOME變數,添加以下命令到~/.bashrc文件。
export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=PATH:$JAVA_HOME/bin
現在從終端驗證 java -version 命令如上述說明。
下載Hadoop
下載來自Apache基金會軟體,使用下面的命令提取 Hadoop2.4.1。
$ su
password:
# cd /usr/local
# wget http //apache claz org/hadoop/common/hadoop-2.4.1/
hadoop-2.4.1.tar.gz
# tar xzf hadoop-2.4.1.tar.gz
# mv hadoop-2.4.1/* to hadoop/
# exit
Hadoop操作模式
下載 Hadoop 以後,可以操作Hadoop集群以以下三個支持模式之一:
本地/獨立模式:下載Hadoop在系統中,默認情況下之後,它會被配置在一個獨立的模式,用於運行Java程序。
模擬分布式模式:這是在單台機器的分布式模擬。Hadoop守護每個進程,如 hdfs, yarn, MapRece 等,都將作為一個獨立的java程序運行。這種模式對開發非常有用。
完全分布式模式:這種模式是完全分布式的最小兩台或多台計算機的集群。我們使用這種模式在未來的章節中。
在單機模式下安裝Hadoop
在這里,將討論 Hadoop2.4.1在獨立模式下安裝。
有單個JVM運行任何守護進程一切都運行。獨立模式適合於開發期間運行MapRece程序,因為它很容易進行測試和調試。
設置Hadoop
可以通過附加下面的命令到 ~/.bashrc 文件中設置 Hadoop 環境變數。
export HADOOP_HOME=/usr/local/hadoop
在進一步討論之前,需要確保Hadoop工作正常。發出以下命令:
$ hadoop version
如果設置的一切正常,那麼應該看到以下結果:
Hadoop 2.4.1
Subversion https://svn.apache.org/repos/asf/hadoop/common -r 1529768
Compiled by hortonmu on 2013-10-07T06:28Z
Compiled with protoc 2.5.0
From source with checksum
這意味著Hadoop在獨立模式下工作正常。默認情況下,Hadoop被配置為在非分布式模式的單個機器上運行。
F. 怎麼搭建兩個hadoop集群的測試環境
環境配置:
虛擬機:
vmware workstation 12
系統:
ubuntu 16.04 LTS(推薦使用原版,不要用kylin)
節點: 192.168.159.132 master 192.168.159.134 node1 192.168.159.137 node2
jdk-8u101-Linux-x64.gz (Java)hadoop-2.7.3.tar.gz (Hadoop 包)
安裝步驟:
1、安裝虛擬機系統,並進行准備工作(可安裝一個然後克隆)
2.修改各個虛擬機的hostname和host
3.創建用戶組和用戶
4、配置虛擬機網路,使虛擬機系統之間以及和host主機之間可以通過相互ping通。
5.安裝jdk和配置環境變數,檢查是否配置成功
6、配置ssh,實現節點間的無密碼登錄 ssh node1/2指令驗證時候成功
7、master配置hadoop,並將hadoop文件傳輸到node節點
8、配置環境變數,並啟動hadoop,檢查是否安裝成功,執行wordcount檢查是否成功。
1.安裝虛擬機
在VM上安裝下載好的Ubuntu的系統,具體過程自行網路。可以安裝完一個以後克隆,但是本人安裝過程中遇到很多問題,經常需要刪除虛擬機,重新安裝,而被克隆的虛擬機不能刪除,所以本人就用了很長時候,一個一個安裝。
一共3台虛擬機:分配情況和IP地址如下:
(註:查看ip地址的指令 ifconfig)
安裝虛擬機時可以設置靜態IP,因為過程中常常遇到網路連接問題,ifconfig找不到IPV4地址。當然,也可以不設,默認分配。
192.168.159.132 master 192.168.159.134 node1 192.168.159.137 node2
2.修改虛擬機的hostname和hosts文件
以master上機器為例,打開終端,執行如下的操作,把hostname修改成master,hosts修改成如下所示的樣子:
#修改hostname的指令:sudo gedit /etc/hostname
#修改hosts指令:sudo gedit /etc/hosts
#將以下內容添加到hosts中192.168.159.132 master192.168.159.134 node1192.168.159.137 node2
如下圖所示:
自此,hadoop集群搭建成功!
G. 求教如何用shell獲取hadoop命令的執行返回值
調用文件系統(FS)Shell命令應使用 bin/hadoop fs <args>的形式。 所有的的FS shell命令使用URI路徑作為參數。URI格式是scheme://authority/path。對HDFS文件系統,scheme是hdfs,對本地文件系統,scheme是file。其中scheme和authority參數都是可選的,如果未加指定,就會使用配置中指定的默認scheme。一個HDFS文件或目錄比如/parent/child可以表示成hdfs://namenode:namenodeport/parent/child,或者更簡單的/parent/child(假設你配置文件中的默認值是namenode:namenodeport)。大多數FS Shell命令的行為和對應的Unix Shell命令類似,不同之處會在下面介紹各命令使用詳情時指出。出錯信息會輸出到stderr,其他信息輸出到stdout。
cat
使用方法:hadoop fs -cat URI [URI …]
將路徑指定文件的內容輸出到stdout。
示例:
hadoop fs -cat hdfs://host1:port1/file1 hdfs://host2:port2/file2
hadoop fs -cat file:///file3 /user/hadoop/file4
返回值:
成功返回0,失敗返回-1。
chgrp
使用方法:hadoop fs -chgrp [-R] GROUP URI [URI …] Change group association of files. With -R, make the change recursively through the directory structure. The user must be the owner of files, or else a super-user. Additional information is in the Permissions User Guide. -->
改變文件所屬的組。使用-R將使改變在目錄結構下遞歸進行。命令的使用者必須是文件的所有者或者超級用戶。更多的信息請參見HDFS許可權用戶指南。
chmod
使用方法:hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI …]
改變文件的許可權。使用-R將使改變在目錄結構下遞歸進行。命令的使用者必須是文件的所有者或者超級用戶。更多的信息請參見HDFS許可權用戶指南。
chown
使用方法:hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]
改變文件的擁有者。使用-R將使改變在目錄結構下遞歸進行。命令的使用者必須是超級用戶。更多的信息請參見HDFS許可權用戶指南。
FromLocal
使用方法:hadoop fs -FromLocal <localsrc> URI
除了限定源路徑是一個本地文件外,和put命令相似。
ToLocal
使用方法:hadoop fs -ToLocal [-ignorecrc] [-crc] URI <localdst>
除了限定目標路徑是一個本地文件外,和get命令類似。
cp
使用方法:hadoop fs -cp URI [URI …] <dest>
將文件從源路徑復制到目標路徑。這個命令允許有多個源路徑,此時目標路徑必須是一個目錄。
示例:
hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2
hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir
返回值:
成功返回0,失敗返回-1。
使用方法:hadoop fs - URI [URI …]
顯示目錄中所有文件的大小,或者當只指定一個文件時,顯示此文件的大小。
示例:
hadoop fs - /user/hadoop/dir1 /user/hadoop/file1 hdfs://host:port/user/hadoop/dir1
返回值:
成功返回0,失敗返回-1。
s
使用方法:hadoop fs -s <args>
顯示文件的大小。
expunge
使用方法:hadoop fs -expunge
清空回收站。請參考HDFS設計文檔以獲取更多關於回收站特性的信息。
get
使用方法:hadoop fs -get [-ignorecrc] [-crc] <src> <localdst>
復制文件到本地文件系統。可用-ignorecrc選項復制CRC校驗失敗的文件。使用-crc選項復制文件以及CRC信息。
示例:
hadoop fs -get /user/hadoop/file localfile
hadoop fs -get hdfs://host:port/user/hadoop/file localfile
返回值:
成功返回0,失敗返回-1。
getmerge
使用方法:hadoop fs -getmerge <src> <localdst> [addnl]
接受一個源目錄和一個目標文件作為輸入,並且將源目錄中所有的文件連接成本地目標文件。addnl是可選的,用於指定在每個文件結尾添加一個換行符。
ls
使用方法:hadoop fs -ls <args>
如果是文件,則按照如下格式返迴文件信息:
文件名 <副本數> 文件大小 修改日期 修改時間 許可權 用戶ID 組ID
如果是目錄,則返回它直接子文件的一個列表,就像在Unix中一樣。目錄返回列表的信息如下:
目錄名 <dir> 修改日期 修改時間 許可權 用戶ID 組ID
示例:
hadoop fs -ls /user/hadoop/file1 /user/hadoop/file2 hdfs://host:port/user/hadoop/dir1 /nonexistentfile
返回值:
成功返回0,失敗返回-1。
lsr
使用方法:hadoop fs -lsr <args>
ls命令的遞歸版本。類似於Unix中的ls -R。
mkdir
使用方法:hadoop fs -mkdir <paths>
接受路徑指定的uri作為參數,創建這些目錄。其行為類似於Unix的mkdir -p,它會創建路徑中的各級父目錄。
示例:
hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
hadoop fs -mkdir hdfs://host1:port1/user/hadoop/dir hdfs://host2:port2/user/hadoop/dir
返回值:
成功返回0,失敗返回-1。
movefromLocal
使用方法:dfs -moveFromLocal <src> <dst>
輸出一個」not implemented「信息。
mv
使用方法:hadoop fs -mv URI [URI …] <dest>
將文件從源路徑移動到目標路徑。這個命令允許有多個源路徑,此時目標路徑必須是一個目錄。不允許在不同的文件系統間移動文件。
示例:
hadoop fs -mv /user/hadoop/file1 /user/hadoop/file2
hadoop fs -mv hdfs://host:port/file1 hdfs://host:port/file2 hdfs://host:port/file3 hdfs://host:port/dir1
返回值:
成功返回0,失敗返回-1。
put
使用方法:hadoop fs -put <localsrc> ... <dst>
從本地文件系統中復制單個或多個源路徑到目標文件系統。也支持從標准輸入中讀取輸入寫入目標文件系統。
hadoop fs -put localfile /user/hadoop/hadoopfile
hadoop fs -put localfile1 localfile2 /user/hadoop/hadoopdir
hadoop fs -put localfile hdfs://host:port/hadoop/hadoopfile
hadoop fs -put - hdfs://host:port/hadoop/hadoopfile
從標准輸入中讀取輸入。
返回值:
成功返回0,失敗返回-1。
rm
使用方法:hadoop fs -rm URI [URI …]
刪除指定的文件。只刪除非空目錄和文件。請參考rmr命令了解遞歸刪除。
示例:
hadoop fs -rm hdfs://host:port/file /user/hadoop/emptydir
返回值:
成功返回0,失敗返回-1。
rmr
使用方法:hadoop fs -rmr URI [URI …]
delete的遞歸版本。
示例:
hadoop fs -rmr /user/hadoop/dir
hadoop fs -rmr hdfs://host:port/user/hadoop/dir
返回值:
成功返回0,失敗返回-1。
setrep
使用方法:hadoop fs -setrep [-R] <path>
改變一個文件的副本系數。-R選項用於遞歸改變目錄下所有文件的副本系數。
示例:
hadoop fs -setrep -w 3 -R /user/hadoop/dir1
返回值:
成功返回0,失敗返回-1。
stat
使用方法:hadoop fs -stat URI [URI …]
返回指定路徑的統計信息。
示例:
hadoop fs -stat path
返回值:
成功返回0,失敗返回-1。
tail
使用方法:hadoop fs -tail [-f] URI
將文件尾部1K位元組的內容輸出到stdout。支持-f選項,行為和Unix中一致。
示例:
hadoop fs -tail pathname
返回值:
成功返回0,失敗返回-1。
test
使用方法:hadoop fs -test -[ezd] URI
選項:
-e 檢查文件是否存在。如果存在則返回0。
-z 檢查文件是否是0位元組。如果是則返回0。
-d 如果路徑是個目錄,則返回1,否則返回0。
示例:hadoop fs -test -e filename
text
使用方法:hadoop fs -text <src>
將源文件輸出為文本格式。允許的格式是zip和TextRecordInputStream。
touchz
使用方法:hadoop fs -touchz URI [URI …]
創建一個0位元組的空文件。
示例:
hadoop -touchz pathname
返回值:
成功返回0,失敗返回-1。
大家看我的問題,我比較2個文件夾,我發現執行了第2句話程序就結束了!!!沒有答應echo different.
請問,我如何才能夠獲取到diff -r cwjdir1 cwjdir2的返回值呢??難道這個diff命令在他內部就直接死掉了??
求高手解答。 1.能獲取到這個命令的返回值嗎 ? 2.為什麼列印不出echo different
#!/bin/bash -e
diff -r cwjdir1 cwjdir2
if [ $? -ne 0 ] ; th鄲鄲策肝匕菲察十暢姜en
echo different
exit 1
fi
echo files cmped
H. hadoop中常用的命令
1、查看指定目錄下內容
hadoop dfs –ls [文件目錄]
eg: hadoop dfs –ls /user/wangkai.pt
2、打開某個已存在文件
hadoop dfs –cat [file_path]
eg:hadoop dfs -cat /user/wangkai.pt/data.txt
3、將本地文件存儲至hadoop
hadoop fs –put [本地地址] [hadoop目錄]
hadoop fs –put /home/t/file.txt /user/t
(file.txt是文件名)
4、將本地文件夾存儲至hadoop
hadoop fs –put [本地目錄] [hadoop目錄]
hadoop fs –put /home/t/dir_name /user/t
(dir_name是文件夾名)
5、將hadoop上某個文件down至本地已有目錄下
hadoop fs -get [文件目錄] [本地目錄]
hadoop fs –get /user/t/ok.txt /home/t
6、刪除hadoop上指定文件
hadoop fs –rm [文件地址]
hadoop fs –rm /user/t/ok.txt
7、刪除hadoop上指定文件夾(包含子目錄等)
hadoop fs –rm [目錄地址]
hadoop fs –rmr /user/t
8、在hadoop指定目錄內創建新目錄
hadoop fs –mkdir /user/t
9、在hadoop指定目錄下新建一個空文件
使用touchz命令:
hadoop fs -touchz /user/new.txt
10、將hadoop上某個文件重命名
使用mv命令:
hadoop fs –mv /user/test.txt /user/ok.txt (將test.txt重命名為ok.txt)
11、將hadoop指定目錄下所有內容保存為一個文件,同時down至本地
hadoop dfs –getmerge /user /home/t
12、將正在運行的hadoop作業kill掉
hadoop job –kill [job-id]
I. 命令mv ./hadoop-2.7.7/ ./hadoop 的功能是什麼
移動了hadoop-2.7.7這個文件夾,並且把他名字改成了hadoop
例如你在windows裡面進入了c盤,c盤下有個hadoop-2.7.7的文件夾,你想把他改名成hadoop。上面這個操作就是這個意思。
J. Linux命令sudo mv ./hadoop-2.6.0/ ./hadoop 中 ./是啥意思呢直接sudo mv hadoop-2.6.0/ hadoop 不行嗎
可以,路徑有相對路徑和絕對路徑,上面的兩個路徑都是相對路徑。
「.」表示當前目錄,用作參數的時候,用與不用一樣。只是在運行程序的時候,如果不加「.」,而環境變數中又沒有設置,會找不到命令。