1:Vmware虛擬軟件裏面安裝好Ubuntu操做系統以後使用ifconfig命令查看一下ip;java
2:使用Xsheel軟件遠程連接本身的虛擬機,方便操做。輸入本身ubuntu操做系統的帳號密碼以後就連接成功了;node
3:修改主機的名稱vi /etc/hostname和域名和主機映射對應的關係 vi /etc/hosts,改過以後即生效,本身能夠ping一下,我這裏ip對應master,好比ping master以後發現能夠ping通便可;linux
(centos操做系統修改主機名命令:vi /etc/sysconfig/network,修改內容爲HOSTNAME=master)web
4:修改過主機名稱和主機名與ip對應的關係以後;開始上傳jdk,使用filezilla這個工具將jdk文件以及其餘文件上傳到ubuntu操做系統中;ubuntu
鼠標左擊選中想要上傳的文件拖到右邊便可,以下所示:vim
上傳成功以後能夠檢查一下,這裏默認上傳到root目錄下面;顯示已經上傳成功便可;centos
5:上傳以後建立一個文件夾用於存放上傳的文件或者壓縮包;瀏覽器
記住-C是大寫,小寫的-c會報錯,見下面的測試結果;服務器
解壓縮以後能夠進到本身建立的hadoop目錄下面看看效果,肯定已經解壓縮了;ssh
6:解壓縮jdk以後開始將java添加到環境變量中(ubuntu操做系統中配置jdk的環境變量):
進去以後按shift+g到最後面,到最前面雙擊g,點擊a/s/i這三個任意一個字母進入命令行模式,能夠對配置文件進行修改;
配置的方式有不少種,這只是其中一種。
配置好jdk以後能夠測試一下是否配置成功,以下圖,若是沒有使用source /etc/profile刷新配置是沒法測試成功的;
使用source /etc/profile刷新配置以後查看java的版本便可以查看出來;
這裏出了一點小插曲,個人linux版本的jdk第一次好像不能用,報了錯,覺得沒配置好呢,後來才發現是jdk錯了,因此這裏都當心點;
7:開始上傳hadoop和解壓縮hadoop;上傳和上傳jdk同樣的作法,這裏不作多敘述;
查看hadoop的目錄:hadoop-2.4.1/share/hadoop裏面是核心jar包;
8:解壓縮以後開始配置hadoop,找到以下所示的路徑;
修改以下幾個配置文件;詳細修改見以下配置所示:
修改的第一個配置文件,hadoop-env.sh;
修改的內容以下所示:主要修改就是jdk的JAVA_HOME;若是忘記本身jdk的目錄能夠執行命令echo $JAVA_HOME複製一下結果便可;
修改第二個配置文件:core-site.xml;
修改的內容以下所示:由於是僞分佈式,因此節點配置直接配置主機名了;
<!-- 指定HADOOP所使用的文件系統schema(URI),HDFS的老大(NameNode)的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <!-- 指定hadoop運行時產生文件的存儲目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop-2.4.1/tmp</value> </property>
修改第三個配置文件:hdfs-site.xml
修改的內容以下所示:
<!-- 指定HDFS副本的數量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
修改第四個配置文件:首先將mapred-site.xml.template修改成mapred.site.xml,而後就將開始修改配置文件;
修改內容以下所示:
1 <!-- 指定mr運行在yarn上 --> 2 <property> 3 <name>mapreduce.framework.name</name> 4 <value>yarn</value> 5 </property>
修改第五個配置文件:yarn-site.xml;
修改的內容以下所示:至此配置基本結束;
<!-- 指定YARN的老大(ResourceManager)的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <!-- reducer獲取數據的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
修改第六個配置文件:vi slaves
修改的內容便是本身的主機名稱:
9:查看一下ubuntu下面的防火牆的狀態和關閉開啓防火牆:
下圖所示分別是關閉防火牆,查看防火牆的狀態,開始防火牆和查看防火牆的狀態;
10:爲了執行hadoop命令方便,一樣配置一下hadoop的環境變量;一樣vi /etc/profile ,配置以下所示:
配置保存以後記得source /etc/profile刷新配置;
11:格式化namenode(是對namenode進行初始化)
執行格式化命令後看到successfully表示格式化成功;
12:啓動hadoop,先啓動HDFS,sbin/start-dfs.sh;再啓動YARN,sbin/start-yarn.sh;
啓動過程當中輸出大概三次yes和密碼;輸入便可;
13:驗證是否啓動成功,使用jps命令驗證;查看有幾個進程;分別是啓動start-dfs.sh和start-yarn.sh的效果;
14:搭建好僞分佈式集羣以後能夠在window訪問集羣的web服務;
注意:若是在window瀏覽器沒法訪問的時候(jps正常啓動),這個時候估計是linux操做系統的防火牆的問題:
service iptables stop : 關閉防火牆
service iptables status : 查看防火牆的狀態
service iptables start : 開啓防火牆
15:簡單測試一下,將一個文件上傳到hdfs上面,以下所示:
假如你這樣書寫hadoop fs -put jdk-7u65-linux-i586.tar.gz hdfs://master:9000這個9000後面沒有這個/那麼你在瀏覽器是看不到任何文件的;
去web服務查看效果以下所示:就是剛剛上傳的文件;
16:將文件從hdfs分佈式集羣中下載下來:
效果以下所示:
17:使用hadoop自帶的mapreduce程序來測試mapreduce的效果:
計算圓周率的程序;
簡單使用一下mapreduce,以計算單詞的個數爲例;
建立一個count.txt用於測試裏面的單詞重複的次數:
由於數據是在集羣上面跑的,因此文件要放到集羣上面;
首先須要建立一個文件夾,用於存放文件;
建立好的文件夾能夠在web服務器裏面查看,以下所示:
將新建的count.txt文件放到input文件夾裏面,以下所示:
開始使用mapreduce的自帶案例進行單詞重讀測試:
能夠查詢執行以後出現的結果:也能夠直接去web服務器查看執行的結果;
可使用命令查看執行的結果,以下所示:
HDFS的大致實現的思想:
1:hdfs是經過分佈式集羣來存儲文件,爲客戶端提供了一個便捷的訪問方式,就是一個虛擬的目錄結構
2:文件存儲到hdfs集羣中去的時候是被切分紅block塊的
3:文件的block存放在若干臺datanode節點上的
4:hdfs文件系統中的文件於真實的block之間有映射關係,由namenode管理
5:每個block在集羣中會存儲多個副本,好處是能夠提升數據的可靠性,還能夠提供訪問的吞吐量;
18:hdfs常使用的命令:
1 hadoop fs 顯示hadoop 的fs的功能 2 hadoop fs -ls / 列舉某目錄下面的文件夾 3 hadoop fs -lsr 列舉某目錄下面的文件夾及其文件夾裏面的文件 4 hadoop fs -mkdir /user/hadoop 在user文件夾下面建立一個hadoop文件夾 5 hadoop fs -put a.txt /user/hadoop/ 將a.txt文件上傳到user文件夾下面的hadoop文件夾下面 6 hadoop fs -get /user/hadoop/a.txt / 獲取到user文件夾下面的hadoop文件夾下面的a.txt文件 7 hadoop fs -cp /原路徑 /目標路徑 拷貝文件,從原路徑拷貝到目標路徑 8 hadoop fs -mv /原路徑 /目標路徑 從原路徑移動到目標路徑 9 hadoop fs -cat /user/hadoop/a.txt 查看a.txt文件裏面的內容 10 hadoop fs -rm /user/hadoop/a.txt 刪除user文件夾下面的hadoop文件夾下面的a.txt文件 11 hadoop fs -rm -r /user/hadoop/a.txt 遞歸刪除,文件夾和文件 12 hadoop fs -copyFromLocal /本地路徑 /目的路徑 與hadoop fs -put功能相似。 13 hadoop fs -moveFromLocal localsrc dst 將本地文件上傳到hdfs,同時刪除本地文件。 14 hadoop fs -chown 用戶名:用戶組名 /文件名 修改所屬的用戶和用戶組,權限修改 15 hadoop fs -chmod 777 /文件名 文件的權限可讀可寫可執行的的權限修改 16 hadoop fs -df -h / 查看根目錄下面的磁盤空間,可用和未用等等 17 hadoop fs -du -s -h / 查看某文件的大小 18 hadoop fs -du -s -h hdfs://主機名:9000/* 查看根目錄下面的全部文件的大小
未完待續.......
19:免密鑰登錄的配置(配置公鑰和私鑰):若是是僞分佈式集羣的搭建,那麼我這裏爲了測試克隆了一臺ubuntu,若是是分佈式集羣搭建,那麼是三個ubuntu操做系統。因此這裏簡單演示如何配置免密鑰登錄;
(1):master請求登錄slaver1;
(2):查看受權列表;
(3):用master的公鑰加密一個隨機字符串發送給master;
(4):master用本身的私鑰解密slaver1過來的密文;
(5):將解密結果發送給slaver1;
(6):slaver1驗證解密結果;
(7):經過master驗證;
首先使用vi /etc/hostname(centOs操做系統vim /etc/sysconfig/network)將克隆的主機名修改一下:
接着將vi /etc/hosts裏面的域名和主機對應起來,這樣就能夠進行密碼登錄:
兩個ubuntu操做的hosts的配置都是以下圖所示的:
修改完以後開始配置密鑰,使用命令生成密鑰:在master上使用ssh-keygen -t rsa命令以後一直回車便可;注意第一個enter鍵看一下本身的密鑰對保存的路徑:個人是/root/.ssh/id_rsa
生成密鑰以後找到密鑰所在的路徑,以下所示:
將密鑰rsa.pub拷貝到slaver1的home目錄下面的hadoop目錄下面:(scp,ssh copy的縮寫,遠程拷貝文件或者目錄)
或者ssh-copy-id 主機名稱;這樣操做直接將公鑰拷貝到目的主機的authorized_keys中;
建立一個authorized_keys(touch authorized_keys建立這個文件)文件而且將權限修改成600以後將密鑰添加到這個文件中:使用cat命令將密鑰進行追加操做,因爲我將master的密鑰拷貝到/home/hadoop下面,因此注意路徑:
按照上面的操做完成就能夠完成master免密鑰登錄slaver1主機了;
20:解決僞分佈式集羣不須要密碼解決方法是將本身的公鑰加到本身的受權列表裏面就能夠完成本身登錄本身的免密鑰登錄:
上面的操做完成之後,僞分佈式集羣登錄本身主機就不須要輸入密碼了:
至此,僞分佈式集羣搭建完全結束。
一個良好的開始會鼓勵你更加努力......