hadoop+spark集群搭建


hadoop+spark集群搭建

 

本次實驗環境:兩台hadoop+兩台spark組成集群

 

環境准備:

        1. 兩個主機實現ssh無密鑰認證,包括本機與本機的免密鑰認證:

                ssh-keygren :生成一對密鑰

                ssh-copy-id : 把公鑰發給對方服務器

         2. 集群間需實現時間同步:

                 ntpdate

         3. 配置主機名:              

                 192.168.133.128 master
                 192.168.133.129 node

         4. 下載hadoop-spark壓縮包,解壓,盡量兩台服務器的hadoop-spark安裝路徑是一致的

   

         5. 配置安裝JAVA環境並配置JAVA和hadoop環境變量:

export JAVA_HOME=/usr/java/jdk1.8.0_51/

export HADOOP_HOME=/opt/hadoop-spark/hadoop/hadoop-2.9.1

PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

安裝hdoop集群:

 

    在master主機上配置:

        cd $HADOOP_HOME/etc/hadoop/

        vi core-site.xml

<configuration>

<!--配置HDFS的NameNode-->

            <property>

              <name>fs.defaultFS</name>

              <value>hdfs://master:9000</value>

            </property>

 

            <!--配置DataNode保存數據的位置-->

            <property>

              <name>hadoop.tmp.dir</name>

              <value>/opt/hadoop-spark/hadoop/hadoop-2.9.1/tmp</value>

            </property>

</configuration>

       

         vi hdfs-site.xml

<configuration>

<!--配置HDFS的冗余度-->

    <property>

        <name>dfs.replication</name>

    <value>1</value>

    </property>

<!--配置是否檢查權限-->

    <property>

    <name>dfs.permissions</name>

    <value>false</value>

    </property>

<!--配置namenode存儲路徑-->

    <property>

    <name>dfs.namenode.name.dir</name>

    <value>file:///data/cluster_hadoop/hdfs/nn</value>

    </property>

<!--配置datanode存儲路徑-->

    <property>

    <name>dfs.datanode.data.dir</name>

    <value>file:///data/cluster_hadoop/hdfs/dn</value>

    </property>

<!--配置second namenode的映像存儲路徑-->

    <property>

    <name>fs.checkpoint.dir</name>

    <value>file:///data/cluster_hadoop/hdfs/snn</value>

    </property>

<!--配置second namenode合並元數據時的臨時編輯存儲路徑-->

    <property>

    <name>fs.checkpoint.edits.dir</name>

    <value>file:///data/cluster_hadoop/hdfs/snn</value>

    </property>

 

</configuration>

如果namenode,second namenode, datanode沒有設置存儲路徑,則默認存儲到$(hadoop.tmp.dir)路徑下

   

          vi yarn-site.xml:

<configuration>

<!--配置resourcemanager監聽地址及端口-->

    <property>

        <name>yarn.resourcemanager.address</name>

        <value>master:8032</value>

    </property>

<!--配置resourcemanager的調度器監聽地址及端口,默認0.0.0.0:8030-->

    <property>

        <name>yarn.resourcemanager.scheduler.address</name>

        <value>master:8030</value>

    </property>

    <property>

<!--NodeManager通過該地址向RM匯報心跳,領取任務等,默認0.0.0.0:8031-->

        <name>yarn.resourcemanager.resource-tracker.address</name>

        <value>master:8031</value>

    </property>

<!--管理員的訪問ResourceManager的地址端口,默認0.0.0.0:8033-->

    <property>

        <name>yarn.resourcemanager.admin.address</name>

        <value>master:8033</value>

    </property>

<!--配置resourcemanagerweb接口地址及端口,默認0.0.0.0:8088-->

    <property>

        <name>yarn.resourcemanager.webapp.address</name>

        <value>master:8088</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>

    <property>

        <name>yarn.resourcemanager.scheduler.class</name>

        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>

    </property>

</configuration>

           注意:yarn-site.xml里面的配置指明的是master的地址,沒有解析域名的可以用IP

 

vi mapred-site.xml

<configuration>

<!--配置MR運行的框架-->

        <property>

                <name>mapreduce.framework.name</name>

                <value>yarn</value>

        </property>

</configuration>

此文件默認沒有,但是在該目錄下有個模板文件為mapred-site.xml.template,可以復制一份為mapred-site.xml

     

      vi slaves

master

node

        此配置文件用來指明數據節點的,本次使用master服務器既是master節點也是node節點

 

        新建hadoop存儲路徑:

        mkdir -p /data/cluster_hadoop/hdfs/nn

        mkdir -p /data/cluster_hadoop/hdfs/snn

        mkdir -p /data/cluster_hadoop/hdfs/dn

 

    配置slave節點:

        slave節點的配置與master節點的配置相同,只是啟動的服務不同,把以上編輯的文件拷貝到slave節點相同的位置就可以了

        配置存儲路徑:

        mkdir -p /data/cluster_hadoop/hdfs/nn

        mkdir -p /data/cluster_hadoop/hdfs/snn

        mkdir -p /data/cluster_hadoop/hdfs/dn

 

格式化hdfs:

        hdfs namenode -format

         其輸出結果會有大量的信息,如顯示類似'INFO commmon.Storage:Storage dirctory /PATH/TO/NN has been successfully formatted'的結果表示格式化操作已經完成

啟動Hadoop進程:

        (1)分別啟動,分別手動啟動master的服務以及slave服務;

          主要用到兩個腳本:hadoop-daemon.sh和yarn-daemons.sh。

        (2)master自動啟動自身的服務以及slave的服務(需要配置master與slave能進行免密鑰認證)

         這里用第二種方法:

          ./sbin/start-dfs.sh

          ./sbin/start-yarn.sh

master會啟動進程:

[root@accur sbin]# jps

23137 ResourceManager

17224 DataNode

23753 NodeManager

20942 NameNode

17518 SecondaryNameNode

slave會啟動進程:

[root@accur sbin]# jps

7089 DataNode

9999 NodeManager

hadoop相關web接口:

http://master:50070/

http://master:8088/  #8088端口沖突了會自動+1,或者編輯start-master.sh修改端口

 

spark集群安裝:

         在兩台機器上spark環境變量:

                 vi conf/spark-env.sh                 

                          export SPARK_DIST_CLASSPATH=$(/opt/hadoop-spark/hadoop/hadoop-2.9.1/bin/hadoop classpath)
                          export JAVA_HOME=/usr/java/jdk1.8.0_51/
                          export SPARK_MASTER_HOST=master
                          export SPARK_MASTER_IP=master
                          export SPARK_MASTER_PORT=7077
                          export MASTER=spark://master:7077

          

       配置worker節點:

              vi conf/slaves:

                       master  #此時master也作為slaves節點

                       node

 

       運行master節點:

            ./sbin/start-master.sh

         

       運行worker節點

            ./sbin/start-slave.sh spark://master:7077

 

      測試worker節點能否與master通信:

             /bin/spark-shell --master  spark://master:7077

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM