Spark 集羣搭建詳細步驟

1修改主機名和hosts

[root@localhost ~] hostname master

[root@localhost ~] vi /etc/hostname

#將裏面內容改爲: master 

[root@localhost ~] vi /etc/hostname

#將下面內容加入

192.168.8.12 master

#注意:如果要搭建集羣,需要將其它的主機名和IP也加進來,並且在每臺主機上都要加  

2配置祕鑰登錄

A添加用戶

[root@localhost ~] useradd spark

[root@localhost ~]# passwd spark

B配置祕鑰登錄

[root@localhost ~]# vi /etc/ssh/sshd_config

#54,55行的註釋取消,改爲:

RSAAuthentication yes

PubkeyAuthentication yes

[root@master ~]# systemctl restart sshd.service

[root@master ~]# su - spark

[spark@master ~]$ ssh-keygen -t rsa

#一路回車

 

[spark@master ~]$ cd .ssh

[spark@master .ssh]$ cat id_rsa.pub > authorized_keys

如果直接用ssh連接不用輸密碼就能登錄,表示祕鑰配置成功

 

要注意文件的權限:

 

3配置JDKScala,環境變量

A.需要的文件列表如下:

 

下載方法:分別到對應的官網,再到下載鏈接,使用wget下載,具體步驟省略

B.分別解壓每個文件,注意:本人將所有的文件放到spark用戶的主目錄下,即:/home/spark

解壓後的目錄結構如下:

 

建立相應的軟鏈接(也可以不建軟鏈接,只是爲了看着舒服和操作方便)

[spark@master ~]$ ln -s hadoop-2.6.0 hadoop

[spark@master ~]$ ln -s jdk1.7.0_67 jdk

[spark@master ~]$ ln -s scala-2.10.5 scala

[spark@master ~]$ ln -s spark-1.4.0-bin-hadoop2.6 spark

 

C.配置環境變量(root用戶)

[root@master ~]# vi /etc/profile

#在文件最後加入

export JAVA_HOME=/home/spark/jdk

export SCALA_HOME=/home/spark/scala

export HADOOP_HOME=/home/spark/hadoop

export SPARK_HOME=/home/spark/spark

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export PATH=$PATH:$JAVA_HOME/bin:$SCALA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SPARK_HOME/bin

 

注意:上面的路徑需要根據自己的實際路徑做出修改

加載環境變量(spark):

[spark@master ~]$ source /etc/profile

4配置Hadoop

[spark@master ~]$ cd $HADOOP_HOME/etc/hadoop

[spark@master hadoop]$ vi slaves

[spark@master hadoop]$ vi slaves

#slave的主機名加入,每行一個主機名

[spark@master hadoop]$ vi core-site.xml

#將裏面的內容改爲(簡單的配置,具體配置請查閱官方文檔)

<configuration>

  <!-- file system properties -->

    <property>

        <name>fs.default.name</name>

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

        <description>The name of the default file system.  A URI whose scheme and authority determine the FileSystem implementation.  The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri's authority is used to determine the host, port, etc. for a filesystem.

        </description>

    </property>

    <property>

        <name>fs.trash.interval</name>

        <value>360</value>

        <description>Number of minutes between trash checkpoints.If zero, the trash feature is disabled.

        </description>

    </property>

 

    <property>

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

        <value>/home/spark/hadoop/tmp/${user.name}</value>

        <description>A base for other temporary directories.</description>

    </property>

</configuration>

[spark@master hadoop]$ vi hdfs-site.xml

#改爲

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

        <description>Default block replication.The actual number of replications can be specified when the file iscreated.The default is used if replication is not specified in create time.

        </description>

    </property>

 

    <property>

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

        <value>/home/spark/hadoop/hdfs/name</value>

    </property>

 

    <property>

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

        <value>/home/spark/hadoop/hdfs/data</value>

    </property>

   <property>

        <name>dfs.permissions</name>

        <value>false</value>

   </property>

</configuration>

