Hadoop實分佈部署--使用多臺WIN10中的WSL

系統及環境

網絡環境:處於局域網下的部分機器(>=4)
系統版本:win10較新版本,支持子系統
子系統版本:ubuntu18.04
其他軟件:Xshell6,Xftp6
實驗要求:在多臺機器上安裝hadoop,配置完成後,可以在完成官方demo的wordcount功能,實現其他功能

下載安裝wsl(ubuntu)

  1. 系統要求:win10較新版本
  2. 修改電腦名(用以在ubuntu中分辨是哪臺電腦,這一步推薦在後面其他節點修改配置裏做):右擊此電腦-屬性-更改設置-計算機描述(ustc+序號)-更改-計算機名(ustc+序號)-稍後重啓
  3. 關閉防火牆:控制面板-網絡和Internet-網絡和共享中心-wd防火牆(左下角)-啓用或關閉wd防火牆-稍後重啓
  4. 開啓wsl功能:打開控制面板-程序-啓用或關閉windows功能-勾選適用於Linux的Windows子系統-重啓電腦
  5. 打開Microsoft Store,搜索ubuntu,選擇18.04下載
  6. 先創建ustc用戶,密碼也爲ustc(只是爲了好記)
  7. 創建hadoop用戶
$sudo useradd -m hadoop -s /bin/bash # 創建hadoop用戶,並使用/bin/shell作爲shell
$sudo passwd hadoop #爲hadoop用戶設置密碼
$sudo adduser hadoop sudo #爲hadoop用戶增加管理員權限
$su - hadoop #切換當前用戶爲hadoop
$sudo apt-get update #更新hadoop用戶的apt,方便後面安裝ssh

安裝ssh並設置免密碼登錄

  1. 安裝ssh,生成公鑰和私鑰
$ sudo apt-get install openssh-server	#安裝SSH server
$ cd /home/hadoop # 進入hadoop下
$ ssh-keygen -t rsa #一直回車,會在用戶文件夾下生成.ssh文件夾,文件夾下生成三個文件,不要添加sudo,否在會報錯
$ sudo /etc/init.d/ssh start #啓動ssh服務  
若啓動報錯,則將沒有的文件對應生成一下
	$ sudo ssh-keygen -t rsa -f /etc/xxx
$ ps -e |grep ssh	#查看ssh進程,顯示有ssh服務則爲成功
  1. 生成密鑰和公鑰並將公鑰複製給其他機器
免密登錄過程簡介:本機生成公鑰id_rsa.pub(上一步已經做好),將生成的公鑰上傳到目標機器上的授權文件authorized_keys,本機即可免密登錄目標機

創建授權文件:將id_rsa.pub的內容給authorized_keys,若沒有auth文件則會自動生成一個
$ cd /home/hadoop/.ssh #進入用戶文件夾下面的.ssh文件夾
$ cat id_rsa.pub>>authorized_keys

給.ssh文件夾和authorized_keys授權,權限如下
$cd /home/hadoop/.ssh  #已經在這一步請不用操作
$sudo chmod 600 authorized_keys
$cd ..#回到上一層目錄
$sudo chmod 700 .ssh
$cd ..#回到上一層目錄
$sudo chmod 700 hadoop #將.ssh上級目錄授權爲700

修改配置
$sudo vim /etc/ssh/sshd_config
	Port xxx   (可以修改成其他統一端口號)
	PermitRootLogin yes
	將下面配置更改爲yes
	PasswordAuthentication yes(不修改會報權限問題)
$ sudo /etc/init.d/ssh restart #重啓ssh服務 

將客戶端的公鑰~/.ssh/id_rsa.pub通過ssh-copy-id -i拷貝到服務器(只需要將master節點的公鑰複製給其他datanode節點,其他的可以不用複製)
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] -p xxxx
	user代表Linux用戶,xxx.xxx.xxx.xxx代表遠程主機地址,下面爲例子:
	$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] -p xxxx
需要輸入目標機器用戶的密碼,如hadoop用戶的密碼hadoop

如果公鑰拷貝沒有報錯,使用命令即可免密碼登錄另一臺機器
$ ssh -p 6666 [email protected]	#-p後面代表的是端口號 就是上一步修改的配置裏面的Port


以上免密爲本機登錄其他機器的操作,並不需要每臺機器都需要進行拷貝操作,只需要一臺作爲主機分發到其他機器即可

