spark-2.2.0 叢集安裝部署以及hadoop叢集部署
阿新 • • 發佈:2018-11-15
Spark在生產環境中,主要部署在安裝Linux系統的叢集中。在linux系統中安裝Spark需要預先安裝JDK、Scala等所需要的依賴。
由於Spark是計算框架,所以需要預先在叢集內有搭建好儲存資料的持久化層,如HDFS、Hive、Cassandra等,最後可以通過啟動指令碼執行應用。
1.安裝JDK
Oracle JDK下載地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html 配置環境變數新增以下內容vim ~/.bash_profile
JAVA_HOME=/opt/jdk1.8.0_65
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
執行
source ~/.bash_profile使環境變數生效
2.安裝scale
下載Scala地址:http://www.scala-lang.org/download/
配置環境變數,新增以下內容
export SCALA_HOME=/data/spark/scala-2.12.3/
export PATH=$PATH:$SCALA_HOME/bin
執行
source ~/.bash_profile執行 scala -version ,正常輸出說明成功。
3.安裝hadoop
伺服器主機名 | IP地址 | JDK | 使用者 |
Master | 10.116.33.109 | 1.8.0_65 | root |
slave1 | 10.27.185.72 | 1.8.0_65 | root |
slave2 | 10.25.203.67 | 1.8.0_65 | root |
hadoop的下載地址: http://hadoop.apache.org/
配置hosts檔案(每個節點相同操作) vim /etc/hosts
10.116.33.109 Master
10.27.185.72 Slave
110.25.203.67 Slave2
ssh無密碼驗證配置
參考: Linux SSH 無密碼登入 在master節點上必須驗證是否都可以無密碼登入,否則會報錯。 ssh master ssh slave1 ssh slave2Hadoop叢集搭建
解壓hadoop-2.7.2.tar.gz檔案後配置環境變數 vim ~/.bash_profile export HADOOP_HOME=/data/spark/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_ROOT_LOGGER=INFO,console
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
執行
source ~/.bash_profile使環境變數生效
此環境變數在個節點上都相同操作。
修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/opt/jdk1.8.0_65/
即使環境變數中已經配置,此處必須修改,否則會報“JAVA_HOME is not set and could not be found.”。
修改$HADOOP_HOME/etc/hadoop/slaves
Slave1
Slave2
修改$HADOOP_HOME/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/spark/hadoop-2.7.2/tmp</value>
</property>
</configuration>
修改$HADOOP_HOME/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/data/spark/hadoop-2.7.2/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/data/spark/hadoop-2.7.2/hdfs/data</value>
</property>
</configuration>
修改$HADOOP_HOME/etc/hadoop/mapred-site.xml (cp mapred-site.xml.template mapred-site.xml)
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>Master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>Master:19888</value>
</property>
</configuration>
修改$HADOOP_HOME/etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>Master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>Master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>Master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>Master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>Master:8088</value>
</property>
</configuration>
複製Master節點的hadoop資料夾到Slave1和Slave2上。
scp -r hadoop-2.7.2 slave1:/data/spark/
scp -r hadoop-2.7.2 slave2:/data/spark/
在Master節點啟動叢集,啟動之前格式化一下namenode:
hadoop namenode -format
啟動:
$HADOOP_HOME/sbin/start-all.sh
檢查,各節點執行 jps NameNode顯示 DataNode顯示 Hadoop管理介面 http://Master:8088/ 伺服器主機名沒有修改,只是hosts檔案配置節點名稱,導致後續各種任務執行失敗,主要是無法通過主機名獲取伺服器IP地址。 症狀包括: mapreduce ACCEPTED 無法Running4.安裝spark
Spark的下載地址: http://spark.apache.org/ 本例spark版本spark-2.2.0-bin-hadoop2.7.tgz 配置環境變數內容export SPARK_HOME=/data/spark/spark-2.2.0-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin
進入$SPARK_HOME/conf目錄,拷貝 cp spark-env.sh.template spark-env.sh ; cp slaves.template slaves 配置spark-env.sh檔案,新增以下內容
export SCALA_HOME=/data/spark/scala-2.12.3/
export JAVA_HOME=/opt/jdk1.8.0_65
export SPARK_MASTER_IP=10.116.33.109
export SPARK_WORKER_MEMORY=128m
export HADOOP_CONF_DIR=/data/spark/hadoop-2.7.2/etc/hadoop
export SPARK_DIST_CLASSPATH=$(/data/spark/hadoop-2.7.2/bin/hadoop classpath)
export SPARK_LOCAL_IP=10.116.33.109
export SPARK_MASTER_HOST=10.116.33.109
SPARK_MASTER_HOST必須配置,否則Slave節點會報錯“Caused by: java.io.IOException: Failed to connect to localhost/127.0.0.1:7077”
修改$SPARK_HOME/conf/slaves,新增如下內容:
Master
Slave1
Slave2
將配置好的spark檔案複製到Slave1和Slave2節點。
scp $SPARK_HOME [email protected]:$SPARK_HOME
scp $SPARK_HOME [email protected]:$SPARK_HOME
在Master節點啟動叢集
$SPARK_HOME/sbin/start_all.sh
檢視叢集是否啟動成功:
jps Master節點新增Master程序
Slave節點新增Worker程序