Spark On YARN 分布式集群安裝


一、導讀

最近開始學習大數據分析,說到大數據分析,就必須提到Hadoop與Spark。要研究大數據分析,就必須安裝這兩個軟件,特此記錄一下安裝過程。Hadoop使用V2版本,Hadoop有單機、偽分布式、分布式三種部署方案,這里使用分布式部署方案。而Spark有三種部署方案:Standalone, Mesos, YARN,而本文采用在YARN上的分布式集群部署方案。

具體軟件環境:

Ubuntu 14.04.3 LTS (GNU/Linux 3.16.0-67-generic x86_64)
jdk: 1.7.0_95
scala: 2.10.6
Hadoop: 2.6.0
Spark: 1.6.1

集群環境:(3台主機)

master     #主節點
slave1     #從節點1
salve2     #從節點2

二、准備工作

重命名主機

准備好三台Linux系統的主機后,將三台主機進行重命名,采用下面的命令

sudo vim /etc/hostname

將1台主機名稱改為master,另外兩台主機改為slave1與slave2。

配置hosts文件

在每台主機上修改hosts文件,配置文件如下:

127.0.0.1       localhost
10.21.71.132    master
10.21.71.125    slave1
10.21.71.119    slave2

配置完成后,需要使用ping命令測試修改是否生效

ping master
ping slave1
ping slave2

SSH免密碼登錄

SSH(Secure Shell)是類Unix系統上進行遠程登錄的安全協議,簡單理解為遠程加密登錄。集群安裝需要使用SSH登錄,Ubuntu自帶Client端,需要安裝Server端,命令如下:

sudo apt-get install openssh-server

免密碼登錄需要進行一定的配置,通過RSA生成公鑰與私鑰,將公鑰發送給其他主機,其他主機把它加入authorized_keys,自己保留私鑰,以后就可進行免密碼登錄。這里公鑰相當於鎖頭,私鑰相當於鑰匙,當其他主機接收到公鑰並進行授權后,相當於公鑰對其他主機進行加密,可以使用私鑰解密。

  1. 在所有的機器上生成私鑰和公鑰
sudo ssh-keygen -t rsa   #一路回車

   2.  讓master能進行自身登錄與被slave1與slave2訪問,將兩台slav2機器公鑰發給master

# 將兩台slave機器公鑰發給master主機
scp ~/.ssh/id_rsa.pub hadoop@master:~/.ssh/id_rsa.pub.slave1
scp ~/.ssh/id_rsa.pub hadoop@master:~/.ssh/id_rsa.pub.slave2
# master主機上,將所有公鑰加入被認證的公鑰文件
cat ~/.ssh/id_rsa.pub* >> ~/.ssh/authorized_keys

       此時,應該slave1與slave2能夠登錄master主機並且master能夠自身登錄。

    3.  讓每台主機互相免密碼登錄。將公鑰文件分發給每台slave

scp ~/.ssh/authorized_keys hadoopk@slave1:~/.ssh/
scp ~/.ssh/authorized_keys hadoopk@slave2:~/.ssh/

    4.  在每台主機驗證SSH免密碼登錄。

ssh master
ssh slave1
ssh slave2

三、安裝Java

雖然Linux自帶了OpenJDK,但感覺還是要下載官網的JDK,Spark需要JDK6以上的版本,我下的版本為JDK1.7,使用下面的命令進行解壓:

sudo tar zxvf jdk-7u79-linux-x64.gz -C /usr/local/

然后修改環境變量

sudo vi /etc/profile/

在文件末尾添加相應的環境變量

export JAVA_HOME=/usr/local/jdk1.7
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

重新載入環境變量,並查看JAVA是否安裝成功

$ source /etc/profile   #生效環境變量
$ java -version         #如果打印出如下版本信息,則說明安裝成功
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

四、安裝Scala

因為Spark1.6.1需要版本Scala版本為2.10.x,因此在官網下載地址下載了2.10.6版本,下載后解壓

sudo tar zxvf scala-2.10.6.tgz -C /usr/local/

再次添加環境變量,再次使用使用

sudo vi /etc/profile

添加以下內容:

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

重新載入環境變量,並驗證scala是否安裝成功

$ source /etc/profile #重新載入環境變量
$ scala -version #查看scala安裝版本,如出現以下版本信息,則安裝成功
Scala code runner version 2.10.6 — Copyright 2002-2013, LAMP/EPFL

五、Hadoop安裝

下載Hadoop

從官網下載Hadoop2.6.0版本,官網下載地址,下載成功后解壓

tar -zxvf hadoop-2.6.0.tar.gz  -C /opt/

配置Hadoop

Hadoop的集群部署模式需要修改Hadoop文件夾中/etc/hadoop/中的配置文件,更多設置項可見官方說明,這里只設置了常見的設置項:hadoop-env.shyarn-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、slaves。

  1. 在hadoop-env.sh中配置JAVA_HOME
    # The java implementation to use.
    export JAVA_HOME=/usr/local/jdk1.7
  2. yarn-env.sh中配置JAVA_HOME
    # some Java parameters
    export JAVA_HOME=/usr/local/jdk1.7
  3. core-site.xml為全局配置文件,修改core-site.xml
    <configuration>
    <property>
            <name>hadoop.tmp.dir</name>
            <value>file:/home/hadoop/tmp</value>
            <description>Abase for other temporary directories.</description>
        </property>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value>
        </property>
    <property>
        <name>dfs.http.address</name>
        <value>50070</value>
    </property>
    </configuration>
  4. hdfs-site.xml為HDFS的配置文件,修改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:/home/hadoop/tmp/dfs/name</value>
      </property>
      <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/tmp/dfs/data</value>
      </property>
      <property>
         <name>dfs.permissions</name>
         <value>false</value>
       </property>
    </configuration>
  5. mapred-site.xml為MapReduce的配置文件,修改mapred-site.xml
    <configuration>
      <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
      </property>
    </configuration>
  6. yarn-site.xml為YARN資源管理器的配置文件,修改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>
  7. slaves文件配置從節點,配置slaves
    slave1
    slave2

將配置好的Hadoop文件夾分發給slaves

scp -r /opt/hadoop-2.6.0 hadoop@slave1:/opt/
scp -r /opt/hadoop-2.6.0 hadoop@slave2:/opt/

驗證Hadoop是否安裝成功

啟動Hadoop,只需要在master進行下列操作即可

cd /opt/hadoop-2.6.0                           #進入Hadoop目錄
sudo bin/hadoop namenode –format              #格式化namenode
sbin/start-dfs.sh                              #啟動HDFS
sbin/start-yarn.sh                             #啟動資源管理器

用jps查看機器上的進程,是否包含以下的進程:

master上的進程:

11164 SecondaryNameNode
17405 Jps
10535 ResourceManager
10949 NameNode

slave上的進程:

2164 DataNode
6440 Jps
1979 NodeManager

進入Hadoop的Web管理頁面:http://master:50070/

image

六、Spark安裝

下載Spark

進入官方網站下載最新Spark,下載地址,這里我下載的是spark-1.6.1-bin-hadoop2.6.tgz,能夠在Hadoop2.6及更高版本上運行。
下載后,進行解壓

sudo tar -zxvf spark-1.6.1-bin-hadoop2.6.tgz -C /opt/
sudo mv spark-1.6.1-bin-hadoop2.6/ spark-1.6.1 #重命名文件

配置Spark

cd /opt/spark-1.6.1/conf/
cp spark-env.sh.template spark-env.sh
sudo vi spark-env.sh

在Spark-env.sh文件尾部添加以下配置:

export JAVA_HOME=/usr/local/jdk1.7   #Java環境變量
export SCALA_HOME=/usr/local/scala-2.10.6 #SCALA環境變量
export SPARK_WORKING_MEMORY=1g  #每一個worker節點上可用的最大內存
export SPARK_MASTER_IP=master   #驅動器節點IP
export HADOOP_HOME=/opt/hadoop  #Hadoop路徑
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop #Hadoop配置目錄

配置slave主機

$ cp slaves.template slaves
$ sudo vim slaves

添加slave主機

slave1
slave2

將配置好的Spark分發給所有的slave

scp -r /opt/spark-1.6.1 hadoop@slave1:~/opt/

驗證Spark是否安裝成功

使用下面的命令,運行Spark
sbin/start-all.sh

用jps查看機器上的進程,是否包含以下的進程:
master上的進程:
3f891092-d25b-4e26-8134-29a55e4f2084
slave上的進程:
a979c70b-90ad-411d-9ad5-3189a7a9acdf
進入Spark的Web管理頁面:http://master:8080
9f81e9e7-2a56-45dc-b061-2dc1ee7a34c2

運行簡單示例

當需要運行Spark終端,必須將Spark的bin目錄加入到系統路徑。
export SPARK_HOME=/opt/spark-1.6.1
export PATH=$PATH:${SPARK_HOM}/bin

添加Spark的bin目錄路徑后,運行

spark-shell

查看是否出現歡迎界面,並可以運行scala腳本

image

image


免責聲明!

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



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