零基礎(chǔ)Spark集群環(huán)境搭建流程

本博客詳細(xì)介紹Standalone模式下的Spark集群的部署。

1.軟件硬件環(huán)境

主機(jī)操作系統(tǒng):三臺為實驗室服務(wù)器(均為Centos 7.3)。

虛擬機(jī)運行環(huán)境:Java 1.8( 1.8.0_144-b01)、Hadoop 2.8.2、Scala 2.11.8、Spark 2.2.0(spark-2.2.0-bin-hadoop2.7)

Note: Starting version 2.0, Spark is built with Scala 2.11 by default. Scala 2.10 users should download the Spark source package and build with Scala 2.10 support.

2.集群網(wǎng)絡(luò)環(huán)境

網(wǎng)絡(luò)基本配置

root 用戶下打開/etc/sysconfig/network 對文件進(jìn)行如下配置

NETWORKING=yes
HOSTNAME=master
image.png

然后是配置生效:

hostname master

在slave1與slave2節(jié)點上的root用戶下重復(fù)相同的操作,分別將主機(jī)名改為slave1、salve2。

如果需要修改hostname,直接使用文本編輯器修改/etc/hostname配置文件(此種方法修改的是靜態(tài)主機(jī)名)。

前者是IP地址,后者是主機(jī)名,分別復(fù)制放在/etc/hosts 文件中,然后三臺虛擬機(jī)可以相互ping 的通。

59.68.29.103 slave1
59.68.29.105 master
59.68.29.108 slave2

注意:請將下面的Static hostnamelocalhost名稱分別改為master、slave1、slave2,不然之后在WebUI上無法顯示節(jié)點信息內(nèi)容。

image.png

本集群共包含三個節(jié)點,所有節(jié)點均是Centos7.3 64位系統(tǒng),防火墻均禁用,每個節(jié)點上創(chuàng)建一個zhoujian用戶,用戶的主目錄是/home/zhoujian ,節(jié)點之間可以免密碼SSH訪問,節(jié)點的IP地址和主機(jī)名如下表:

序號 IP地址 機(jī)器名 類型 用戶名
1 59.68.29.105 master NameNode/Master zhoujian
2 59.68.29.103 slave1 DateNode/Worker zhoujian
3 59.68.29.108 slave2 DateNode/Worker zhoujian

其中NameNode表示Hadoop集群中的主節(jié)點,DateNode表示Hadoop集群中的從節(jié)點,Master表示Spark集群中的主節(jié)點,Worker表示Spark集群中的從節(jié)點。

每個節(jié)點都創(chuàng)建一個zhoujian 的用戶:

image.png

3.軟件的安裝

1.配置服務(wù)器之間SSH無密碼登錄

原理:就是將三臺虛擬機(jī)的id_rsa.pub 公鑰都放在authorized_keys 中,然后將authorized_keys 放到/root/.ssh 目錄下并執(zhí)行chmod 600 authorized_keys授予權(quán)限,即可將三臺虛擬機(jī)互通。

第一步:使用下面命令生成密鑰

ssh-keygen -t rsa

第二步:復(fù)制公鑰文件

cat id_rsa_pub >> authorized_keys

第三步:修改authorized_keys文件的權(quán)限

chomd 600 authorized_keys

第四步:三臺虛擬機(jī)的公鑰都復(fù)制到authorized_keys文件中

scp /root/.ssh/authorized_keys  slave1:/root/.ssh/
scp /root/.ssh/authorized_keys  slave2:/root/.ssh/

分別在slave1、slave2重復(fù)第三步的操作

第五步:驗證免密鑰登錄


image.png

2.安裝JDK

這里就不講了。

3.安裝Hadoop

1.上傳和解壓

安裝路徑為:/usr/local/hadoop/

2.修改hadoop目錄下的一系列配置文件

修改/usr/local/hadoop/hadoop-2.8.2/etc/hadoop中的配置文件,如下圖

image.png

第一步:配置hadoop-env.sh

打開hadoop-env.sh ,配置JDK路徑,在文件靠前的部分找到下面的一行代碼,然后添加實際的Java安裝路徑。

image.png

第二步:配置yarn-env.sh

打開yarn-env.sh,配置JDK的路徑。

在文件靠前的部分找到下面的一行代碼:

image.png

將這行代碼修改為一下形式:

image.png

第三步:配置core-site.xml

分別在master、slave1、slave2上切換至zhoujian 用戶,然后在主目錄下創(chuàng)建目錄hadoopdata

mkdir /home/zhoujian/hadoopdata

用以下代碼覆蓋core-site.xml文件中的內(nèi)容

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/zhoujian/hadoopdata</value>>
</property>

第四步:配置hdfs-site.xml

用以下代碼替換hdfs-site.xml中的內(nèi)容

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

第五步:配置yarn-site.xml

用以下代碼覆蓋yarn-site.xml中的內(nèi)容

<property>
    <name>yarn.nodemanager.aux-service</name>
    <value>mapreudce_shuffle</value>
</property>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>master:18040</value>
</property>
<property>
    <name>yarn.resourcemanager.shceduler.address</name>
    <value>master:18030</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.resourcemanager.webapp.address</name>
    <value>master:18088</value>
</property>

第六步:配置 mapred-site.xml

復(fù)制/usr/local/hadoop/hadoop-2.8.2/etc/hadoop 目錄下的mapred-site.xml.template 文件,另存為該目錄下的mapred-site.xml

cp /usr/local/hadoop/hadoop-2.8.2/etc/hadoop/mapred-site.xml.template  /usr/local/hadoop/hadoop-2.8.2/etc/hadoop/mapred-site.xml

用下面的代碼覆蓋mapred-site.xml中的內(nèi)容

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

第七步:配置slaves文件

用以下的代碼替換slaves中的內(nèi)容

slave1
slave2

需要注意:此處既可以給出兩個節(jié)點的IP地址,也可以給出機(jī)器名,但是要求每一個IP地址或機(jī)器獨占一行。

3.配置從節(jié)點

將master節(jié)點的安裝目錄/usr/local/hadoop/hadoop-2.8.2hadoop-2.8.2 文件夾分別復(fù)制至每個節(jié)點的/usr/local/hadoop 目錄下。

#遠(yuǎn)程拷貝:將hadoop-2.8.2目錄文件復(fù)制到slave1的hadoop文件夾下
scp -r /usr/local/hadoop/hadoop-2.8.2/ slave1:/usr/local/hadoop/ 
scp -r /usr/local/hadoop/hadoop-2.8.2 slave2:/usr/local/hadoop/
image.png
4.配置系統(tǒng)文件

分別在master、slave1、slave2上以zhoujian用戶執(zhí)行以下步驟。

第一步:配置系統(tǒng)文件(centos 7 是修改/etc/profile 文件)

vim  /etc/profile

第二步:在打開的.bash_profile文件中配置以下環(huán)境變量

export HADOOP_HOME=/usr/local/hadoop/hadoop-2.8.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

第三步:使其配置生效

source /etc/profile
5.啟動Hadoop集群

第一步:格式化文件系統(tǒng)

在master節(jié)點上執(zhí)行下面的格式化命令

hdfs namenode -format
image.png

格式化成功之后,可以看到/home/zhoujian/hadoopdata/dfs/name/current 目錄中有一系列的文件:

image.png

第二步:啟動Hadoop

進(jìn)入hadoop-2.8.2文件夾

cd /usr/local/hadoop/hadoop-2.8.2

執(zhí)行啟動命令

sbin/start-all.sh
image.png

第三步:驗證

master的終端執(zhí)行jps指令后出現(xiàn)4個進(jìn)程,在slave1、slave2的終端執(zhí)行jps指令后會出現(xiàn)3個進(jìn)程。

master節(jié)點:

image.png

slave1節(jié)點:

image.png

slave2節(jié)點:

image.png

備注:NameNode的端口號是50070,resourcemanager端口號是18088

4.安裝Scala

第一步:上傳至/usr/local/scala并解壓scala-2.11.8.tgz

tar -zvxf scala-2.11.8.tgz

第二步:配置環(huán)境變量

vim  /etc/profile

/etc/profile 文件中添加以下環(huán)境變量

export SCALA_HOME=/usr/local/scala/scala-2.11.8
export PATH=$PATH:$SCALA_HOME/bin

第三步:使環(huán)境變量生效

source /etc/profile

第四步:將scala-2.11.8發(fā)送至slave1、slave2

scp -r /usr/local/scala/scala-2.11.8  slave1:/usr/local/scala
scp -r /usr/local/scala/scala-2.11.8  slave2:/usr/local/scala

分別在slave1、salve2上重復(fù)第2步

第五步:驗證

分別在master、salve1、salve2中執(zhí)行scala -version ,如果安裝成功則顯示下面的

image.png

5.安裝Spark

1.下載并解壓spark安裝包

在master節(jié)點上傳壓縮包并解壓,上傳位置為/usr/local/spark

tar -zvxf spark-2.2.0-bin-hadoop2.7.tgz
2.配置Spark-env.sh

第一步: /usr/local/spark/spark-2.2.0-bin-hadoop2.7/conf目錄下文件如下所示:

image.png

復(fù)制其中的spark-env.sh.template 并另存為該目錄下的spark-env.sh

cp spark-env.sh.template   spark-env.sh

第二步:打開spark-env.sh ,將一下代碼添加至spark-env.sh

#用戶根據(jù)實際安裝情況進(jìn)行配置
export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-2.8.2/
export JAVA_HOME=/usr/local/java/jdk1.8.0_144/
export SCALA_HOME=/usr/local/scala/scala-2.11.8
#綁定一個外部IP給master,master節(jié)點所在的機(jī)器的ip
export SPARK_MASTER_IP=59.68.29.105
#master啟動的端口號
export SPARK_MASTER_PORT=7077
#master的webUI端口號
export SPARK_MASTER_WEBUI_PORT=8080
#worker的啟動端口號
export SPARK_WORKER_PORT=7078
#worker的webUI端口號
export SPARK_WORKER_WEBUI_PORT=8081
#作業(yè)可用的CPU內(nèi)核數(shù)量(默認(rèn):所有可用)
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1
#作業(yè)可使用的內(nèi)存容量
export SPARK_WORKER_MEMORY=2g
3.配置spark-defaults.conf.template

第一步:進(jìn)入/usr/local/spark/spark-2.2.0-bin-hadoop2.7/conf ,復(fù)制spark-defaults.conf.template 并另存為該目錄下的spark-defaults.conf

cp spark-defaults.conf.template   spark-defaults.conf

第二步:打開spark-defaults.conf,并添加以下代碼

#該參數(shù)需要根據(jù)用戶master節(jié)點的實際ip地址進(jìn)行配置
spark.master=spark://59.68.29.105:7077
4.配置slaves

第一步:進(jìn)入/usr/local/spark/spark-2.2.0-bin-hadoop2.7/conf ,復(fù)制slaves.template 并另存為該目錄下的slaves

cp slaves.template slaves

第二步:在salves中添加子節(jié)點機(jī)器名或IP地址

#需要注意slaves文件時每個機(jī)器名或ip地址獨占一行
59.68.29.103
59.68.29.108
5.配置環(huán)境變量

第一步:配置環(huán)境變量

vim  /etc/profile

/etc/profile 文件中添加以下環(huán)境變量

export SPARK_HOME=/usr/local/spark/spark-2.2.0-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin

第二步:使環(huán)境變量生效

source /etc/profile

第三步:將scala-2.11.8發(fā)送至slave1、slave2

scp -r /usr/local/spark/spark-2.2.0-bin-hadoop2.7  slave1:/usr/local/spark
scp -r /usr/local/spark/spark-2.2.0-bin-hadoop2.7  slave2:/usr/local/spark

分別在slave1、slave2上重復(fù)第1步

6.啟動Spark

第一步:啟動Hadoop

第二步:進(jìn)入spark-2.2.0-bin-hadoop2.7啟動集群

#開啟
sbin/start-master.sh
sbin/start-slaves.sh
#停止
sbin/stop-master.sh
sbin/stop-slaves.sh

第三步:驗證集群時候搭建成功,分別在master、slave1、slave2上通過jps命令查看進(jìn)程

image.png
image.png
image.png

4.參考資料

Spark大數(shù)據(jù)分析實戰(zhàn)

https://my.oschina.net/xingkongxia/blog/610397

http://www.powerxing.com/install-hadoop-in-centos/

http://www.xuetuwuyou.com/course/149

http://docs.scala-lang.org/?_ga=2.265178895.1288223642.1513144087-1990176989.1511426647

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容