[spark@master hadoop]$ vi yarn-site.xml

#改爲

<configuration>

    <property>

        <name>yarn.resourcemanager.hostname</name>

        <value>master</value>

    </property>

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

</configuration>

創建對應的目錄:

[spark@master hadoop]$ mkdir -p /home/spark/hadoop/hdfs/{data,name}

[spark@master hadoop]$ mkdir /home/spark/hadoop/tmp

 

初始化Namenode

[spark@master hadoop]$ hadoop namenode -format


如圖中的status0,說明初始化成功,若爲1,則失敗,需要檢查日誌,找到錯誤原因。

啓動Hadoop集羣:

[spark@master hadoop]$  $HADOOP_HOME/sbin/start-all.sh

若報如下錯誤:

 

則需要如下操作:

[spark@master hadoop]$ vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh

#將 export JAVA_HOME=${JAVA_HOME} 

#改爲 export JAVA_HOME=/home/spark/jdk   (jdk的具體路徑)

再次啓動集羣:

[spark@master hadoop]$  $HADOOP_HOME/sbin/start-all.sh

得到:

 

使用jps -l查看是否有如上圖所示相應的進程。

至此,Hadoop集羣已經好了。

5配置Spark

[spark@master hadoop]$ cd $SPARK_HOME/conf

[spark@master conf]$ vi slaves

#Worker主機名加入

master

[spark@master conf]$ cp spark-env.sh.template spark-env.sh

#spark-env.sh Spark進程啓動時需要加載的配置

#改模板配置中有選項的具體說明

#此處本人稍微加入了一些配置:

export JAVA_HOME=/home/spark/jdk

export HADOOP_HOME=/home/spark/hadoop

export SPARK_MASTER_IP=master

export SPARK_MASTER_PORT=7077

export SPARK_WORKER_MERMORY=2G

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export SPARK_DAEMON_JAVA_OPTS="-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/home/spark/spark/logs -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:+DisableExplicitGC -Xms1024m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=256m"

export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=7777 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://master:9000/sparkHistoryLogs -Dspark.yarn.historyServer.address=master:7788 -Dspark.history.fs.updateInterval=10"

 

創建相應目錄:

[spark@master conf]$ mkdir /home/spark/spark/{logs,worker}

[spark@master conf]$ hadoop fs -mkdir hdfs://master:9000/sparkHistoryLogs

 

配置spark-defaults.conf,該文件爲spark提交任務時默認讀取的配置文件

[spark@master conf]$ cp spark-defaults.conf.template spark-defaults.conf

[spark@master conf]$ vi spark-defaults.conf

 

spark.master                     spark://master:7077

spark.eventLog.enabled           true

spark.eventLog.dir               hdfs://master:9000/sparkHistoryLogs

spark.eventLog.compress          true

spark.history.updateInterval     5

spark.history.ui.port            7777

spark.history.fs.logDirectory    hdfs://master:9000/sparkHistoryLogs

啓動Spark進程:

[spark@master conf]$ $SPARK_HOME/sbin/start-all.sh

 

啓動Spark歷史任務記錄:

[spark@master conf]$ $SPARK_HOME/sbin/start-history-server.sh

 

SparkHadoop相關的所有進程如下圖:

 

至此Spark集羣也已經運行起來了。

Spark-shell測試Spark集羣:

[spark@master conf]$ $SPARK_HOME/bin/spark-shell --master spark://master:7077

 

 

 

scala> val data=Array(1,2,3,4,5,6,7,8,9,10)

data: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

 

scala> val pdata = sc.parallelize(data)

pdata: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:23

 

scala> pdata.reduce(_+_)

 

上圖展示了運行過程的一些信息,能正確得到結果,說明Spark集羣已經OK了。

 

一些web瀏覽界面:

集羣節點信息:http://master:8080

 

歷史任務:http://master:7777

 

 

在Spark-Shell中運行測試後,就能看到歷史任務了:

 


Hadoop 集羣信息: http://192.168.8.12:50070/

 

 



 

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