1:Vmware虛擬軟件里面安裝好Ubuntu操作系統之后使用ifconfig命令查看一下ip;

2:使用Xsheel軟件遠程鏈接自己的虛擬機,方便操作。輸入自己ubuntu操作系統的賬號密碼之后就鏈接成功了;

3:修改主機的名稱vi /etc/hostname和域名和主機映射對應的關系 vi /etc/hosts,改過之后即生效,自己可以ping一下,我這里ip對應master,比如ping master之后發現可以ping通即可;
(centos操作系統修改主機名命令:vi /etc/sysconfig/network,修改內容為HOSTNAME=master)




4:修改過主機名稱和主機名與ip對應的關系之后;開始上傳jdk,使用filezilla這個工具將jdk文件以及其他文件上傳到ubuntu操作系統中;

鼠標左擊選中想要上傳的文件拖到右邊即可,如下所示:

上傳成功之后可以檢查一下,這里默認上傳到root目錄下面;顯示已經上傳成功即可;

5:上傳之后創建一個文件夾用於存放上傳的文件或者壓縮包;

記住-C是大寫,小寫的-c會報錯,見下面的測試結果;


解壓縮之后可以進到自己創建的hadoop目錄下面看看效果,確定已經解壓縮了;

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:解決偽分布式集群不需要密碼解決方法是將自己的公鑰加到自己的授權列表里面就可以完成自己登陸自己的免密鑰登陸:
上面的操作完成以后,偽分布式集群登陸自己主機就不需要輸入密碼了:
至此,偽分布式集群搭建徹底結束。
一個良好的開始會鼓勵你更加努力......
