Hadoop學習:環境搭建
環境要求
此次流程記錄是Ubuntu Server 20.04系統下Hadoop叢集的搭建。Linux和Windows所需軟體包括:(1)Java 1.5.x及以上,必須安裝,建議選擇Java 8版本。(2)ssh 必須安裝並且保證 sshd一直執行,以便用Hadoop 指令碼管理遠端Hadoop守護程序。
軟體下載
Mobaxterm:一款多功能的遠端連線工具,支援多種協議,自帶SFTP功能,下載連結;
Java:Java 8是目前使用最為廣泛的版本(可能是因為Java版本迭代所帶來的學習成本問題),自此安裝也是選擇Java 8為執行環境,方便維護,下載連結;
SSH:叢集的工作環境需要遠端連線進行管理,通過對master和slaves安裝SSH服務,方便管理。Ubuntu安裝SSH服務命令apt-get install openssh-server。
Hadoop:此次安裝的重頭戲,前往Apache官方網站下載即可,https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.3.2/hadoop-3.3.2.tar.gz
軟體的安裝和配置
Mobaxterm的安裝
Mobaxterm下載後,雙擊安裝包進行安裝,經典的“下一步”,並進行安裝位置的選擇,完成安裝。
SSH的安裝
Ubuntu安裝後預設就具有SSH服務,由於未進行配置,此時還是個單向的服務,“只出不進”——能通過SSH命令遠端連線其他主機,其他主機不能通過SSH訪問本機。安裝OpenSSH,在Terminal中輸入命令:①apt-get update;②apt-get install openssh-server。
配置SSH
新建root使用者,鍵入命令passwd root,並輸入、確定密碼。
首先,編輯系統或者重要服務配置檔案時,做好備份。鍵入命令cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak,再通過Vim進行SSH的配置,vim /etc/ssh/sshd_config,新增一行PermitRootLogin yes,按鍵盤Esc,輸入英文冒號、wq,推出並儲存。再重啟SSH服務:service ssh restart。
遠端連線
在虛擬主機Terminal中輸入ip addr,檢視預設分配的IP地址。
開啟Mobaxterm,進行遠端連線配置,新建遠端連線任務,選擇協議型別,根據上一步獲取的資訊,在Mobaxterm中輸入虛擬主機的相關資訊。
輸入之前配置的root賬戶的密碼,完成遠端連線。
Java的安裝和配置
使用的Mobaxterm的SFTP的功能,支援拖拽上傳,直接將下載的Java 8打包壓縮包拖至資料夾中。由於處在內網環境下,傳輸速率應該會很快。
進入到Java 8所在資料夾,進行解壓,tar -zxvf jdk-8u321-linux-x64.tar.gz。配置環境變數,vim /etc/profile,在末尾新增語句,配置環境變數。
過載環境變數配置檔案source /etc/profile,並檢查Java是否配置完成java -version。
Hadoop的安裝和配置
重複安裝Java時的步驟,拖拽上傳Hadoop壓縮包,並進行解壓,驗證安裝。
Hadoop分散式配置
克隆虛擬主機
將配置好的已有主機(Master)克隆兩臺(Node1、Node2)。
在克隆選項時,需注意選擇“建立完整克隆”,否則後續步驟將失敗。
配置網路和主機名
由於VMware克隆機制,會將源主機的所有資訊原封不動得複製一份,包括軟體和硬體資訊。所以需要對克隆的Nodes的網路進行配置。
- 生成MAC地址。
- 配置IP和閘道器,分別對三個主機進行配置。使用shell命令vim etc/netplan/00-installer-config.yaml對網路進行配置。使用netplan –debug apply使得配置生效。
- 修改主機名,vim /etc/hostname,分別為master、node1、node2。
分散式叢集
經過上述步驟,再通過Mobaxterm連線這三臺主機(master、node1、node2)。
- 防火牆:分別關閉這三臺主機的防火牆,並不允許防火牆自啟。在Ubuntu 20.04版本中,防火牆預設時關閉(inactive)狀態。
- SSH免密:在master主機執行ssh-keygen -t rsa生成金鑰檔案,生成過程一路回車即可,並使用ssh-copy-id -I node1、ssh-copy-id -i node2命令,該命令的作用其實就是將金鑰複製到node1和node2的/root/.ssh/authorized_keys檔案中,方法不限,也可手動將金鑰複製到兩個節點的/root/.ssh/authorized_keys檔案中去,能達到同樣的效果。實現master能夠免密登入到node1和node2。為後續的工作打好基礎。
- IP對映:修改master主機IP hosts對映,vim /etc/hosts。在node1、node2中做出相同的配置,或者使用命令scp /etc/hosts node
:/etc/hosts。
- Hadoop配置檔案:修改master主機的Hadoop配置檔案workers(/path/to/hadoop/etc/hadoop/workers),向其中新增主機名node1、node2或者二者對應的IP。修改hadoop-env.sh(/path/to/hadoop/etc/hadoop/hadoop-env.sh),新增Java安裝的根目錄。
修改core-site.xml檔案,hdfs監聽埠、Hadoop臨時資料夾內容因人而異。
修改hdfs-site.xml配置檔案。
修改yarn-site.xml配置檔案。
修改mapred-site.xml配置檔案。
- 拷貝master主機已經配置完畢的hadoop到node1和node2中,scp -rf /usr/local/hadoop/hadoop-3.3.2 node
:/usr/local/hadoop/此時應該是覆蓋了。 - 啟動Hadoop:輸入/usr/local/hadoop/hadoop-3.3.2/bin/hdfs namenode -format命令生成初始化檔案。執行啟動鍵本:/usr/local/hadoop/hadoop-3.3.2/sbin/start-all.sh。
- 大功告成!。