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完全分散式的安裝需要以下幾個過程:
- 為防止許可權不夠,三臺機器均開啟root登入。
- 為三臺機器分配IP地址及相應的角色。
- 對三臺機器進行jdk安裝並配置環境變數。
- 對三臺機器進行ssh(安全外殼協議)遠端無密碼登入安裝配置。
- 進行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
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
(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除外)如下圖示示部分:
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)配置檔案3:slaves(儲存所有slave節點)刪除localhost寫入slave1,slave2:
(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>
(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>
(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>
(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>
上面配置完畢後,基本上完成了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路徑,具體如下
新增完後執行生效命令:source /etc/environment
下面要做的就是啟動驗證,建議在驗證前,把以上三臺機器重啟,使其相關配置生效。
(四)啟動驗證
在maser節點格式化namenode:hadoop namenode -format
啟動hadoop:start-all.sh
使用Jps命令master有如下程序,說明配置正確
使用Jps命令slave1、slave2有如下程序,說明配置正確
檢視分散式檔案系統:http://master:50070
檢視MapReduce:http://master:8088