安裝Java並配置環境變量

  1. 安裝xshell和xftp,安裝直接一路確認即可
  2. 嘗試使用xshell連接自己的機子,以下命令都可以在xshell裏運行,當然原來的界面也是可以的(連接步驟略)
  3. 安裝java,並配置環境
$ sudo mkdir /usr/local/java#在/usr/local下創建java文件夾

將jdk-8xxxx-linux-x64複製到c盤下,右擊屬性給文件授予全部權限,以便方便上傳到wsl裏面
$ cd /mnt/c #進入win的c盤
$ cp jdk-8xxxx-linux-x64.tar.gz /usr/local/java

進入java文件夾,並進行解壓
$cd java/
$tar -zxvf jdk-8xxxx-linux-x64.tar.gz#解壓
java文件下面會出現jdk1.8xxxx文件夾

如果遇到權限問題或者進不去java文件夾,請將/usr/local的文件夾授予權限
	$ sudo chmod 777 /usr/local/java

配置環境變量
$ sudo vim /etc/profile
    export JAVA_HOME=/usr/local/java/jdk1.8xxxx
    export PATH=${PATH}:${JAVA_HOME}/bin
注意:“=”兩邊不要有空格

使環境變量生效
$ source /etc/profile
注意:請不要加sudo,source是bash的內建命令,那樣會報找不到命令的錯誤

驗證java環境是否配置完成
$ java -version

如果正常命令下來還是找不到,請參考:
	告訴Ubuntu  Java JDK的位置
    $ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_231/bin/java" 1
    $ sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_231/bin/javac" 1
    $ sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_231/bin/javaws" 1
    相應的將其設爲默認方式:
    $ sudo update-alternatives --set java  /usr/local/java/jdk1.8.0_231/bin/java
    $ sudo update-alternatives --set javac  /usr/local/java/jdk1.8.0_231/bin/javac
    $ sudo update-alternatives --set javaws /usr/local/java/jdk1.8.0_231/bin/javaws
參考文章:https://blog.csdn.net/weixin_42001089/article/details/81865101

其他節點配置(重要)

將所有的主機的host都配置一下,添加每臺機器的ip和對應名稱,如
$sudo vim /etc/hosts
	192.168.1.100 ustc01
	192.168.1.158 ustc02
	192.168.1.58  ustc03
	192.168.1.75  ustc04
	(重要)將其他ip配置關閉,前面全部添加#,只保留上面四個配置,要不然在之後hadoop的監控頁面看不到datanode節點信息。 

順便在win系統中hosts添加這幾個信息
	192.168.1.100 ustc01
	192.168.1.158 ustc02
	192.168.1.58  ustc03
	192.168.1.75  ustc04
重啓win電腦

如果Java是單獨每個人配置的,以下步驟可以不做
分發hadoop到其他節點
$scp -P 6666 /home/hadoop/hadoop-2.7.7.tar.gz ustc02:/home/hadoop #-P爲大寫,後接端口號。
$scp -P 6666 /home/hadoop/hadoop-2.7.7.tar.gz ustc03:/home/hadoop #-P爲大寫。
$scp -P 6666 /home/hadoop/hadoop-2.7.7.tar.gz ustc04:/home/hadoop #-P爲大寫。	

解壓與配置和前面的java是一樣的,參考前面,寫了的話請忽略

主節點安裝hadoop並分發到其他節點

(本配置只需要主要的namenode進行配置即可,其他datanode之後進行分發即可)

  1. 類似java的上傳,將hadoop壓縮包放到c盤下進行授權,並上傳,本次上傳路徑爲/home/hadoop(命令省略,請參考java配置來)

  2. 配置hadoop的四個xml文件和一個子節點標識文件(所有節點這幾個信息請保持一致)

    1. 修改core-site.xml

      <configuration>
      	<property>
      		<name>fs.default.name</name>
      		<value>hdfs://ustc01:9000</value>
      	</property>		
      </configuration>
      
    2. 修改hdfs-site.xml

      <configuration>
      	<property>
      		<name>dfs.replication</name>
      		<value>3</value>
      		<description>副本個數,配置默認是3,應小於datanode機器數量</description>
      	</property>
      	<property>
      		<name>dfs.namenode.dir</name>
      		<value>file:/home/hadoop/hadoop-2.7.7/tmp/dfs/name</value>
      		<description>datanode上數據塊的物理存儲位置</description>
      	</property>
      	<property>
      		<name>dfs.datanode.dir</name>
      		<value>file:/home/hadoop/hadoop-2.7.7/tmp/dfs/data</value>
      	</property>
      
      	<property>
      		 <name>dfs.name.data.registration.ip-hostname-check</name>
      		 <value>false</value>
      	</property>
      </configuration>
      
    3. 修改mapred-site.xml,本文件沒有,需要運行以下命令

      mv mapred-site.xml.template mapred-site.xml  #重命名
      
      #這裏是配置信息
      <configuration>
      	<property>
      		<name>mapreduce.framework.name</name>
      		<value>yarn</value>
      	 </property>
      	 <property>
      	  	<name>mapred.job.tracker</name>
      		<value>hdfs://ustc01:9001</value>
      	 </property>
      </configuration>
      
    4. 修改yarn-site.xml

      <configuration>
      <!-- Site specific YARN configuration properties -->
      	<property>
      		<name>yarn.nodemanager.aux-services</name>
      		<value>mapreduce_shuffle</value>
      	</property>
      </configuration>
      
    5. 修改slaves文件

      這裏存放datanode節點名,主機節點名稱不要添加,如

      ustc02
      ustc03
      ustc04
      
  3. 分發到其他節點,並配置

將配置好的文件夾,壓縮打包
$ cd /home/hadoop
$ tar -zcf  hadoop-2.7.7.tar.gz	hadoop-2.7.7/

$ scp -P 6666 hadoop-2.7.7.tar.gz ustc02:/home/hadoop #分發hadoop,-P爲大寫。
這裏解壓也是類似java解壓配置配置

配置環境變量
$ sudo vim /etc/profile   #在剛剛配置的java環境下添加配置成如下格式
    export JAVA_HOME=/usr/local/java/jdk1.8.0_231
    export HADOOP_HOME=/home/hadoop/hadoop-2.7.7
    export PATH=${PATH}:${JAVA_HOME}/bin:{HADOOP_HOME}/bin:{HADOOP_HOME}/sbin:
使環境變量生效
$ source /etc/profile
注意:請不要加sudo,source是bash的內建命令,那樣會報找不到命令的錯誤

驗證hadoop環境是否配置完成
$ hadoop
如果沒有報錯就是成功配置了環境

由於之前我們修改了默認的22端口爲6666,這裏修改Hadoop的相關端口號
在hadoop-2.7.7/etc/hadoop目錄修改 hadoop-env.sh 文件添加如下語句。
$sudo vim /home/hadoop/hadoop-2.7.7/etc/hadoop/hadoop-env.sh
	export HADOOP_SSH_OPTS="-p 6666"
	將JAVA_HOME等號後面用/usr/local/java/jdk1.8.0_231替換掉
	JAVA_HOME=/usr/local/java/jdk1.8.0_231
  1. 開啓與關閉以及驗證
$ hadoop namenode -format #格式化主節點,本條命令請不要亂輸入,請部署完所有節點之後進行輸入

#開啓與關閉,只需要在namenode節點上輸入,不要都輸入了
$ start-all.sh #開啓全部服務
$ stop-all.sh #關閉全部服務
$ start-dfs.sh  #開啓hdfs
$ start-dfs.sh #關閉hdfs

驗證是否已經啓動,在每個節點輸入
$ jps
如果在namenode節點上顯示了namenode,在datenode上顯示了datanode就表示啓動正常

打開win系統的瀏覽器,輸入http://ustc01:50070,如果顯示namenode與datanode節點信息正確即成功
這個網址也是心跳監管系統,展示時需要打開
  1. 代碼(@TODO 冉哥豪哥ing)

  2. 文檔(@TODO鋒哥輝哥雷哥林哥ing)

  3. 剩餘部署(@TODO洋哥鋒哥ing)

    ​ 2019-11-20

開機演示需要進行的操作:

  1. 打開wsl

  2. 運行ssh(可以設置自啓動,這裏懶得設置)

    演示時需要每臺機子運行這條命令,開啓ssh命令
    $sudo service ssh --full-restart
    
  3. 一開機,hosts就變回去了,這個還沒解決(待修復)

    $sudo vim /etc/hosts
    	192.168.1.100 ustc01
    	192.168.1.158 ustc02
    	192.168.1.58  ustc03
    	192.168.1.75  ustc04
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章