1. 程式人生 > >spark-2.2.0 叢集安裝部署以及hadoop叢集部署

spark-2.2.0 叢集安裝部署以及hadoop叢集部署

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 slave2

Hadoop叢集搭建

解壓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 無法Running
 
 
 

4.安裝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程序