Hadoop分布式集群搭建hadoop2.6+Ubuntu16.04


前段時間搭建Hadoop分布式集群,踩了不少坑,網上很多資料都寫得不夠詳細,對於新手來說搭建起來會遇到很多問題。以下是自己根據搭建Hadoop分布式集群的經驗希望給新手一些幫助。當然,建議先把HDFS和MapReduce理論原理看懂了再來搭建,會流暢很多。

 

准備階段:

系統:Ubuntu Linux16.04  64位 (下載地址:https://www.ubuntu.com/download/desktop)

安裝好Ubuntu之后,如果之前沒有安裝過jdk,需要先安裝jdk。這里安裝jdk的版本是:jdk1.8.0_144  (下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) 這里就不展開安裝說明,安裝jdk很簡單,這里自行百度吧。

建議Ubuntu下載64位,因為Hadoop2.5.0之后的版本里面的庫都是64位的,32位的Linux系統里面每次運行Hadoop都會報警告。

現在准備好了一台安裝了java的Ubuntu虛擬機,別忘了搭建Hadoop集群至少需要三台Ubuntu虛擬機。

最簡單的辦法就是 使用VMware自帶的克隆的辦法,克隆出三台一模一樣的虛擬機。

具體操作參見地址 (https://jingyan.baidu.com/article/6b97984d9798f11ca2b0bfcd.html)

准備好了三台Ubuntu Linux虛擬機,接下來就開始搭建集群。

 

先總的看一下所有的步驟:

一、配置hosts文件

二、建立hadoop運行帳號

三、配置ssh免密碼連入

四、下載並解壓hadoop安裝包

五、配置 /etc/hadoop目錄下的幾個文件及 /etc/profile

六、格式化namenode並啟動集群 

 

接下來根據步驟開始搭建:

一、配置hosts文件

以上准備了三台虛擬機,但是虛擬機的主機名也是一樣的,需要現對虛擬機主機名進行修改,來進行區分一個主節點和兩個從節點。

修改主機名命令:

顯示的master就是主機名,我這里已經修改好了,可以把三台虛擬機分別命名 主節點:master 從節點1:node1 從節點2:node2

 

修改好了,保存即可。

接下來,分別查看三台虛擬機的ip地址,命令如下:

inet addr就是這台虛擬機的ip地址。

接下來打開hosts文件 進行修改:

將三台虛擬機的ip地址和主機名加在里面,其它的不用動它。

三台虛擬機都要修改hosts文件。簡單的說配置hosts后三台虛擬機就可以進行通信了,可以互相ping一下試試,是可以ping通的。

 

二、建立hadoop運行帳號

解釋一下這一步驟,就是建立一個group組,然后在三台虛擬機上重新建立新的用戶,將這三個用戶都加入到這個group中。

以下操作三台虛擬機都要進行相同操作

 首先添加一個叫hadoop用戶組進來

添加名叫hduser的用戶,並添加到hadoop組中。

 

接着輸入以下指令然后輸入兩次密碼

 

然后賦予hduser用戶admin權限

接下來的操作 切換到剛剛新建的用戶進行

 

三、配置ssh免密碼連入

開始配置ssh之前,先確保三台機器都裝了ssh。

輸入以下命令查看安裝的ssh。

如果缺少了opensh-server,需要進行安裝。

安裝完畢之后開始配置ssh

接下來的這第三個步驟的操作請注意是在哪台主機上進行,不是在三台上同時進行

(1)下面的操作在master機上操作

首先在master機上輸入以下命令,生成master機的一對公鑰和私鑰:

 

以下命令進入認證目錄可以看到,  id_rsa 和 id_rsa.pub這兩個文件,就是我們剛剛生成的公鑰和私鑰。

 

然后,下面的命令將公鑰加入到已認證的key中:

再次進入生成目錄,可以看到多出authorized_keys這個文件:

 

然后輸入ssh localhost 登錄本機命令,第一次提示輸入密碼,輸入exit退出,再次輸入ssh localhost不用輸入密碼就可以登錄本機成功,則本機ssh免密碼登錄已經成功。

 

到這里是不是已經對ssh免密碼登錄有了認識,不要着急,開始配置node1和node2節點的ssh免密碼登錄,目的是讓master主機可以不用密碼登錄到node1和node2主機。

(2)這一步分別在node1和node2主機上操作

將master主機上的is_dsa.pub復制到node1主機上,命名為node1_dsa.pub。node2主機進行同樣的操作。

 

將從master得到的密鑰加入到認證,node2主機進行同樣的操作。

然后開始驗證是不是已經可以進行ssh免密碼登錄。

(3)在master機上進行驗證

同樣第一次需要密碼,之后exit退出,再ssh node1就不需要密碼登錄成功,說明ssh免密碼登錄配置成功!

 

如果失敗了,可能是前面的認證沒有認證好,可以將.ssh目錄下的密鑰都刪了重新生成和配置一遍。或者檢查下hosts文件ip地址寫的對不對。

 

四、下載並解壓hadoop安裝包

版本:Hadoop2.6.0  (下載地址:http://mirrors.hust.edu.cn/apache/hadoop/common/)

建議初學者選擇2.6.0或者2.7.0版本就可以了,而且如果后面要配置Eclipse開發環境的話,這兩個版本的插件很容易找到,不用自己去編譯。

話不多說,將hadoop壓縮包,解壓到一個文件夾里面,我這里解壓到了home文件夾,並修改文件夾名為hadoop2.6。所在的目錄就是/home/hduser/hadoop2.6

 三台主機都要解壓到相應位置

 

五、配置 /etc/hadoop目錄下的幾個文件及 /etc/profile

主要有這5個文件需要修改:

~/etc/hadoop/hadoop-env.sh

~/etc/hadoop/core-site.xml

~/etc/hadoop/hdfs-site.xml

~/etc/hadoop/mapred-site.xml

~/etc/hadoop/slaves

/etc/profile

三台機都要進行這些操作,可以先在一台主機上修改,修改完了復制到其它主機就可以了。

 首先是hadoop-env.sh ,添加java安裝的地址,保存退出即可。

然后core-site.cml

解釋下:第一個fs.default.name設置master機為namenode   第二個hadoop.tmp.dir配置Hadoop的一個臨時目錄,用來存放每次運行的作業jpb的信息。

 

接下來hdfs-site.xml的修改:

解釋下:dfs.name.dir是namenode存儲永久性的元數據的目錄列表。這個目錄會創建在master機上。dfs.data.dir是datanode存放數據塊的目錄列表,這個目錄在node1和node2機都會創建。 dfs.replication 設置文件副本數,這里兩個datanode,所以設置副本數為2。

接下來mapred-site.xml的修改:

 

解釋下:這里設置的是運行jobtracker的服務器主機名和端口,也就是作業將在master主機的9001端口執行。

 接下來修改slaves文件

這里將兩台從主機的主機名node1和node2加進去就可以了。

 最后修改profile文件 ,如下進入profile:

將這幾個路徑添加到末尾:

修改完讓它生效:

 

 檢查下是否可以看到hadoop版本信息

顯示出了版本信息,如果沒有顯示出來,回過去檢查 profile路徑是否填寫錯誤。

 

六、格式化namenode並啟動集群 

接下來需要格式化namenode,注意只需要在 master主機上進行格式化。格式化命令如下:

 

看到successful表示格式化成功。

接下來啟動集群:

啟動完畢,檢查下啟動情況: master主機看到四個開啟的進程,node1和node2看到三個開啟的進程表示啟動成功。

 

如果有疑問或疏漏的地方,歡迎大家指出和討論哈哈!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM