Linux、ubuntu搭建Hadoop平臺

大概步驟分爲:

  1. 創建幾臺虛擬機(至少3臺,可克隆)。
  2. 配置Java環境。
  3. 配置Hadoop環境。
  4. 配置ssh免密碼登陸。
  5. 查看結果。

別人的都是把配置ssh這個步驟放到前面了,這樣想克隆的話就有點麻煩。所以放後面,很多東西不用配幾次了。

1、創建虛擬機

有幾臺物理機最好,沒有的話就下載虛擬機鏡像吧,用VMware創建一臺虛擬機(配置好環境後再克隆兩臺),不閒麻煩就創建3臺一個個配置。
(1)、打開向導後選擇類型時選擇《典型(推薦)(T)》——>安裝程序光盤映像文件中找到下載得Linux鏡像(Ubuntu或centos)——>起名,這裏需要注意的是用戶名,最好讓所有虛擬機的用戶名一樣,不然後面會有很多麻煩。——>再填寫虛擬機名稱和位置後面都下一步就ok了。
在這裏插入圖片描述
(2)、如果之前用VMware創建過虛擬機,有可能會出現下面的情況。找到虛擬機的目錄和那個文件,用編輯器打開,修改裏面的《vmci0.present = “TRUE”》這個值爲FALSE即可。
在這裏插入圖片描述
在這裏插入圖片描述

2、配置Java環境

(1)、虛擬機打開後先執行sudo apt-get update更新下apt,再執行sudo apt-get install sshd-server安裝ssh,運行ssh localhost生成.ssh文件夾。

(2)、之前寫過一個配置Java環境的,去那看吧!Ubuntu下配置java鏈接:(https://blog.csdn.net/weixin_43352213/article/details/82975835)

3、配置Hadoop環境

(1)下載:去官網下載的Hadoop解壓後目錄裏好像都沒有etc這個配置文件夾,這裏有Hadoop的下載鏈接hadoop下載鏈接
(2)移動到虛擬機:使用《共享文件夾》或者《WinSCP》或者在虛擬機中使用wget https://gitee.com/langzi5213/hadoop.git下載,文件太大,有可能直接在虛擬機上下載不下來,如果選用共享文件夾,就依次打開虛擬機的設置——>選項——>共享文件夾——>選擇右邊的 總是啓用——>選擇需要共享的本機位置——>確定即可。在虛擬機的/mnt/hgfs/Desktop目錄下可看到設置的共享位置。如果不會設置就用winscp吧,這個挺好用的。WinSCP使用教程
在這裏插入圖片描述
(3)解壓:在/mnt/hgfs/Desktop目錄下打開命令窗口,執行sudo mv hadoop.tar.gz /usr/local把文件移動到/usr/local目錄下。把文件弄到虛擬機上(放到/usr/local下即可 )後需要解壓,在/usr/local目錄下執行sudo tar -zxvf hadoop.tar.gz,解壓文件後用ls命令就可看到當前目錄下看到hadoop目錄。
(4)配環境變量:運行gedit ~/.bashrc,打開文件後把下面的環境配置信息複製上去,注意修改自己的路徑,上面是java的,下面的是Hadoop的。運行source ~/.bashrc時配置生效。運行java -version 和 hadoop version可分別看到版本信息。

export JAVA_HOME=/usr/local/java1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

(5)創建運行時的文件夾:可以選擇/home/hadoop目錄下創建,也可以選擇/usr/local/hadoop下的目錄創建,不管在哪創建的在配置文件中配置好就行。需要創建logs、dfs、dfs/name、dfs/data、tmp。這幾個文件夾。
(6)修改Hadoop的配置文件:Hadoop的配置文件在安裝Hadoop目錄下的/etc/hadoop下,完整路徑爲/usr/local/hadoop/etc/hadoop這裏的etc不是根目錄下的etc。沒有etc文件夾的要麼自己配,要麼換成有etc的,官網下的好像沒有。這裏需要配置的有core-site.xml、hadoop-env.sh、hdfs-site.xml、mapred-site.xml.template、mapred-site.xml、slaves、yarn-site.xml。(有些不配置測試也不會出現啥問題,出問題了就得好好看配置了基本就是配置這些文件有問題。)
(6.1)core-site.xml

<property> 
    <name>fs.defaultFS</name> 
    <value>hdfs://master:9000</value> 
 </property> 
<property> 
   <name>hadoop.tmp.dir</name> 
   <value>file:/usr/local/hadoop/tmp</value>
    <description>Abase for other temporary directories.</description> 
</property>

(6.2)hadoop-env.sh:把JAVA_HOME的那個註銷改成下面的明確路徑,不改不知道會不會出問題),下面的額幾個添加到裏面,這個不添加在運行時會出現native的警告

