Ubuntu15.10中安裝hadoop2.7.2安裝手冊html
太初java
目錄node
1. Hadoop單點模式... 2linux
1.1 安裝步驟... 2web
0.環境和版本... 2正則表達式
1.在ubuntu中建立hadoop用戶... 2shell
2.安裝ssh. 3apache
3.安裝java環境... 3ubuntu
4.安裝hadoop. 4vim
5.測試... 5
2. Hadoop僞分佈式... 5
2.1 安裝步驟... 5
0.環境和版本... 6
1. 配置core-site.xml文件... 6
2. 配置hdfs-site.xml文件... 6
3. 格式化namenode. 7
4. 啓動HADOOP. 7
5. JPS命令驗證HADOOP進程... 8
6. WEB界面查HDFS信息... 8
7. 經過命令操做HDFS文件系統... 9
8. 測試... 9
3. Hadoop僞分佈式(+YARN)... 10
3.1 安裝步驟... 10
4. Hadoop集羣... 12
4.1 安裝步驟... 12
5. 其餘補充... 18
6.1 LINUX經驗... 18
6.1.1 開啓bash的自動完成功能... 18
6.1.2 開啓ubuntu虛擬機和win10宿主機的vmware tool(共享文件)... 18
6.1.3 Ubuntu的Terminal快捷方式... 19
6.1.4 Find命令舉例... 19
6.1.5 PATH變量簡述... 19
6.1.6 Ubuntu中安裝vmware tools. 19
6.2 雜... 19
6.2.1 如何保存被禁止拷貝或存盤的HTML?... 19
6. 資料... 20
特別說明:
本文檔是筆者研究了大量網絡資料,而後本身實踐成功後,彙總各方資料的結果。總結和分享的目的只有一個,讓其餘學友能少走彎路,集中精力解決業務問題,而不是環境搭建問題。在本文中引用了不少網絡資料,圖片,名稱,信息等內容,若是涉及版權問題,請原做者及時聯繫並告知。謝謝。
「資料」章節收納了本文用到後未用到的資源和鏈接,用於分享。
因能力所限,錯漏之處敬請見諒。
感謝網絡各位大神的信息分享,是大家的努力推進者技術的發展!
[Spark安裝運行手冊隨後貼上,謝謝!]
ubuntu 15.10
jdk 1.8.84
hadoop 2.7.2
(備註:在GUI(圖形)界面中可用「ctrl+Alt+T」快捷鍵打開Terminal(終端窗口),並輸入下列命令。)
在Ubuntu終端窗口中,複製粘貼的快捷鍵須要加上 shift,粘貼是 ctrl+shift+v;拷貝是ctrl+shift+c;等等)
$ sudo useradd -m hadoop -s /bin/bash //新建hadoop用戶
$ sudo passwd hadoop //修改密碼爲hadoop,等於帳號,方便操做;
$ sudo adduser hadoop sudo //爲hadoop增長管理員的權限,以避免以後出現權限問題。
(備註:也可打開sudoers文件,給hadoop用戶賦予和root同樣的權限:$sudo gedit /etc/sudoers ;而後編輯增添以下那句hadoop ALL(ALL:ALL) ALL)
【重要】GUI中註銷當前帳戶(root或Ubuntu安裝初始用戶,我這裏是ya),並隨後用hadoop再次登錄。
(可選:$sudo apt-get update //由於會用apt按照其餘軟件,若是未更新apt,有可能沒法安裝其餘軟件,可選!) 若出現以下 「Hash校驗和不符」 的提示,可經過更改軟件源來解決。若沒有該問題,則不須要更改。 解決辦法:【系統設置】(齒輪圖標),選擇【軟件和更新】,點擊 「下載自」 右側的方框,選擇【其餘節點】,選擇服務器,在列表中選中【mirrors.aliyun.com】,並點擊右下角的【選擇服務器】,會要求輸入用戶密碼,輸入便可。點擊關閉後,此時會提示列表信息過期,點擊【從新載入】,耐心等待更新緩存。完成會自動關閉【軟件和更新】這個窗口。再嘗試按照apt。若是仍是提示錯誤,請選擇其餘服務器節點如 mirrors.163.com再嘗試。更新成功後,再次執行 sudo apt-get update 就正常了。 |
$sudo apt-get install openssh-server //在Terminal中容許命令,下同
(備註:用yes來continue繼續安裝,通常install安裝包默認都選y或yes就可)
(備註:Ubuntu 默認已安裝了 SSH client,此外還須要安裝 SSH server)
$sudo /etc/init.d/ssh start //安裝好ssh服務後就打開它(還沒有放入自啓動!)
$ ps -e | grep ssh //查看ssh服務是否正確啓動
$ ssh-keygen -t rsa -P "" //設置免密碼登陸,【在輸入路徑那兒直接回車!】
(備註:原理多是設定空字符串爲基礎來生成的密鑰對!)
(備註:在/home/hadoop/.ssh裏面生成兩個文件 id_rsa、id_rsa.pub,前者是私鑰,後者是公鑰)
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys //將公鑰追加到authorized_keys裏面
(備註:它保存全部容許以當前用戶身份登陸到ssh客戶端用戶的公鑰內容;「~」波折號表明用戶主文件夾;)
$ssh hadoop@localhost //登陸ssh(其餘linux的Terminal重也可嘗試如此操做:ssh hadoop@(IP|HOSTNAME);
(備註:第一次須要輸入yes,確認初次登陸,後續不用。)
$exit //退出ssh
(備註:userA@linuxPC1經過ssh登陸了userB@linuxPC2,那麼就登陸uesrA得到了userB的權限,並等價於userB經過Terminal在linuxPC2上執行命令,此爲ssh方便功能之一)
下載jdk二進制編譯包
下載用wget軟件,wget軟件在ubuntu下的安裝命令以下:
sudo apt-get install wget //按照wget程序,可直接經過「wget url連接 -o 輸出文件名」來下載「*.tar.gz」。
(備註:舉例用wget下載jdk包的命令格式爲:wget http://download.oracle.com/otn-pub/java/jdk/8u51-b16/jdk-8u51-linux-x64.tar.gz?AuthParam=1437810421_1d235bda6e9428e1caa05d0fd7951c6d -o jdk-x64.tar.gz
(備註:建議直接在百度搜索「oracle JDK download」找到合適OS/64/32的JDK並直接經過瀏覽器下載到Ubuntu,再進行以下操做更放心!)
(備註:在Ubuntu的GUI中經過firefox下載JDK,默認保存路徑在「/home/hadoop/下載」中,path含有中文,若是Ubuntu配置了「雙拼/拼音」輸入法,則能夠在Terminal下使用中文!)
$sudo cp jdk-x64.tar.gz /usr/local/ //因hadoop權限不夠,用sudo拷貝JDK到合適目錄
$cd /usr/local/ //進入JDK包所在目錄
$sudo tar xzvf jdk-x64.tar.gz //sudo來釋放JDK
(備註:本人下載是當時最新的JDK1.8.0_74,故在/usr/local/目錄下解壓生成的jdk目錄是/usr/local/jdk1.8.0_74)
$sudo apt-get install vim //Ubuntu15.10下默認vim下載但未安裝,請下載安裝,確保vim可用;
$sudo vim /etc/profile //配置以下JDK相關路徑到profile
(備註:這幾行配置應該加載到/etc/profile文件的「if [ -d /etc/profile.d ]; then」這一章節中,「done」行以後,「unset i」 行以前!另外,linux配置等號兩邊不能空格!)
export JAVA_HOME=/usr/local/jdk1.8.0_74
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
(備註:vim打開文本文件後,提示符默認在左上角且爲命令模式,請立刻輸入「i」則進入「插入」模式;則可上下左右移動提示符並修改文本;
完成後立刻用esc退出插入模式;隨後用「shift+冒號」進入底部命令行模式,用wq命令保存並退出,q直接退出(若是未作任何修改);若是修改
則沒法q,而必須用q!來強制直接退出(不保存);其餘請詳查web資料;)
$source /etc/profile //使修改的profile當即生效
$java –version //測試jdk是否安裝成功;能正確顯示JDK版本的就算安裝成功;
$sudo cp hadoop-2.7.2.tar.gz /usr/local/ //從hadoop官網下載最新hadoop包,好比2.7.2並拷貝到目的目錄
$cd /usr/local
$sudo tar xzvf hadoop-2.7.2.tar.gz //解壓;只能下載tar.gz給Ubuntu用;rpm格式是redhat專用
$sudo mv hadoop-2.7.2 hadoop //更名爲hadoop方便後續操做
$sudo chown hadoop:hadoop -R -f /usr/local/hadoop/ //修改目錄主人
$sudo vim /etc/profile //vim可用後,再次編輯profile,添加配置;
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
$ /usr/local/hadoop/bin/hadoop version //查看hadoop的版本及校驗和等信息!
(備註: 若是安裝了vmware tool並啓用了共享目錄,則能夠從宿主PC拷貝文本和文件到虛擬機中;或經過teamviewer等軟件拷貝文本和晚間!)
特別說明:校驗MD5值 $cat ~/下載/hadoop-2.7.2.tar.gz.mds | grep 'MD5' //可列出md5檢驗值 $head -n 6 ~/下載/hadoop-2.7.2.tar.gz.mds //也可列出2.7.2校驗值 md5sum ~/下載/hadoop-2.7.2.tar.gz | tr "a-z" "A-Z" //可根據二進制包來計算md5值並轉爲大寫方便比較; 若文件不完整則這兩個值通常差異很大,可簡單對比前幾個字符和後幾個字符便可。
補充: Ubuntu15.10包含:md5sum,sha1sum,sha256sum等命令,經過man來查他們用法,既能夠生成一個二進制文件的校驗和,也能夠驗證校驗和是否正確(要求校驗和關聯的二進制文件放在同一個目錄)。 好比校驗hadoop文件可用命令: sha256sum --check hadoop-2.7.2-tar.gz.mds (若是它是正確的SHA256格式,sha256sum會找到它內部指向的原始二進制文件,好比hadoop-2.7.2-tar.gz,併爲它生成臨時的SHA256來比較是否一致!) 目前看hadoop上下載的2.7.2二進制安裝包是好的,但它的SHA256文件是不可視的亂碼文件(非ANSI或UTF-8,也許是Unicode),因此可能以上命令及用法及猜測都是有問題的,畢竟hadoop網站不會錯! |
進入 hadoop目錄:
$cd /usr/local/hadoop //進入hadoop目錄
$mkdir ./input //example WordCount不會自動創建input目錄,因此須要手動創建;
$cp *.txt ./input/ //拷貝若干文本文件到input讓WordCount程序能夠統計詞頻;
$rm -f -r /usr/local/hadoop/output/
//WordCount程序不會自動刪除output,每次啓動若是沒有手動刪除output就出錯!
$./bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.2-sources.jar org.apache.hadoop.examples.WordCount input output //wordcountl例子,統計input目錄下全部文件可讀詞彙的詞頻並寫入output中
$cat ./output/* //查看運行結果
$./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep ./input ./output 'dfs[a-z.]+' // grep 例子,將 input 文件夾中的全部文件做爲輸入,篩選當中符合正則表達式 dfs[a-z.]+ 的單詞並統計出現的次數,最後輸出結果到 output 文件夾中
$cat ./output/* //查看運行結果
$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar //查看更多Hadoop 附帶的例子說明,包括 wordcount、terasort、join、grep 等。
(備註:運行官方測試樣例如上;遇到問題請添加input目錄,刪除output目錄;結果在output\part-r-00000中;)
(備註:特別注意,若是經過VMware的共享目錄,放了一些window的文本文件到hadoop的input目錄,由於「文件結果linux和win不一樣」則hadoop會報錯,但初看仍然會繼續執行獲得結果!)
#####至此,單點hadop的安裝和demo測試完成!(不含hdfs/yarn僞分佈式安裝內容) #####
僞分佈式模式是基於單機模式順利安裝測試經過後的進階嘗試;
其使用的軟件版本和環境都和單機模式沒有區別,僅是經過新增配置來使僞分佈模式起效並取代單機模式的運行;
後面有關於模式之間切換的介紹;
(徹底和單機模式一致)
ubuntu 15.10
jdk 1.8.84
hadoop 2.7.2
(說明:Hadoop 能夠在單節點上以僞分佈式的方式運行;Hadoop 進程以分離的 Java 進程來運行,節點既做爲 NameNode 也做爲 DataNode,同時,讀取的是 HDFS 中的文件,而再也不是Ubuntu操做系統的ext4下面的文件;)
Hadoop 的配置文件位於 /usr/local/hadoop/etc/hadoop/中,僞分佈式須要修改2個配置文件 core-site.xml 和 hdfs-site.xml。配置文件是 xml 格式,每一個配置以聲明 property 的 name 和 value 的方式來實現。修改配置文件 core-site.xml原來內容爲空的標籤「<configuration></configuration>」
(備註:由於是XML文件,不是普通INI/CONF/TXT等配置文件,因此不能夠用#井號作備註,應該用<!—XXX -->來添加註釋!)
修改成下面配置: <configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
|
一樣修改配置文件 hdfs-site.xml: <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property> </configuration> XML
|
(說明:雖然官方教程只需配置 fs.defaultFS 和 dfs.replication兩項就能夠運行hadoop,但若沒有配置 hadoop.tmp.dir 參數,則默認使用的臨時目錄爲 /tmp/hadoo-hadoop,而這個目錄在重啓時有可能被系統清理掉,致使必須從新執行 format 才行。因此咱們進行了設置,同時也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,不然在接下來的步驟中可能會出錯。)
./bin/hdfs namenode –format //配置完成後,需格式化 NameNode方能使用;
(備註:成功的話,會看到 「successfully formatted」 和 「Exitting with status 0″ 的提示;若爲 「Exitting with status 1″ 則是出錯。)
(注意:這一步若提示 Error: JAVA_HOME is not set and could not be found. 的錯誤,則須要在文件 ./etc/hadoop/hadoop-env.sh 中設置 JAVA_HOME 變量;好比找到「export JAVA_HOME=${JAVA_HOME}」,改成「export JAVA_HOME=/usr/local/jdk1.8.0_74」,並從新嘗試格式化便可。最好老是添加!)
./sbin/start-dfs.sh //開啓 NameNode 和 DataNode 守護進程
(備註:出現SSH提示,輸入yes便可)
注意:啓動時可能會出現以下 WARN 提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable WARN 提示能夠忽略,並不會影響正常使用。但最好修復它; 解決方法是編輯hadoop-env.sh, 在最後添加「export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib:$HADOOP_INSTALL/lib/native」
|
啓動完成後,能夠經過命令 jps 來判斷是否成功啓動,若成功啓動則會列出以下進程: 「NameNode」、」DataNode」 和 「SecondaryNameNode」;JPS命令之後會屢次用於yarn和真實分佈式模式中;
Jps //經過jps查看啓動的Hadoop進程
錯誤1:若是 SecondaryNameNode 沒有啓動,請運行 sbin/stop-dfs.sh 關閉進程,而後再次嘗試啓動嘗試。
錯誤2:若是沒有 NameNode 或 DataNode ,那就是配置不成功,請仔細檢查以前步驟,經過查看啓動日誌排查緣由。
錯誤3:若是DataNode沒啓動,通常狀況下,可嘗試以下方法恢復。但這會刪除 HDFS中原有數據,請謹慎!):
./sbin/stop-dfs.sh //關閉hadoop(hdfs)
rm -r ./tmp //刪除 tmp 文件,這會刪除 HDFS 中原有的全部數據
./bin/hdfs namenode -format //從新格式化 NameNode
./sbin/start-dfs.sh //重啓
排錯方法:可查啓動日誌來排查緣由,注意幾點:
啓動時會提示形如 「DBLab-XMU: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.out」,其中 DBLab-XMU 對應你的機器名,但其實啓動日誌信息是記錄在 /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.log 中,因此應該查看這個後綴爲 .log 的文件;啓動日誌都是追加的,拉到最後查看最新內容,log每行有時間信息。出錯一般寫着 Fatal、Error、Warning 或者 Java Exception 的地方。可在網上搜索出錯信息,找到相關解決方法。
http://localhost:50070/;當成功啓動後,能夠訪問 Web 界面來查看 NameNode 和 Datanode 信息,還可在線查看 HDFS 中的文件。在「Utilities」菜單下「Browse the file system」中可看到在hdfs上創建的目錄「/user/hadoop」等,而在ubuntu的文件系統ext4上看不到!
|
單機模式下運行「grep/WordCount」等例子讀取的是Ubuntu的ext4中的本地數據,而僞分佈式讀取的則是 HDFS 上的數據。爲了使用 HDFS,須要在 HDFS 中建立用戶目錄,增刪改查文件和目錄。
./bin/hdfs dfs -mkdir -p /user/hadoop //在HDFS建立hadoop用戶
./bin/hdfs dfs -mkdir input //新建hadoop用戶後自動轉到其目錄下,如今新建input目錄,在hadoop目錄下
./bin/hdfs dfs -put ./etc/hadoop/*.xml input //將Ubuntu的ext4目錄下的xml文件拷貝到hdsf的hadoop\input目錄下;
./bin/hdfs dfs -ls input //複製完成後,查看文件列表;
(說明:僞分佈式模式運行的MapReduce 做業的方式跟單機模式相同,但區別在於僞分佈式讀取的是HDFS中的文件,而不是Ubuntu的ext4下的output和input目錄;能夠將單機模式步驟中建立的本地 input 文件夾,輸出結果 output 文件夾都刪掉來驗證這一點)。
執行「grep」example:
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
$ ./bin/hdfs dfs -cat output/* //查看hdfs上的結果;
執行「wordcount」example:
./bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.2-sources.jar org.apache.hadoop.examples.WordCount input output
(備註:此句和單點運行模式時如出一轍,可是由於hadoop啓動爲僞分佈式,因此從hdfs裏的input讀數據並寫入output中去,不會再訪問ubuntu的文件系統ext4了。結果能夠經過本機50070的portal登錄查看hdfs文件系統的變化,並下載結果到ext4中。)
查看運行結果(查看的是位於 HDFS 中的輸出結果):
./bin/hdfs dfs -cat output/*
也可從HDFS取回運行結果到本地ext:
rm -r ./output # 先刪除本地的 output 文件夾(若是存在)
./bin/hdfs dfs -get output ./output # 將 HDFS 上的 output 文件夾拷貝到本機
cat ./output/*
(再次運行)Hadoop僞分佈式的grep
./bin/hdfs dfs -rm -r output # 刪除 output 文件夾
(備註:Hadoop 運行grep或wordcount時,輸出目錄不可存在,不然會提示錯誤 「org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/hadoop/output already exists」 ,需先刪除 output 文件夾;在實際開發應用程序時,也可考慮在程序中加上以下代碼,能在每次運行時自動刪除輸出目錄,避免繁瑣的命令行操做,以下:)
Configuration conf = new Configuration(); Job job = new Job(conf); /* 刪除輸出目錄 */ Path outputPath = new Path(args[1]); outputPath.getFileSystem(conf).delete(outputPath, true);
|
關閉 Hadoop:
./sbin/stop-dfs.sh
再次啓動 hadoop 時,無需進行 NameNode 的初始化,只須要運行 ./sbin/start-dfs.sh 就能夠!
啓動YARN 啓動 Hadoop 後,沒有原來的JobTracker 和 TaskTracker,由於新版Hadoop使用了新的MapReduce V2框架,稱爲 YARN(Yet Another Resource Negotiator)。YARN 從 MapReduce 中分離出來,負責資源管理與任務調度。 YARN 運行於 MapReduce 之上,提供了高可用性、高擴展性。僞分佈式HADOOP能夠不安裝和啓動YARN。 經過 ./sbin/start-dfs.sh啓動Hadoop後,僅是啓動了供MapReduce使用的HDFS環境,爲了啓動 YARN來負責資源管理與任務調度。須要修改配置文件 mapred-site.xml: mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml //先從默認template重命名 用vim編輯以下: <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> 再修改配置文件 yarn-site.xml: <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> ./sbin/start-yarn.sh /YARN(需先啓動HDFS/MR) ./sbin/mr-jobhistory-daemon.sh start historyserver //啓動歷史服務器,才能在Web中查看任務運行狀況; 經過 jps命令查看到(NodeManager,ResourceManager,NameNode,DataNode)進程都啓動了; 啓動 YARN 以後,運行實例的方法仍是同樣,但資源管理方式和任務調度不一樣。觀察日誌信息能夠發現,不啓用 YARN 時,是 「mapred.LocalJobRunner」 在跑任務,啓用 YARN 以後,是 「mapred.YARNRunner」 在跑任務。啓動 YARN的好處是經過Web界面http://localhost:8088/cluster能夠查看任務運行狀況:
YARN 主要是爲集羣提供更好的資源管理與任務調度,然而這在單機上體現不出價值,反而會使程序跑得稍慢些。 若是不想啓動 YARN,務必把配置文件 mapred-site.xml重命名,好比改回到mapred-site.xml.template,須要用時再改回來。不然該配置文件存在但未開啓 YARN的狀況下,運行實例程序會提示 「Retrying connect to server: 0.0.0.0/0.0.0.0:8032″ 的錯誤,這就是爲什麼該配置文件初始默認文件名爲 mapred-site.xml.template的緣由。 (備註:先關閉yarn再rename它的配置比較好!Ubuntu用mv而不是rename來修改文件名稱! Ubuntu下面rename是另外一個較爲複雜但強大的正則表達式命令,通常用來批量重命名文件之用) ./sbin/stop-yarn.sh //關閉YARN ./sbin/mr-jobhistory-daemon.sh stop historyserver //關閉history服務器,WEB也沒了;
補充hdfs命令: hadoop@ya-chy-pc-vm:/usr/local/hadoop$ hadoop fs -ls -R / 列出虛擬hdfs的根目錄/下全部文件 –R是遞歸 hadoop@ya-chy-pc-vm:/usr/local/hadoop$ ./bin/hdfs dfs -mkdir /user/hadoop/output 新建hdfs指定目錄(絕對路徑) hadoop@ya-chy-pc-vm:/usr/local/hadoop$ ./bin/hdfs dfs -rm -r /user/hadoop/output 遞歸刪除指定目錄
|
前面已經描述了Hadoop的單點安裝,僞分佈式安裝及YARN的使用,這裏再描述集羣安裝的要點。 咱們基於以前安裝的目錄假設,僅對有區別的作特別提醒,不然請翻看前面內容。 另外,一些注意點和要點,可能也相似,前面提醒過的,無非重要,再也不提醒,假設讀者已經充分熟練掌握前面幾種安裝狀況,並順利運行。
筆者的網絡拓撲環境以下: 臺式PC(宿主機/AMDK8/8G/win10):192.168.1.X(路由器DHCP動態分配) 臺式PC(虛擬機/AMDK8/3G/Ubuntu15.10+虛擬機網絡模式爲橋接模式):192.168.1.220(master)固定IP 筆記本PC(E5420/i3/2GB/Ubuntu15.10):192.168.1.201(slave1)固定IP 筆記本PC(E5400/雙核/2GB/Ubuntu15.10):192.168.1.202(slave2)固定IP 兩兩都能ping通,能夠路由獲得彼此,算在一個局域網內。 兩兩創建SSH後,能夠用SCP(以下),將下載好的JDK/HADOOP等拷貝到其餘host主機上。(用有線網絡所在的HOST下載安裝包最快。) scp hadoop-2.7.2.tar gz hadoop@192.168.1.6:/home/hadoop/ 或 scp hadoop-2.7.2.tar gz hadoop@slave1:/home/hadoop/ 其餘相似
主要流程:
a) Hostname建議用經常使用且含有明確的master和slave。
a) 若是安裝過單點或僞分佈式就已經正確安裝了hadoop,只有配置有些變化而已。 3. 在Slave節點配號 hadoop 用戶; 4. 將 Master節點上的/usr/local/hadoop目錄複製到其餘Slave節點上(爲了快並保持配置一致,這樣比較簡單); 5. 在 Master節點上開啓Hadoop,就啓動了整個Hadoop集羣。
準備IP和網絡
任何配置前,建議都先關閉 Hadoop (/usr/local/hadoop/sbin/stop-dfs.sh),再進行後續集羣配置。
sudo vim /etc/hostname //修改「hostname=master」,其餘slave等集羣機器都要修改;注意大小寫; sudo vim /etc/hosts //修改成以下,其餘slave等集羣機器都要修改;注意大小寫; 「192.168.1.201 slave1」 「192.168.1.202 slave2」 「192.168.1.220 master」 「127.0.0.1 localhost」
對master和每一個slave機器都作如上hostname和hosts配置,且重啓動(才能體現出hostname) 注意:hosts文件中只有一個 127.0.0.1,對應名爲 localhost,有多餘應刪除,特別不能有 「127.0.0.1 master」等
SSH配置: 這個和單點相似,只不過要讓master能夠操控各個slave機器,因此額外作以下操做: cd ~/.ssh //若是之前安裝hadoop生成過ssh,就會有該目錄; rm ./id_rsa* //刪除OLD公匙(由於hostname變化了) ssh-keygen -t rsa //一直按回車就能夠(這樣就生成了無密碼的密鑰對) cat ./id_rsa.pub >> ./authorized_keys //將公鑰id_rsa.pub寫入認證文件authorized_keys中 ssh master //嘗試master本機的無密碼SSH登錄,測試經過就繼續後續處理 scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/ //將公鑰也拷貝到slave1機器上;
#如下在slave1機器上執行,其餘slave相似 mkdir ~/.ssh //若是不存在該文件夾需先建立,若已存在則忽略。Slave1若是本身弄過SSH,就會有它。 cat ~/id_rsa.pub >> ~/.ssh/authorized_keys //將master的公鑰加入本地受權文件; rm ~/id_rsa.pub //刪除master公鑰
#如下在slave1機器上執行,其餘slave相似 ssh slave1 //在master機器上執行,嘗試無密碼SSH登錄slave1,成功後,其餘slave都配置好測試完。
路徑配置: 在路徑(etc/profile)中增長行「export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin」,若是作過以前的點單等配置,應該已經有了,能夠查全部集羣的相關配置。並source一下,應用更新。
設定集羣相關配置文件: 集羣/分佈式模式須要修改/usr/local/hadoop/etc/hadoop 中的5個配置文件,更多設置請查官方說明。這裏僅設置爲了正常啓動所必須的設置項:slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
1.文件slaves 該文件記錄全部DataNode 的主機名,每行一個hostname字符串,默認爲 localhost(僞分佈式模式時,slaves文件默認爲localhost,則節點即做爲NameNode也做爲DataNode)。分佈式配置能夠保留 localhost,也可刪掉,讓master 節點僅做爲 NameNode 使用。 這裏請添加以下內容: 「slave1 slave2」 兩行,master 節點僅做爲NameNode使用,不做爲datanode。請將localhost行刪除。
2文件core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://Master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> </configuration>
3文件hdfs-site.xml 咱們有slave1和slave2全部dfs.replication填寫2,它指定dfs分佈式文件系統的replication數目。 <configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>Master:50090</value> </property> <property> <name>dfs.replication</name> <value>2/value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property> </configuration>
4文件mapred-site.xml 默認安裝完是mapred-site.xml.template,請重命名。
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration> 備註:注意master大小寫最好一致,幾個配置文件都要注意。
5文件yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
從master複製配置到各slave機器: 將 master上/usr/local/Hadoop文件夾複製到各個節點上。若是之前有安裝配置運行過僞分佈式模式,建議在切換到集羣模式前備份(或刪除)以前的臨時文件,以便出現問題。 在master 節點上執行: cd /usr/local sudo rm -r ./hadoop/tmp //刪除無用臨時文件 sudo rm -r ./hadoop/logs/* //刪除日誌 tar -zcf ~/hadoop.master.tar.gz ./hadoop //壓縮 cd ~ scp ./hadoop.master.tar.gz slave1:/home/hadoop //從master複製目錄壓縮包到slave1機器; 在 slave1 節點上執行: sudo rm -r /usr/local/hadoop //刪掉舊的(或mv備份到好比「Hadoop-standalone」等等) sudo tar -vzxf ~/hadoop.master.tar.gz -C /usr/local //解壓縮 sudo chown -R hadoop:hadoop /usr/local/hadoop //變動目錄owner權限,讓hadoop用戶可用此目錄
一樣對其餘slave進行處理。
首次運行:
首次啓動須要先在master節點執行NameNode的格式化: 在master節點上運行: hdfs namenode -format //首次運行須要執行初始化(一大堆log輸出,開啓NameNode,格式化並再次關閉)
關閉防火牆: Ubuntu15.10若是是desktop默認配置的防火牆不會影響hadoop各類模式的運行。但若是是server版本,好比centOS這種偏服務器的版本,可能默認/etc/init.d/iptables會啓動,能夠停掉它,請查相關資料。
啓動Hadoop集羣: 在 Master 節點上執行: start-dfs.sh //通常在/usr/local/hadoop/sbin,下同; start-yarn.sh mr-jobhistory-daemon.sh start historyserver 經過命令jps能夠查看各個節點所啓動的進程。正確的話,在Master節點上能夠看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 進程。在Slave節點能夠看到 DataNode 和 NodeManager 進程。缺乏任一進程都表示出錯。 還可在Master節點上經過「hdfs dfsadmin –report」查看DataNode是否正常啓動,Live datanodes爲2(2個slave機器都是datanode),則說明集羣啓動成功。
經過Web查看集羣狀態: http://master:50070/ 查看DataNode,NameNode 的狀態。若是不成功,經過啓動日誌排錯。Log4j應該配置好(前面有詳述,不在累贅)。
運行分佈式集羣的例子: 方法和僞分佈式同樣(僞分佈式就是爲了讓你聯繫分佈式的,因此理應差異不大)。 hdfs dfs -mkdir -p /user/hadoop //首先建立HDFS上的用戶目錄 hdfs dfs -mkdir input //爲hdfs分佈式系統創建input目錄 hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input //從Ubuntu本地ext4文件系統拷貝文件到hdfs http://localhost:50070/ //web查看DataNode的狀態(佔用大小會改變),文件確實複製到了DataNode中
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+' //運行MapReduce做業 說明:上述命令hadoop位於/usr/local/hadoop/bin/hadoop,由於設定過PATH,因此能夠直接執行;運行時的輸出信息與僞分佈式相似,會顯示Job 的進度。可能會有點慢,但若是遲遲沒有進度,好比 5 分鐘都沒看到進度,那不妨重啓 Hadoop 再試試。若重啓還不行,則頗有多是內存不足引發,建議增大虛擬機的內存,或者經過更改 YARN 的內存配置解決。
查看job運行狀況: 經過Web界面查看JOB進度http://master:8088/cluster ,點擊 「Tracking UI」這列的 History 鏈接,可看任務運行信息。
關閉集羣: stop-yarn.sh //在master節點上關閉yarn stop-dfs.sh //再master節點上關閉hdfs分佈式文件系統 mr-jobhistory-daemon.sh stop historyserver //在master上關閉跟蹤信息 備註:你一樣也能夠和僞分佈式相似而選擇不啓動YARN,但除了不start-yarn.sh以外,要記得改掉mapred-site.xml 的文件名,好比將它mv爲原來的mapred-site.xml.template。
至此,基本上分佈式hadoop集羣最基本的搭建運行和啓停都算弄了一下。還有大量的配置和調優工做須要研究。 提醒:千萬不要爲了調優和調優,分佈式計算系統(包括之後將介紹的SPARK)主要是爲了解決問題,先跑通解決問題是一個領域或維度;而調優並讓問題解決的更漂亮是另一個維度和領域,二者並沒有必然的聯繫;建議仍是先用上分佈式(hadoop和spark),再考慮必定數據量和計算量狀況下的調優。這是兩個工種,如同研發工程師和產業化工程師的區別。
Hadoop各類模式切換及說明:
1僞分佈式安裝的說明: 請參考相關文檔,配置起效hdfs,則input和output目錄都放到hdfs中,實現正在的基於hdfs高層文件格式之上的分佈式;但由於實在一臺PC或虛擬機的Ubuntu上操做,因此叫僞分佈式,任務並未分發給不一樣的PC節點! 2僞分佈式安裝的yarn說明: 僞分佈式容許可單獨靠hadoop;也可升級安裝yarn來支持hadoop,則有更方便查看的web界面來觀察yarn的分佈式容許; 3分佈式安裝說明: 請虛擬或實際配置至少2或多個PC節點,來測試真實分佈式hadoop系統;配置和容許和僞分佈式差很少,只是多了ssh/SCP/HOSTNAME配置等內容,原理相似; 4單點和僞分佈式切換: 備份並確保文件(mapred-site.xml.template)不存在;備份並確保文件(core-site.xml)爲初始狀態,就是「configuration標籤內部是空的!」;則能夠按照單點模型運行mapreduce的WordCount例子,並在單點所在的ext4的Ubuntu系統內發現output文件輸出(而不會輸出到hdfs上); 5僞分佈式是否啓動YARN: 按正常命令關閉YARN;備份並確保文件(mapred-site.xml.template)不存在;則會運行不帶YARN的僞分佈式模式,不然即便不啓動yarn,run的時候也會出錯! 6僞分佈式和分佈式切換: 二者無本質區別,只是將namenode,datanode,hdfs,各種manager等網元配置分不到不一樣的PC上而已;其實「僞分佈式模型」等價於啓動hadoop+hdfs+yarn的最小網元集合,而網元們都指向或曰安裝在同一個PC上。 1. 從分佈式切換到僞分佈式時,不要忘記修改 slaves 配置文件; 2. 在二者之間切換時,若遇到沒法正常啓動的狀況,能夠刪除所涉及節點的臨時文件夾,這樣雖然以前的數據會被刪掉,但能保證集羣正確啓動。因此若是集羣之前能啓動,但後來啓動不了,特別是 DataNode 沒法啓動,不妨試着刪除全部節點(包括 Slave 節點)上的 /usr/local/hadoop/tmp 文件夾,再從新執行一次 hdfs namenode -format,再次啓動試試。
|
$sudo vim /etc/bash.bashrc //修改此文件;按需輸入密碼
找到文件中的以下腳本片斷,去掉本小節第一行外的全部前導#號;
這就開啓了目錄/文件自動補全和完成的智能功能,大大提高terminal中bash命令的運行效率。
#enable bash completion in interactive shells
#if ! shopt -oq posix; then
# if [-f /usr/share/bash-completion/bash_completion ]; then
# . /usr/share/bash-completion/bash_completion
# elif [ -f /etc/bash_completion]; then
# . /etc/bash_completion
# fi
#fi
若是不是真實PC,而是用虛擬機且是VMware,那麼能夠安裝VMware tool,並使用共享目錄,在宿主機和虛擬機上傳遞文件,拷貝文字等;
網絡鏈接:http://blog.csdn.net/zybasjj/article/details/7401808 (VMware虛擬機安裝Ubuntu使用share folders共享windows目錄的方法)
步驟:
1.關閉ubuntu虛擬機後,在虛擬機配置中設定CD/DVD-ROM指向vmware安裝目錄下的」linux.iso」(若是是win虛擬機則指向windows.iso);
2.啓動ubuntu虛擬機發現taskbar上有VMware Tools的光盤圖標;雙擊查看;
3.發現多個文件,好比:manifest.txt和 VMwareTools-10.0.5-3228253.tar.gz等,將套們都拷貝到 /tmp 下;
4.進入cd /tmp;並解壓縮tar zxvf VMwareTools-8.4.5-324285.tar.gz;
5.進入cd vmware-tools-distrib(進入解壓後對應文件夾);
6.sudo ./vmware-install.pl 命令來安裝VMware tool;會提示輸入登錄用戶的密碼;而後有不斷的提示,主要都按回車,最後會出現: Enjoy, --the VMware team,就算按照完畢!
7.在宿主機(好比win10)上對vmware中的ubuntu虛擬機的配置中「共享目錄」進行設定,通常不勾選只讀;進入ubuntu虛擬機後會在 /mnt/hgfs/xxx 下發現win10上的文件了!(xxx就是win10宿主機上設定的共享目錄)
8.注意win和linux的文件結尾不一樣,尤爲是帶回車換行的文本文件等;二進制文件可能好點;
Ubuntu下Ctrl+Alt+T調用出Terminal界面。
sudo find / -name 'mapred-site.xml' //在根目錄查找此文件名的文件
可執行 echo $PATH(或export $PATH,看用的什麼shell環境了) 查看它是包含了不少目錄的字符串。例如咱們在主文件夾 ~ 中執行 ls 這個命令時,實際執行的是 /bin/ls 這個程序,而不是 ~/ls 這個程序。系統是根據 PATH 這個環境變量中包含的目錄位置,逐一進行查找,直至在這些目錄位置下找到匹配的程序(若沒有匹配的則提示該命令不存在)。
咱們通常先進入/usr/local/hadoop 目錄中,再執行 sbin/hadoop,實際上等同於運行 /usr/local/hadoop/sbin/hadoop。咱們能夠將 Hadoop 命令的相關目錄加入到 PATH 環境變量中,這樣就能夠直接經過 start-dfs.sh 開啓 Hadoop,也能夠直接經過 hdfs 訪問 HDFS 的內容,方便平時的操做。
咱們若是在 ~/.bashrc 中設置PATH,好比「export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin」,並用source ~/.bashrc使設置生效;以後在任意目錄中,均可以直接使用 hdfs 等命令。比較方便。
若是要升級或安裝,能夠經過$sudo apt-get install open-vm-tools 來安裝和升級;
也能夠從網絡下載「linux.iso」的vmware tools的鏡像光盤,放入虛擬機的DVD/CDROM中,啓動後多出一個盤,位於「/media/username/VMware tool/」目錄中,而後將「VMwareTools-10.0.0-2977863.tar.gz」文件拷貝到好比/tmp目錄,解壓並運行「./install.pl」就能安裝了。
別忘記啓動虛擬機配置中設定外界的宿主系統(好比WIN10)的一個目錄(好比叫sharedfolder)爲共享目錄,進入虛擬機後,自動mount掛在到「/mnt/hgfs/sharedfolder」這樣能夠共享文件了。
當html或mht等頁面禁止保存或拷貝內容的時候,能夠查看源碼並保存爲html後綴文件。
而後本地打開拷貝黏貼其內容。
若是是zh-cn而非通用的3字節utf-8編碼,則能夠用諸如notepad++等軟件打開html並轉換爲utf8,保存再次打開,就能拷貝黏貼了。
本文內容是筆者從網絡資料中收集,整理,實踐,修訂,備註而成。
一爲整理學習,方便之後查閱參考;
二爲方便他人學習交流之用;
如下羅列資料只有部分研究過,僅供參考,並沒有傾向性推薦。
感謝開放的網絡。感謝網絡上各位的分享!
ubuntu15.04安裝hadoop2.6.0及eclipse開發環境配置:http://www.linuxdiyf.com/linux/12474.html
Ubuntu15.04單機/僞分佈式安裝配置Hadoop與Hive試驗機:http://www.linuxdiyf.com/linux/11858.html
Ubuntu下安裝Hadoop(單機版):http://www.linuxdiyf.com/linux/11372.html
http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html
http://www.micmiu.com/bigdata/hadoop/hadoop-2x-ubuntu-build/
http://www.powerxing.com/install-hadoop/ 筆記Hadoop
Hadoop集羣安裝配置教程_Hadoop2.6.0_Ubuntu/CentOS
使用命令行編譯打包運行本身的MapReduce程序 Hadoop2.6.0
使用Eclipse編譯運行MapReduce程序 Hadoop2.6.0_Ubuntu/CentOS
Hadoop-in-Practice第四章MapReduce-Join代碼運行問題
Hadoop安裝教程_單機/僞分佈式配置_CentOS6.4/Hadoop2.6.0
大數據教材推薦
林子雨老師(研究生導師)編著的《大數據技術原理與應用》,該教程是針對高校學生打造的入門級教材,目前已被多所高校做爲大數據課程指定教材。
林子雨主講入門級大數據在線課程(視頻)