Hadoop集羣搭建(一)

目錄

一.使用VMvare創建三個虛擬機,我使用的是ubuntu16.04版本的,並關閉全部虛擬機的防火牆

二.安裝jdk(所有虛擬機都要安裝配置)

三.安裝SSH服務

四、建立ssh無密碼登錄本機

六:最後用自帶的樣例測試hadoop集羣能不能正常跑任務

注意:


需要的安裝包:

    1.jdk壓縮包

    2.hadoop壓縮包

請前往百度雲上上下載相關安裝包(密碼:8op1)


開始搭建hadoop集羣

一.使用VMvare創建三個虛擬機,我使用的是ubuntu16.04版本的,並關閉全部虛擬機的防火牆

        1.因爲默認的虛擬機主機名都是ubuntu,所以爲了便於虛擬機的識別,創建完成虛擬機後我們對虛擬機名進行修改,我們把用於主節點的虛擬機名稱設爲master(按自己的喜好創建),把用於從節點的虛擬機名稱設爲slave1

         修改主機名的命令:sudo gedit /etc/hostname

        

         把原主機名ubuntu改爲master(在從主機上則改爲slave1)

     2.爲了虛擬機之間能ping通,需要修改虛擬機的ip地址(這裏以在master機器操作爲例子,從節點的虛擬機也要進行一致的操作)

    命令:sudo gedit /etc/hosts

         

      把/etc/hosts中yangcx-virtual-machine修改爲剛剛改過的主機名master,同時將前面的ip地址改爲實際的ip地址

     怎麼知道自己虛擬機的ip地址?

     命令:ifconfig -a

    

    

    上圖紅框標記的就是虛擬機的真實ip地址,因此我們把/etc/hosts中的內容修改爲:

    

    slave1的ip地址就是從虛擬機slave1的真實ip地址。同樣,我們在slave1虛擬機上也要進行這一步操作。

        3.關閉虛擬機的防火牆

            一般來說,ubuntu默認都是安裝防火牆軟件ufw的,使用命令 sudo ufw version,如果出現ufw的版本信息,則說明已有ufw

            使用命令 sudo ufw status查看防火牆開啓狀態:如果是active則說明開啓,如果是inactive則說明關閉

            開啓/關閉防火牆 (默認設置是’disable’)

            sudo ufw enable|disable

            我們使用sudo ufw disble來關閉防火牆,並再次用sudo ufw status  查看防火牆是否關閉

二.安裝jdk(所有虛擬機都要安裝配置)

     將jdk的壓縮文件拖進master和slave1虛擬機中,壓縮(右鍵文件,extract here),或者用命令行

     tar -zxvf  jdk1.8.0_161.tar.gz(使用自己的壓縮文件名)

     配置環境jdk環境:

     命令:sudo gedit /etc/profile
    

將jdk的路徑添加到文件後面(根據自己的文件路徑來,我這裏jdk1.8.0_161文件夾的路徑是/home/hadoop/java)

export JAVA_HOME=/home/hadoop/java/jdk1.8.0_161
export JRE_HOME=/home/hadoop/java/jdk1.8.0_161/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH

保存退出,爲了使配置立即生效,鍵入命令:source /etc/profile,或者重啓虛擬機,命令:shutdown -r now

檢查路徑jdk是否安裝成功,鍵入命令:java -version

如果出現了版本信息,則恭喜配置成功;

三.安裝SSH服務

    1.首先確保虛擬機能連上網

    2.更新源列表:sudo apt-get update

   

    3.安裝ssh:輸入"sudo apt-get install openssh-server"-->回車-->輸入"y"-->回車-->安裝完成。

    4.查看ssh服務是否啓動

打開"終端窗口",輸入"sudo ps -ef |grep ssh"-->回車-->有sshd,說明ssh服務已經啓動,如果沒有啓動,輸入"sudo service ssh start"-->回車-->ssh服務就會啓動。

    

四、建立ssh無密碼登錄本機

 ssh生成密鑰有rsa和dsa兩種生成方式,默認情況下采用rsa方式。

1、創建ssh-key,,這裏我們採用rsa方式

  1. ssh-keygen -t rsa -P ""   //(P是要大寫的,後面跟"")

(注:回車後會在~/.ssh/下生成兩個文件:id_rsa和id_rsa.pub這兩個文件是成對出現的)

2、進入~/.ssh/目錄下,將id_rsa.pub追加到authorized_keys授權文件中,開始是沒有authorized_keys文件的

  1. cd ~/.ssh

    

    2. cat id_rsa.pub >> authorized_keys

   

     完成後就可以無密碼登錄本機了。

3、登錄localhost

   1. ssh localhost

  

    ( 注:當ssh遠程登錄到其它機器後,現在你控制的是遠程的機器,需要執行退出命令才能重新控制本地主機。)

4、執行退出命令

  1. exit

    

     1~4步在master、slave1和slave2三臺虛擬機上都是這樣配。

5.配置master無密碼登陸slave1

    mater主機中輸入命令複製一份公鑰到home中

cp .ssh/id_rsa.pub ~/id_rsa_master.pub

     把master的home目錄下的id_rsa_master.pub拷到slave1的home下(我的做法是先拖到windows桌面上,在拖進slave1虛擬機中)

slave1的home目錄下分別輸入命令

cat id_rsa_master.pub >> ~/.ssh/authorized_keys

至此實現了mater對slave1的無密碼登陸。

以下的步驟只在master上進行

五.安裝hadoop

1.將hadoop壓縮包拖進master虛擬機中,解壓(我這裏解壓的路徑是/home/hadoop/hadoop-2.7.3)

2.在hadoop-2.7.3文件夾裏面先創建4個文件夾:

  •     hadoop-2.7.3/hdfs
  •     hadoop-2.7.3/hdfs/tmp
  •     hadoop-2.7.3/hdfs/name
  •     hadoop-2.7.3/hdfs/data

3.配置 hadoop的配置文件

先進入配置文件的路徑:cd /home/hadoop/hadoop-2.7.3/etc/hadoop(再次強調,使用自己的路徑)

 

 查看該路徑下的文件列表

 

  被紅框框住的文件是我們要進程配置的文件

      1.首先配置core-site.xml文件(配置Service的URL地址、Hadoop集羣臨時目錄)

sudo gedit core-site.xml

      在<configuration></configuration>中加入以下代碼:

<property>
   <name>hadoop.tmp.dir</name>
   <value>file:/home/hadoop/hadoop-2.7.3/hdfs/tmp</value>
   <description>A base for other temporary directories.</description>
 </property>
 <property>
  <name>io.file.buffer.size</name>
   <value>131072</value>
 </property>
 <property>
   <name>fs.defaultFS</name>
   <value>hdfs://master:9000</value>
 </property>

   注意:第一個屬性中的value和我們之前創建的/hadoop-2.7.3/hdfs/tmp路徑要一致。

   2.配置 hadoop-env.sh文件

sudo gedit hadoop-env.sh

     將JAVA_HOME文件配置爲本機JAVA_HOME路徑

  

   3.配置 yarn-env.sh

sudo gedit yarn-env.sh

    將其中的JAVA_HOME修改爲本機JAVA_HOME路徑(先把這一行的#去掉)

  4.配置hdfs-site.xml(配置Hadoop集羣的HDFS別名、通信地址、端口等)

sudo gedit hdfs-site.xml

  在<configuration></configuration>中加入以下代碼

<!-- 指定DataNode冗餘份數 -->
<property>
 <name>dfs.replication</name>
   <value>1</value>
 </property>
 <property>
   <name>dfs.namenode.name.dir</name>
   <value>file:/home/hadoop/hadoop-2.7.3/hdfs/name</value>
   <final>true</final>
</property>
 <property>
   <name>dfs.datanode.data.dir</name>
   <value>file:/home/hadoop/hadoop-2.7.3/hdfs/data</value>
   <final>true</final>
 </property>
 <property>
  <name>dfs.namenode.secondary.http-address</name>
   <value>master:9001</value>
 </property>
 <property>
   <name>dfs.webhdfs.enabled</name>
   <value>true</value>
 </property>
 <property>
   <name>dfs.permissions</name>
   <value>false</value>
 </property>

  注意(其中第二個dfs.namenode.name.dir和dfs.datanode.data.dir的value和之前創建的/hdfs/name和/hdfs/data路徑一致)

5 .複製mapred-site.xml.template文件,並命名爲mapred-site.xml

cp mapred-site.xml.template mapred-site.xml

 

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

6.配置yarn-site.xml

sudo gedit yarn-site.xml
<property>
 <name>yarn.resourcemanager.address</name>
   <value>master:18040</value>
 </property>
 <property>
   <name>yarn.resourcemanager.scheduler.address</name>
   <value>master:18030</value>
 </property>
 <property>
   <name>yarn.resourcemanager.webapp.address</name>
   <value>master:18088</value>
 </property>
 <property>
   <name>yarn.resourcemanager.resource-tracker.address</name>
   <value>master:18025</value>
 </property>
 <property>
   <name>yarn.resourcemanager.admin.address</name>
   <value>master:18141</value>
 </property>
 <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
 </property>
 <property>
     <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
     <value>org.apache.hadoop.mapred.ShuffleHandler</value>
 </property>

7.配置slaves 文件

sudo gedit slaves

     把原本的localhost刪掉,改爲slave1

8.配置hadoop的環境,就像配置jdk一樣

sudo gedit /etc/profile

 根據hadoop文件夾的路徑配置,以我的路徑/home/hadoop/hadoop-2.7.3 爲例

export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
export PATH="$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH"
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

鍵入命令 source /etc/profile 使配置立即生效

9.接下來,將hadoop傳到slave1、slave2虛擬機上面去

scp -r hadoop-2.7.1 hadoop@slave1:~/

注意:hadoop是虛擬機的用戶名,創建slave1時設定的

傳過去後,在slave1上面同樣對hadoop進行路徑配置,和第8步一樣

9.初始化hadoop

hdfs namenode -format

10.開啓hadoop

  兩種方法:(在mater主機執行)

  • start-all.sh
  • 先start-dfs.sh,再start-yarn.sh

如果在mater上面鍵入jps後看到

在slave1上鍵入jps後看到

在slave2上鍵入jps後看到

六:最後用自帶的樣例測試hadoop集羣能不能正常跑任務

使用命令

hadoop   jar   /home/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar  pi 10 10

用來求圓周率,pi是類名,第一個10表示Map次數,第二個10表示隨機生成點的次數(與計算原理有關)

最後出現結果

則,恭喜你,hadoop集羣搭建完成。

注意:

        1、至少的三個虛擬機,zk的搭建最少的三臺主機。

        2、HDFS格式化錯誤 SHUTDOWN_MSG: Shutting down NameNode at java.net.UnknownHostException(解決

    

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