#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/local/jdk1.8

export HADOOP_PREFIX=/usr/local/hadoop
export HADOOP_IDENT_STRING=$USER
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native" 

(6.3)hdfs-site.xml:需要注意file:/usr/local/hadoop/dfs/name和file:/usr/local/hadoop/dfs/data,在哪建的文件夾,就改成哪裏的。

 <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>master:9001</value> 
</property> 
<property> 
  <name>dfs.namenode.name.dir</name> 
  <value>file:/usr/local/hadoop/dfs/name</value> 
</property> 

<property> 
   <name>dfs.datanode.data.dir</name>
    <value>file:/usr/local/hadoop/dfs/data</value> 
 </property> 

<property> 
  <name>dfs.replication</name> 
  <value>3</value> 
</property>

(6.4)mapred-site.xml.template

<property>
   <name>mapred.job.tracker</name>
   <value>localhost:9001</value>
 </property>

(6.5)mapred-site.xml

  <property> 
    <name>mapreduce.framework.name</name> 
    <value>yarn</value>
  </property>

(6.6)slaves這裏的是一個主節點和從節點的主機名,要和後面配置的hostname中的名字一樣。

master
s1
s2

(6.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>

4、配置ssh免密登陸

(1)、克隆虛擬機:在VMware中的我的計算機中選中Hadoop的那個——>右擊,管理–克隆——>虛擬機中的當前狀態——>創建完整克隆(java和Hadoop配置的環境都克隆)——>虛擬機名稱(master-slave1)選擇目錄。這樣創建兩臺,共有3臺虛擬機玩了。
(2)、修改hosts和hostname:先運行ifconfig查看3個虛擬機的ip,運行sudo chmod a+w /etc/hosts 和 sudo chmod a+w /etc/hostname修改權限。運行gedit /etc/hostname修改從機的名字爲s1和s2。
運行 gedit /etc/hosts 添加下面的節點和IP對應關係,注意《127.0.1.1 master》在s1下,master就改爲s1。s2就改爲s2。3臺都添加好後ping s1 、ping s2看看能不能ping通,都互ping一下。修改完後需要重啓再打開命令窗口後才能看到主機名變了,最好重啓下。主機名都一樣ssh後不知道進入誰的虛擬機了。

192.168.52.161   master
192.168.52.163   s1
192.168.52.162   s2

(3)生成密鑰:在master上運行cd ~/.ssh如果沒有.ssh文件夾就運行ssh localhost來生成一個文件夾。運行ssh-keygen -t rsa生成密鑰,會多id_rsa和id_rsa.pub這兩個文件。運行cat ./id_rsa.pub >> ./authorized_keys加入授權,再運行ssh localhost連接本機就不需要密碼了,運行exit退出連接。
(4)發送密鑰:運行scp ~/.ssh/id_rsa.pub hadoop@s2:/home/hadoop/將生成的公鑰id_rsa.pub發送至s1和s2的/home/hadoop目錄下。進入s1和s2運行cat /home/hadoop/id_rsa.pub >> ~/.ssh/authorized_keys,將master的公鑰進行授權,注意目錄。運行後去.ssh目錄下會有authorized_keys。運行ssh s1輸入一次密碼後,以後就不需要再輸入密碼了。

5、查看結果

(1)格式化namenode:hdfs namenode -format
(2)啓動namenode和datanode進程:start-dfs.sh在瀏覽器上輸入localhost:50070或 master:50070或在window上輸入master的ip:50070也可以看到下面的信息。
在這裏插入圖片描述
(3) 啓動Hadoop:start-yarn.sh,在瀏覽器上輸入localhost:8088 和 master:8042可以分別看到下面的信息。
在這裏插入圖片描述
在這裏插入圖片描述
(4)可以用start-all.sh把這兩個都啓動。在master和s1上運行jps可分別看到下面的信息。DataNode和NodeManager都不能少。沒有DataNode就刪除dfs文件夾後再建。只運行start-all.sh也有可能讓DataNode不出現。
在這裏插入圖片描述在這裏插入圖片描述

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