傻瓜式 Hadoop + Hbase 分佈式安裝教程

本教程不涉及任何原理性內容,可以作爲使用手冊,跟着走一遍即可順利配好 Hadoop 分佈式環境支持虛擬機,雙系統,雲服務器的配置

前提要求(請務必確認,不要直接跳到操作部分)

  1. 使用虛擬機務必保證開啓橋接模式,並處於同一網段(同一局域網(校園網)或 WiFi 熱點下),不要使用NAT等其他模式聯網。
    虛擬機的橋接模式相當於模擬路由器,所以雙系統是不能直接與虛擬機連接的(相當於缺少路由器),同 理,校園網(局域網)也無法直接跟雲服務器(阿里雲,騰訊雲等)連接,所以
    要麼全是雲服務器
    要麼全是虛擬機
    要麼全是雙系統
  2. 所有要連入分佈式的節點(組成分佈式系統的主機或者虛擬機)之間必須能互相連通。 比 如 有 三 臺 電 腦 要 組 成 分 布 式 環 境 , 三 臺 電 腦 的 IP 分 別 是 : 192.168.1.1;192.168.1.2;192.168.1.3
    那麼,在任意主機上執行如下語句:
    ping 192.168.1.1
    ping 192.168.1.2
    ping 192.168.1.3
    應該都能看到有類似這樣的結果出現icmp_seq=1 ttl=61 time=0.467 ms
    而不是 timeout
  3. 所有人用戶名相同,考慮到不同用戶名配置會出現各種問題(比較麻煩),請保持相同用戶名,如hadoop
  4. 所有人的 Hadoop 和 Hbase 版本號應相同,如果不同可能會遇到一些問題,如果你可以自己解決的話可以保留自己的版本,不過爲了照顧其他組員,建議統一使用相同版本。
    考慮到軟件的發展,在這裏使用的都是最新穩定版,經測試,無論是操作還是執行代碼都沒有問題。
    如果採用你們自己的版本,請務必確保版本統一,Hadoop 和 Hbase 互相支持,以下配置文件理論上也適用於舊版本,如果不確定或不太懂,請按照本教程來
    新版本和舊版本主要差在端口上,以下是日常會用到的端口的改動:
    Hadoop 的網頁管理器端口從 50070(2.x版本)變成了 9870 (3.x版本)
    Hbase 的網頁管理器端口從 60010(1.2.x版本)變成了16010(1.4.x及以後版本) Yarn 的網頁管理器一直是 8088 端口
    網頁管理器可以在你配置好後檢查時使用,比較直觀快捷。
    (所有端口都可以設置,本教程因爲主打簡單快速就不做特殊說明,有需要可以去查看官方文檔:https://hadoop.apache.org/docs/ 找到你的版本之後進入查看即可)

開始操作

0. 用戶名

所有人用戶名保持相同,考慮到不同用戶名配置會出現各種問題(比較麻煩),請保持相同用戶名 本教程所有節點用戶名均爲 hadoop(實際上任意,這裏爲了方便,採用 hadoop)
如果用戶名不同,可以手動修改用戶名,鑑於直接修改用戶名比較麻煩,這個教程是寫給大象看的,此處採用更簡 單的方法:新建用戶
(如果你們小組的用戶名已經統一,就不需要進行如下操作)
(如果你們小組的用戶名已經統一,就不需要進行如下操作)
打開終端,依次輸入如下指令

#(如果你們小組的用戶名已經統一,就不需要進行如下操作)

# 添加用戶
sudo adduser hadoop
# 之後會要求輸入密碼和驗證密碼
# 然後會詢問添加一些信息,可以一直回車跳過
# 最後按一下 y 再回車就完成了創建用戶的操作

# 將用戶設置爲管理員
sudo adduser hadoop sudo

# 之後請用新建的用戶登錄
su hadoop

所有操作需要在小組統一用戶名下進行。

1.安裝Java環境

Hadoop 基於 Java,爲了保證其能正常運行,我們需要先安裝 Java 環境
介於部分系統Java環境配置有各種問題,這裏請所有節點重新完整安裝一遍Java環境
(除非你能保證自己下文有關Java的配置不出錯) 打開終端,依次輸入

1	# 添加 Orcale Java 軟件源
2	sudo add-apt-repository ppa:webupd8team/java
3	# 更新軟件列表
4	sudo apt-get update
5	# 安 裝 Java
6	sudo apt-get install oracle-java8-installer
7	# 期間需要用鍵盤的方向鍵和回車鍵同意許可(移動到 ok 然後按回車),之後等待即可
8	# 這一步因爲網絡的原因,可能有些慢,如果是虛擬機,此處可以考慮先切換成 NAT 模式聯網,進行下載安裝,
9	# 安裝好後再切回橋接模式

安裝完後,oracle-java,自動配置好JAVA_HOME變量,如果按照這種方式安裝,下文中提到的所有JAVA_HOME環境變量均爲 /usr/lib/jvm/java-8-oracle/jre/
本教程即採用這種方式安裝 Java環境

2.配置Hosts

首先,我們要獲取到所有節點的IP地址,在所有節點執行 ifconfig 觀察結果:
在這裏插入圖片描述
不是 lo 的一行是你的外網連接,圖中圈中部分是你的 IP 。小組內全部節點地址都要統計好,並做到人手一份。

接下來是 Hosts 的配置。打開終端,執行如下指令:

sudo gedit /etc/hosts
# 這裏沒有使用 vi,因爲大多數人不熟悉 vi 的操作,在這裏使用 gedit 代替
# 如果是雲服務器或者特殊情況,沒有圖形界面,請把此處的 gedit 替換成 nano 或者 vi

# 在 hosts 中,localhost 的下面,添加你們小組全部人的 IP,格式是:IP 空格 主機名
# 舉個例子,如果:
# 主節點(Master)IP 是 192.168.43.1
# 從節點(Slave1)IP 是 192.168.43.2
# 從節點(Slave1)IP 是 192.168.43.3
# (請事先決定好,讓一個可靠的人作爲主節點,其他主機都是從節點)

# 格式是:IP 空格 主機名
# 那麼 hosts 就添加如下內容:
192.168.43.1	Master
192.168.43.2	Slave1
192.168.43.3	Slave2
# 此處務必小組全部成員跟着一起改
# 主節點起名叫 Master
# 從節點分別起名爲 Slave1,Slave2...
# 格式是:IP 空格 主機名
# 小組成員 Hosts 保持一致

# 如果是雲服務器配置,此處本機要用內網地址,其他的地址用外網

#之後保存退出。

因爲 IP 地址隨時間推移可能會變,所以務必記住如何修改 Hosts,如果出現“我昨天成功了,什麼也沒動今天怎麼就失敗了??”的情況,如果網絡連接沒有問題就基本是 Hosts 的問題。

3. 下載 Hadoop + Hbase

爲了減少出錯率,採用完全重裝的方式,意味着以前的版本需要刪除。(如果在之前的學習過程中注意了各個機器上hadoop和hbase的版本都保持一致,那麼則不需要重新安裝,只需更改配置文件即可,參考第5小節 核心配置)

# 查看當前是否有相關進程啓動
jsp
# 如果有除了 jps 之外的其他進程在,可能是當前還在運行相關程序,請使用
/usr/local/hadoop/sbin/stop-all.sh
/usr/local/hbase/bin/stop-hbase.sh
# 關閉相關程序,再嘗試刪除,如果關不掉,請先使用
jps
# 列出當前運行的 Java 進程,然後用 kill + 進程ID 指令強制關閉,比如:
kill 1234

# 刪除已經存在的 Hadoop 和 Hbase
sudo rm -r /usr/local/hadoop
sudo rm -r /usr/local/hbase

所有節點一次執行如下命令

# 移動到個人文件夾(以免因誤操作刪除掉系統文件)
cd ~/
# 下載 Hadoop & Hbase (需要一點時間,請耐心等待)
wget http://apache.claz.org/hadoop/common/hadoop-3.1.0/hadoop-3.1.0.tar.gz
wget https://archive.apache.org/dist/hbase/1.4.4/hbase-1.4.4-bin.tar.gz
# 解 壓
sudo tar -zxf hadoop-3.1.0.tar.gz -C /usr/local/
sudo tar -zxf hbase-1.4.4-bin.tar.gz -C /usr/local/
# 刪除用過的壓縮包
rm hadoop-3.1.0.tar.gz
rm hbase-1.4.4-bin.tar.gz
# 改名 + 授予權限
cd /usr/local/
sudo mv hadoop-3.1.0/ hadoop/
sudo mv hbase-1.4.4-bin/ hbase/
sudo chown -R hadoop hadoop/
sudo chown -R hadoop hbase/ 

# 配置環境變量
sudo gedit ~/.bashrc
# 在除了第一行的任意地方添加如下內容:
export JAVA_HOME="/usr/lib/jvm/java-8-oracle/jre/"
export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/hbase/bin
export HADOOP_HOME="/usr/local/hadoop"
export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"
export HBASE_HOME="/usr/local/hbase"
# 說明:
# 第一行爲 JAVA_HOME 環境變量,本教程採用 oracle-java8,如果你安裝的版本不是 oracle-java,請輸入自己的 Jre 安裝位置(不知道請上網搜索)
# 第二行代表將 Hadoop,Hbase 的腳本放入 Path 變量,這樣可以不用先 cd 到 Hadoop 安裝目錄,即可運行啓動/關閉腳本
# 其他幾行代表配置兩個軟件的安裝位置,這裏先設置好,以防裝好後因爲環境變量問題導致軟件啓動失敗。
# 之後保存,並執行
source ~/.bashrc

4. 配置節點之間免密碼登錄

打開終端

# 依次執行
ssh-keygen -t rsa
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
# 中途遇到問題全部按回車

# 所有節點依次執行:
ssh-copy-id hadoop@對應名字
# @後面是Hosts中寫好的主機名,Master、Slave1、Slave2...(小組成員 Hosts 務必保持一致(雲服務器除外))

在這裏插入圖片描述
其他節點有幾個就輸入幾次,比如一共有三臺電腦,一臺是主節點,兩臺從節點
那麼 主節點 需要輸入兩次(另外兩臺從節點)
每個 從節點 需要輸入兩次(主節點和另一個從節點)

到此,從節點的組員可以休息了(但必須開機並保持聯網),接下來交給主節點操作

5. 核心配置

環境準備好了,該進主題了
開始操作

5.1 配置 Hadoop

  • 編 輯 hadoop-env.sh
  • 修 改 core-site.xml
  • 修 改 hdfs-site.xml
  • 修 改 yarn-site.xml
  • 修 改 mapred-site.xml
  • 創建並修改 workers 文件
# 進入目錄
cd /usr/local/hadoop/etc/hadoop/

# 編 輯 env
gedit hadoop-env.sh
# 在除了第一行的任意行添加
export JAVA_HOME="/usr/lib/jvm/java-8-oracle/jre"
# 如果不是按照該教程的方式配置的 Java 環境,請在此處填寫自己的 JAVA_HOME 環境變量內容
# 備註:查看自己 JAVA_HOME 環境變量內容的語句:
echo $JAVA_HOME # 保存退出

# 修 改 core-site.xml gedit core-site.xml # 內容修改如下:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
<description>指定默認文件系統(從主節點訪問)</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>指定 Hadoop 臨時文件夾</description>
</property>
</configuration> # 保存退出

# 修 改 hdfs-site.xml
gedit hdfs-site.xml
# 內容如下:
<configuration>
	<property>
		<name>dfs.replication</name>
		<value>3</value>
		<description>設置一個文件默認備份幾次(一般爲3,可根據需要調整)</description>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/usr/local/hadoop/tmp/dfs/name/</value>
		<description>設置 NameNode 節點文件存放位置</description>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:/usr/local/hadoop/tmp/dfs/data/</value>
		<description>設置 DataNode 節點文件存放位置</description>
	</property>
</configuration>
# 保存退出

# 修 改 yarn-site.xml
gedit yarn-site.xml
# 內容如下:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master</value>
<description>指定 yarn 管理系統主機</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>設置要管理的輔助服務內容,此處會幫忙管理 MapReduce</description>
</property>
</configuration>
# 保存退出

# 修 改 mapred-site.xml
gedit mapred-site.xml
# 內容如下:
<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
		<description>設置 MapReduce 操作基於的管理框架</description>
	</property>
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>Master:10020</value>
		<description>設置 MapReduce 操作歷史的存放位置</description>
	</property>
	<property>
		<name>mapreduce.jobhistory.webapp.address</name>
		<value>Master:19888</value>
		<description>設置 MapReduce 操作歷史的網頁管理器地址</description>
	</property>
</configuration> 
# 保存退出

# 創建並修改 workers 文件(2.x版本叫做 slaves 文件,內容相同,請作注意)
gedit workers
# 這個文件比較特殊,它裏面記錄的主機名將成爲 DataNode # 比如:
Master Slave1 Slave2
# 根據你的節點數和名稱修改,一定要把組員都放進去,這裏的這些名字同樣是之前在 hosts 裏面寫好的
# 主節點可根據情況不寫進去(如果擔心主節點電腦性能太低影響實驗)
# 保存退出

5.2 配置Hbase

# 進入配置目錄
cd /usr/local/hbase/conf

# 修 改 hbase-env.sh
gedit hbase-env.sh
# 在除了第一行的任意位置添加
export JAVA_HOME="/usr/lib/jvm/java-8-oracle/jre" export HBASE_MANAGES_ZK=true
# 如果不是按照該教程的方式配置的 Java 環境,請在此處填寫自己的 JAVA_HOME 環境變量內容
# 備註:查看自己 JAVA_HOME 環境變量內容的語句:
echo $JAVA_HOME # 保存退出

# 修 改 hbase-site.xml gedit hbase-site.xml # 內容如下:
<configuration>
	<property>
		<name>hbase.rootdir</name>
		<value>hdfs://Master:9000/hbase</value>
		<description>設置 Hbase 文件的存放位置,此處設置在 HDFS 上</description>
	</property>
	<property>
		<name>hbase.cluster.distributed</name>
		<value>true</value>
		<description>設置爲分佈式狀態</description>
	</property>
	<property>
		<name>hbase.zookeeper.quorum</name>
		<value>此處把全部主機都寫進去,比如:Master,Slave1,Slave2</value>
		<description>設置 Hbase Zookeeper 集羣</description>
	</property>
</configuration> # 保存退出

# 修改 regionservers (如果沒有會自動創建)
gedit regionservers
# 內容與 workers 一致即可,比如:
Master Slave1 Slave2
# 保存退出

傳遞配置

# 主節點分別對着各個從節點執行如下兩條語句:
sudo scp /usr/local/hadoop/etc/hadoop/* hadoop@Slave1:/usr/local/hadoop/etc/hadoop/ sudo scp /usr/local/hbase/conf/* hadoop@Slave1:/usr/local/hbase/conf/
# 此處替換成不同從節點的主機名(之前hosts裏寫的)↑↑
# 比如一共有兩臺從節點,此處就用 Slave1 執行這兩條,之後再改成 Slave2 執行
# 如果中途詢問 yes/no ,請輸入 yes 並回車
# 需要輸入對應從節點密碼
# 這一步會將主節點配置文件複製到每個從節點,這樣一來小組全部成員的 Hadoop + Hbase 就自動配置好了

# 如果不是嚴格按照教程,從頭一行一行來的,請務必看下面的內容

# 以下內容,如果是從頭跟着教程做的就不用看:
# 如果小組有人的 Java 版本與其他人不一致,請在他的主機上依次執行下面兩行代碼:
# 請在他的主機上執行
gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh gedit /usr/local/hbase/conf/hbase-env.sh
# 修改這兩個文件中的:
exprot JAVA_HOME="爲他系統的JAVA_HOME環境變量內容"

# 查看 Java 版本(用來查看小組成員的Java版本是否一致)
java -version
# 顯示當前系統 JAVA_HOME 環境變量內容(輸出的內容替換到他的兩個 env.sh 文件中)
echo $JAVA_HOME

做完這一步後,小組全部成員的 Hadoop + Hbase 就自動配置好了

6. 見證奇蹟

# 主節點
start-dfs.sh start-yarn.sh
start-hbase.sh

# 如果沒把 Hadoop,Hbase 配置到環境變量 Path 中(提示:未找到指令),嘗試用如下語句啓動
/usr/local/hadoop/sbin/start-dfs.sh
/usr/local/hadoop/sbin/start-yarn.sh
/usr/local/hbase/bin/start-hbase.sh

瀏覽器訪問
Master:9870
Master:8088
Master:16010
查看情況,如果無法訪問,請參考前提要求中的第三小節內容

  1. 以後如果出現失敗情況,多半是Hosts問題,IP地址可能會隨時間變化,所有節點用 ifconfig 指令獲取 IP,然後只需要修改每個主機的 Hosts 即可
    Hosts 文件可能會因爲機器(或虛擬機)重啓而失效,如有類似操作,請確認 Hosts 內容
  2. 如果只是用本教程安裝某一組件,比如只是用本教程安裝 Hbase,那麼你要確保之前的配置沒有問題, 比如你的 Hadoop 確實支持你的 Hbase,你的 Java 環境變量配置沒有任何問題

至此,配置工作結束,
祝,配置順利。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章