1. 程式人生 > >Hbase分散式搭建之hadoop搭建

Hbase分散式搭建之hadoop搭建

一、搭建環境

虛擬機器數量:3臺
作業系統:Ubuntu 14.04
Hadoop:Hadoop 2.2.0
Java:java version “1.7.0_51”

需要的安裝包:
jdk:https://download.csdn.net/download/leoe_/10292237
hadoop 和 zookeeper:https://download.csdn.net/download/leoe_/10292256


二、實驗內容及步驟

為方便闡述,本實驗只搭建一個有三臺主機的小叢集。
三臺機器的具體分工命名如下:

IP 主機名 功能角色
192.168.60.131 Master namenode(控制節點)、JobTracker(工作分配)
192.168.60.132 slave1 datanode(資料節點)、TaskTracker(任務執行)
192.168.60.133 slave2 datanode(資料節點)、TaskTracker(任務執行)

主機網路結構圖如下:
這裡寫圖片描述

實驗環境:Ubuntu14.04,hadoop-2.2.0,java-1.7.0-openjdk-i386,ssh。

綜述:Hadoop完全分散式的安裝需要以下幾個過程:

  1. 為防止許可權不夠,三臺機器均開啟root登入。
  2. 為三臺機器分配IP地址及相應的角色。
  3. 對三臺機器進行jdk安裝並配置環境變數。
  4. 對三臺機器進行ssh(安全外殼協議)遠端無密碼登入安裝配置。
  5. 進行Hadoop叢集完全分散式的安裝配置。

下面對以上過程進行詳細敘述。

安裝過程中需要的安裝包自行下載,注意將下面的ip、檔案路徑替換為自己的。


(一)JDK安裝

1、解壓
tar –zxvf jdk-7u67-linux-x64.tar.gz

2、修改/etc/profile檔案


(1)vim /etc/profile
檔案末尾加:

export JAVA_HOME=/zh/jdk1.7.0_67 
export JRE_HOME=/zh/jdk1.7.0_67/jre  
export PATH=$PATH:/zh/jdk1.7.0_67/bin  
export CLASSPATH=./:/zh/jdk1.7.0_67/lib 

這裡寫圖片描述
(2)使/etc/profile檔案生效:

source /etc/profile

(3)驗證JDK安裝成功:

java –version

(4)按此步驟在叢集剩餘伺服器中配置好JDK


(二)SSH安裝

1、配置主機名與IP地址的對應
在三臺主機上分別設定/etc/hostname:vim /etc/hostname修改為對應的master或slave。hosts檔案用於定義主機名與IP地址之間的對應關係(三臺主機配置相同)。

修改/etc/hosts:vim /etc/hosts
圖3-1

hostname這個檔案用於定義Ubuntu的主機名(不同ip對應的名字不同192.168.60.131對應master,192.168.60.132對應slave1,192.168.60.133對應slave2)。

2、在master節點上安裝ssh

(1) sudo apt-get install ssh
(2)進入.ssh目錄下面,在每臺機器上執行:ssh-keygen -t dsa 之後一路回車,產生金鑰;如果沒有.ssh目錄則在/home檔案mkdir .ssh
圖2-1
(3)完成第二步後會產生兩個檔案:

id-dsa     #私鑰
id-dsa.pub   #公鑰

(4)在第一臺機器的目錄.ssh下執行命令,cat id_dsa.pub >> authorized_keys;此後.ssh下面會出現authorized_keys檔案。
(5)然後將第一臺機器的.ssh目錄下面的authorized_keys檔案拷貝到第二臺計算機的.ssh目錄下,如:scp authorized_keys slaver1:~/.ssh/
(6)再轉到第二臺機器的.ssh目錄下,會發現剛剛傳輸過來的檔案-authorized_keys,然後執行命令,將第二臺計算機的公鑰也加進來,如:cat id_dsa.pub >> authorized_keys.
(7)將第二臺計算機新生成的authorized_keys傳輸第三臺計算機,將第三臺計算機的公鑰-id-rsa.pub新增到從第二臺計算機傳過來的authorized_keys裡面。
(8)依次類推,直至叢集中的最後一臺計算機。
(9)在叢集的最後一臺計算機執行完新增後,生成的authorized_keys檔案就包含叢集中所有計算機的公鑰,如果以後還有機器加進到叢集中來,可以直接新增到檔案-authorized_keys。最後,將最後生成的authorized_keys複製到叢集中的每一臺計算機的.ssh目錄下,覆蓋掉之前的authorized_keys。
(10)完沉第九步後,就可以在叢集中任意一臺計算機上,免密碼ssh登入到其他計算了。


(三)Hadoop搭建

三臺hadoop檔案配置相同,所以配置完一臺後,可以把整個hadoop複製過去就行了,現在開始配置master主機的hadoop檔案。
1.解壓hadoop,進hadoop中 /etc/hadoop/ 資料夾下面
2.需要配置的檔案涉及到的有7個(mapred-site.xml.tmplate除外)如下圖示示部分:
圖3-2
mapred-site.xml預設不存在的,可以複製相應的template檔案獲得。

cp mapred-site.xml.template marpred-site.xml

(1)配置檔案1:hadoop-env.sh
修改JAVA_HOME值如下圖:
這裡寫圖片描述

(2)配置檔案2:yarn-env.sh
末尾新增JAVA_HOME值如下圖:
圖3-4
(3)配置檔案3:slaves(儲存所有slave節點)刪除localhost寫入slave1,slave2:

圖3-5
(4)配置檔案4:core-site.xml
新增配置內容如下圖:

<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/software/hdfs_all/tmp</value>
</property>

圖3-6
(5)配置檔案5:hdfs-site.xml

<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 以下兩個引數可以不進行配置,在2.20版本中只要在core-site.xml
檔案中指定了hadoop.tmp.dir以下目錄會自動生成在tmp目錄中,但是為
了維護方便,有必要將其路徑明確指定在配置檔案中 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/software/hdfs_all/dfs/name</value>
</property>
<property>
<name>dfs.namenode.data.dir</name>
<value>file:/home/software/hdfs_all/dfs/data</value>
</property>  

圖3-7
(6)配置檔案6:mapred-site.xml

<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> 

圖3-8
(7)配置檔案7:yarn-site.xml

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>

圖3-9


上面配置完畢後,基本上完成了90%的工作,剩下的就是複製。我們可以把整個hadoop複製過去使用命令如下:

 scp -r hadoop-2.2.0/ slave1:/home/software
 scp -r hadoop-2.2.0/ slave2:/home/software

為方便使用者和系統管理使用hadoop、hdfs相關命令,需要在/etc/environment配置系統環境變數,使用命令:vim /etc/environment
配置內容為hadoop目錄下的bin、sbin路徑,具體如下
圖3-10
新增完後執行生效命令:source /etc/environment
下面要做的就是啟動驗證,建議在驗證前,把以上三臺機器重啟,使其相關配置生效。


(四)啟動驗證

在maser節點格式化namenode:hadoop namenode -format

啟動hadoop:start-all.sh

使用Jps命令master有如下程序,說明配置正確

圖4-1
使用Jps命令slave1、slave2有如下程序,說明配置正確

圖4-2
檢視分散式檔案系統:http://master:50070

圖4-3
檢視MapReduce:http://master:8088

圖4-4