從0開始使用Docker搭建Spark集群

最近在學(xué)習(xí)大數(shù)據(jù)技術(shù),朋友叫我直接學(xué)習(xí)Spark,英雄不問(wèn)出處,菜鳥不問(wèn)對(duì)錯(cuò),于是我就開始了Spark學(xué)習(xí)。

為什么要在Docker上搭建Spark集群

Spark本身提供Local模式,在單機(jī)上模擬多計(jì)算節(jié)點(diǎn)來(lái)執(zhí)行任務(wù)。但不知道什么思想在做怪,總覺(jué)得不搭建一個(gè)集群,很不完美的感覺(jué)。

搭建分布式集群一般有兩個(gè)辦法:

  • 找多臺(tái)機(jī)器來(lái)部署。(對(duì)于一般的學(xué)習(xí)者,這不是很現(xiàn)實(shí),我就是這一般這種,沒(méi)有資源)
  • 裝虛擬機(jī),在本地開多個(gè)虛擬機(jī)。這對(duì)宿主機(jī)器性能要求比較高,因?yàn)槎鄠€(gè)虛擬機(jī)開銷也很大。同時(shí)安裝多臺(tái)虛擬機(jī)著實(shí)費(fèi)時(shí)麻煩。(很多學(xué)習(xí)者可能會(huì)選擇這個(gè)辦法,但是我怕麻煩,我的電腦也不太給力)

上訴兩個(gè)辦法都不是我的菜,正好前段時(shí)間聽(tīng)同事聊天說(shuō)到Docker。

百度百科對(duì)Docker的解釋如下:

Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。

于是就想到使用Docker來(lái)部署Spark集群了。

從0開始搭建Spark集群

安裝ubuntu虛擬機(jī)

我的機(jī)器是 Macbook Pro 13.3寸,這里我選擇的虛擬機(jī)是VMware Fusion 8.5.8ubuntu 16.04
具體安裝過(guò)程就不記錄了,非常簡(jiǎn)單,也不需要教程。但在這里要針對(duì)MBP的安裝虛擬機(jī)的配置做幾點(diǎn)記錄:

  • 分辨率

虛擬機(jī)的配置,必須選擇如圖所示,不然ubuntu的UI會(huì)發(fā)虛:


1.png

然后,打開啟動(dòng)ubuntu后,會(huì)發(fā)現(xiàn)圖標(biāo)和文字都非常小。原因是ubuntu的分辨率使用了宿主機(jī)MBP的分辨率,縮放scale=1. 在這里要針對(duì)ubuntu的分辨率做設(shè)置,將scale設(shè)置為2,如同:


2.png
  • VMware Fusion虛擬機(jī)Ubuntu中實(shí)現(xiàn)與主機(jī)共享(復(fù)制和粘貼)
  1. 在Ubuntu菜單上選擇VM->install VMware tools。然后出現(xiàn)VMware tools的安裝壓縮包文件VMwareTools-9.2.0-799703.tar.gz。
  2. 在終端使用命令 tar xvzf VMwareTools-9.2.0-799703.tar.gz /root/vm 解壓
  3. 命令 sudo ./root/vm/vmware-install.pl 運(yùn)行解壓后的目錄里的vmware-install.pl文件進(jìn)行安裝
  4. 完成,重啟。 命令 reboot
  • root用戶登錄

由于后面的很多操作基本都是需要root權(quán)限的,在這里是為了學(xué)習(xí)的,所以索性以root用戶登錄,但是由于默認(rèn)的登錄界面沒(méi)有root用戶,所以在這里要做一下配置.

  1. 重置root用戶密碼,在終端輸入 sudo passwd root ,一路輸入新密碼即可
  2. 在系統(tǒng)登錄界面以 root 用戶登錄
    vim /usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf 打開50-unity-greeter.conf文件,并在文件末尾添加:
user-session=ubuntu
greeter-show-manual-login=true
all-guest=false 

如圖:


1.png

保存退出

  1. 終端輸入 vim /root/.profile命令 打開 .profile 文件,并修改其最后一行為tty -s && mesg n || true
    如圖:
    2.png

    保存退出。
    重啟系統(tǒng),reboot。
    然后在登錄頁(yè)面 Login username處可以輸入 root, 回車,然后輸入密碼即可登錄 root 用戶

ubuntu虛擬機(jī)的安裝和配置到此基本完成了。下面就是正式進(jìn)入Docker集群的搭建了。

Docker 安裝

Docker 是什么?有什么用?在這里就不抄過(guò)來(lái)了,因?yàn)槲覀冞@里主要是使用Docker來(lái)部署Spark集群的,我就暫時(shí)不深究了,以后再深入了解下。附Docker 百科

我使用的是 ubuntu 16.04 , 具體安裝命令如下:

$ apt update
$ apt-get install apt-transport-https
$ apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
$ bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
$ apt update
$ apt install lxc-docker

安裝完成后,校驗(yàn)是否安裝成功

使用 docker version 命令,如果輸出如下信息,證明成功安裝:

1.png
下載ubuntu 鏡像
$ docker pull ubuntu:16.04

這條命令的作用是從Docker倉(cāng)庫(kù)中獲取ubuntu的鏡像

下載完成后,使用下面命令可以列出所有本地的鏡像:

$ docker images

如圖:


2.png

當(dāng)然,圖中的另外一條 ubuntu:hadoop 是我安裝了hadoop/spark集群后打的tag

啟動(dòng)一個(gè)容器

使用如下命令啟動(dòng)一個(gè)容器

$ docker run -ti ubuntu:16.04

啟動(dòng)一個(gè)容器后,將看到如圖效果:

3.png

容器啟動(dòng)后,接下來(lái)就要安裝java,及進(jìn)行相關(guān)配置

安裝 java

使用如下命令安裝一個(gè)java環(huán)境

$ apt update
$ apt install software-properties-common python-software-properties
$ add-apt-repository ppa:webupd8team/java
$ apt update
$ apt install oracle-java8-installer
$ java -version

$ apt install oracle-java8-installer 這條命令有可能失敗,多試幾次就可以了
$ java -version 命令后你將看到java的版本信息
如圖:

4.png

安裝完 java 后,下面就要進(jìn)行環(huán)境變量的配置了
修改~/.bashrc文件。在文件末尾加入下面配置信息:
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
如圖:

接下來(lái)是安裝集群了,包括zookeeper、hadoop、spark.
接下來(lái)的工作可能會(huì)用到如下命令:

  • wget http://... ,用于下載資源文件
  • ifconfig 用于查看當(dāng)前容器ip信息
  • vim 用于編輯文件

所以我們?cè)谶@里可以先進(jìn)行安裝這些工具:

$ apt update
$ apt install wget
$ apt install vim
$ apt install net-tools       # ifconfig 
$ apt install iputils-ping     # ping

都安裝好后,可以將此裝好環(huán)境變量的鏡像保存為一個(gè)副本,以后可以基于此副本構(gòu)建其它鏡像:

docker commit -m "java install" 009cf5ac0834 ubuntu:hadoop

如圖:

1.png

然后使用 docker images 命令將會(huì)看到保存好的本地副本:
2.png

安裝 Zookeeper、 Hadoop、Spark、Scala

下載集群資源

我們計(jì)劃將集群的 Zookeeper、Hadoop、Spark 安裝到統(tǒng)一的目錄 /root/soft/apache下。
所以在這里我們要先構(gòu)建這個(gè)目錄:

$ cd ~/
$ mkdir soft
$ cd soft
$ mkdir apache
$ mkdir scala  #這個(gè)目錄是用來(lái)安裝 scala 的
$ cd apache
$ mkdir zookeeper
$ mkdir hadoop
$ mkdir spark
下載 zookeeper

然后到這里下載 zookeeper /root/soft/apache/zookeeper 目錄下, 我這里下載的是 zookeeper-3.4.9

$ cd /root/soft/apache/zookeeper
$ wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
下載 hadoop

然后到這里下載 hadoop /root/soft/apache/hadoop 目錄下, 我這里下載的是 hadoop-2.7.4

$ cd /root/soft/apache/hadoop
$ wget http://mirrors.sonic.net/apache/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz
下載 spark

然后到這里下載 spark /root/soft/apache/spark 目錄下, 我這里下載的是 spark-2.2.0-bin-hadoop2.7

$ cd /root/soft/apache/spark
$ wget https://d3kbcqa49mib13.cloudfront.net/spark-2.2.0-bin-hadoop2.7.tgz
下載 scala

然后到這里下載 scala /root/soft/scala 目錄下, 我這里下載的是 scala-2.11.11

$ cd /root/soft/scala
$ wget https://downloads.lightbend.com/scala/2.11.11/scala-2.11.11.tgz

安裝 Zookeeper

  • 進(jìn)入 zookeeper 目錄,然后解壓下載下來(lái)的 zookeeper-3.4.9.tar.gz
$ cd /root/soft/apache/zookeeper
$ tar xvzf zookeeper-3.4.9.ar.gz
  • 修改 ~/.bashrc, 配置 zookeeper 環(huán)境變量
$ vim ~/.bashrc 
   export ZOOKEEPER_HOME=/root/soft/apache/zookeeper/zookeeper-3.4.9
   export PATH=$PATH:$ZOOKEEPER_HOME/bin
$ source ~/.bashrc #使環(huán)境變量生效

如圖:


1.png
  • 修改 zookeeper 配置信息:
$ cd zookeeper-3.4.9/conf/
$ cp zoo_sample.cfg zoo.cfg
$ vim zoo.cfg

修改如下信息:

dataDir=/root/soft/apache/zookeeper/zookeeper-3.4.9/tmp
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

如圖:


2.png
  • 接下來(lái)添加 myid 文件
$ cd ../
$ mkdir tmp
$ cd tmp
$ touch myid
$ echo 1 > myid

..../tmp/myid 文件中保存的數(shù)字代表本機(jī)的zkServer編號(hào) 在此設(shè)置master為編號(hào)為1的zkServer,之后生成slave1和slave2之后還需要分別修改此文件

安裝 Hadoop

  • 進(jìn)入 hadoop 目錄,然后解壓下載下來(lái)的 hadoop-2.7.4.tar.gz
$ cd /root/soft/apache/hadoop
$ tar xvzf hadoop-2.7.4.tar.gz
  • 修改 ~/.bashrc, 配置 hadoop 環(huán)境變量
$ vim ~/.bashrc
     export HADOOP_HOME=/root/soft/apache/hadoop/hadoop-2.7.4
     export HADOOP_CONFIG_HOME=$HADOOP_HOME/etc/hadoop
     export PATH=$PATH:$HADOOP_HOME/bin
     export PATH=$PATH:$HADOOP_HOME/sbin
   # 保存退出 esc :wq!
$ source ~/.bashrc #使環(huán)境變量生效

如圖:


1.png
  • 配置 hadoop
# 首先進(jìn)入 `hadoop` 配置文件的目錄,因?yàn)?`hadoop` 所有的配置都在此目錄下
$ cd $HADOOP_CONFIG_HOME/
  1. 修改核心配置 core-site.xml, 添加如下信息到此文件的< configuration > </configuration > 中間
<configuration>
    <property>
         <name>hadoop.tmp.dir</name>
         <value>/root/soft/apache/hadoop/hadoop-2.7.4/tmp</value>
         <description>A base for other temporary directories.</description>
     </property>
     <property>
         <name>fs.default.name</name>
         <value>hdfs://master:9000</value>
         <final>true</final>
         <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>
<configuration>
  1. 修改 hdfs-site.xml, 添加如下信息:
# dfs.nameservices 名稱服務(wù),在基于HA的HDFS中,用名稱服務(wù)來(lái)表示當(dāng)前活動(dòng)的NameNode
# dfs.ha.namenodes. 配置名稱服務(wù)下有哪些NameNode 
# dfs.namenode.rpc-address.. 配置NameNode遠(yuǎn)程調(diào)用地址 
# dfs.namenode.http-address.. 配置NameNode瀏覽器訪問(wèn)地址 
# dfs.namenode.shared.edits.dir 配置名稱服務(wù)對(duì)應(yīng)的JournalNode 
# dfs.journalnode.edits.dir JournalNode存儲(chǔ)數(shù)據(jù)的路徑

<configuration>
<property>
   <name>dfs.nameservices</name>
   <value>ns1</value>
</property>
<property>
   <name>dfs.ha.namenodes.ns1</name>
   <value>nn1,nn2</value>
</property>
<property>
   <name>dfs.namenode.rpc-address.ns1.nn1</name>
   <value>master:9000</value>
</property>
<property>
   <name>dfs.namenode.http-address.ns1.nn1</name>
   <value>master:50070</value>
</property>
<property>
   <name>dfs.namenode.rpc-address.ns1.nn2</name>
   <value>slave1:9000</value>
</property>
<property>
   <name>dfs.namenode.http-address.ns1.nn2</name>
   <value>slave1:50070</value>
</property>
<property>
   <name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;slave1:8485;slave2:8485/ns1</value>
</property>
<property>
   <name>dfs.journalnode.edits.dir</name>
   <value>/root/soft/apache/hadoop/hadoop-2.7.4/journal</value>
</property>
<property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
</property>
<property>
   <name>dfs.client.failover.proxy.provider.ns1</name>
   <value>
   org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
   </value>
</property>
<property>
   <name>dfs.ha.fencing.methods</name>
   <value>
   sshfence
   shell(/bin/true)
   </value>
</property>
<property>
   <name>dfs.ha.fencing.ssh.private-key-files</name>
   <value>/root/.ssh/id_rsa</value>
</property>
<property>
   <name>dfs.ha.fencing.ssh.connect-timeout</name>
   <value>30000</value>
</property>
</configuration>
  1. 修改 Yarn 的配置文件yarn-site.xml
# yarn.resourcemanager.hostname RescourceManager的地址,NodeManager的地址在slaves文件中定義

<configuration>
<!-- Site specific YARN configuration properties -->
<property>
   <name>yarn.resourcemanager.hostname</name>
   <value>master</value>
</property>
<property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
</property>
</configuration>
  1. 修改 mapred-site.xml
    這個(gè)文件是不存在的,需要將 mapred-site.xml.template copy一份
$ cp mapred-site.xml.template mapred-site.xml

然后編輯 mapred-site.xml ,添加如下信息到文件

<configuration>
<!-- 指定MapReduce框架為yarn方式 -->
<property>
    <name>
      mapreduce.framework.name
    </name>
    <value>yarn</value>
</property>
</configuration>
  1. 修改指定 DataNodeNodeManager 的配置文件 slaves :
$ vim slaves

添加如下節(jié)點(diǎn)名

master
slave1
slave2

到此 hadoop 算是安裝配置好了

安裝 Spark

  • 進(jìn)入 spark 目錄,然后解壓下載下來(lái)的 spark-2.2.0-bin-hadoop2.7.tgz
$ cd /root/soft/apache/spark
$ tar xvzf spark-2.2.0-bin-hadoop2.7.tgz
  • 修改 ~/.bashrc, 配置 spark 環(huán)境變量
$ vim ~/.bashrc
    export SPARK_HOME=/root/soft/apache/spark/spark-2.2.0-bin-hadoop2.7
    export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
   # 保存退出 esc :wq!
$ source ~/.bashrc #使環(huán)境變量生效
  • 修改 spark 配置
$ cd spark-2.2.0-bin-hadoop2.7/conf
$ cp spark-env.sh.template spark-env.sh
$ vim spark-env.sh

添加如下信息:

export SPARK_MASTER_IP=master
export SPARK_WORKER_MEMORY=128m
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export SCALA_HOME=/root/soft/scala/scala-2.11.11  # scala我們后面會(huì)安裝它
export SPARK_HOME=/root/soft/apache/spark/spark-2.2.0-bin-hadoop2.7
export HADOOP_CONF_DIR=/root/soft/apache/hadoop/hadoop-2.7.4/etc/hadoop
export SPARK_LIBRARY_PATH=$SPARK_HOME/lib
export SCALA_LIBRARY_PATH=$SPARK_LIBRARY_PATH
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1
export SPARK_MASTER_PORT=7077

保存退出 esc :wq!

修改指定Worker的配置文件 slaves:

$ vim slaves

添加

master
slave1
slave2

到這里,Spark 也算安裝配置完成了。

安裝 Scala

  • 進(jìn)入 scala 目錄,然后解壓下載下來(lái)的 scala-2.11.11.tgz
$ cd /root/soft/scala
$ tar xvzf scala-2.11.11.tgz
  • 修改 ~/.bashrc, 配置 spark 環(huán)境變量
$ vim ~/.bashrc
    export SCALA_HOME=/root/soft/scala/scala-2.11.11
   export PATH=$PATH:$SCALA_HOME/bin
   # 保存退出 esc :wq!
$ source ~/.bashrc #使環(huán)境變量生效

到這里,scala 也算安裝配置完成了

安裝 SSH, 配置無(wú)密碼訪問(wèn)集群其它機(jī)器

搭建集群環(huán)境,自然少不了使用SSH。這可以實(shí)現(xiàn)無(wú)密碼訪問(wèn),訪問(wèn)集群機(jī)器的時(shí)候很方便。
使用如下命令安裝 ssh

$ apt install ssh 

SSH裝好了以后,由于我們是 Docker 容器中運(yùn)行,所以 SSH 服務(wù)不會(huì)自動(dòng)啟動(dòng)。需要我們?cè)谌萜鲉?dòng)以后,手動(dòng)通過(guò)/usr/sbin/sshd 手動(dòng)打開SSH服務(wù)。未免有些麻煩,為了方便,我們把這個(gè)命令加入到~/.bashrc文件中。通過(guò)vim ~/.bashrc編輯.bashrc文件,

$ vim ~/.bashrc

在文件后追加下面內(nèi)容:

#autorun
/usr/sbin/sshd

然后運(yùn)行 source ~/.bashrc 使配置生效

$ source ~/.bashrc

此過(guò)程可能會(huì)報(bào)錯(cuò):
Missing privilege separation directory: /var/run/sshd 需要自己創(chuàng)建這個(gè)目錄

$ mkdir /var/run/sshd
  • 生成訪問(wèn)密鑰
$ cd ~/
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cd .ssh
$ cat id_rsa.pub >> authorized_keys

注意: 這里,我的思路是直接將密鑰生成后寫入鏡像,免得在買個(gè)容器里面再單獨(dú)生成一次,還要相互拷貝公鑰,比較麻煩。當(dāng)然這只是學(xué)習(xí)使用,實(shí)際操作時(shí),應(yīng)該不會(huì)這么搞,因?yàn)檫@樣所有容器的密鑰都是一樣的?。。?/code>

到這里,SSH 也算安裝配置完成了

到這里,Spark 集群算是基本安裝配置好了,剩下就是部署分布式了。

先查看ip

 $ ifconfig
 #//172.17.0.2

保存鏡像副本

這里我們將安裝好ZookeeperHadopp、 Spark、Scala 的鏡像保存為一個(gè)副本

  • 退出 Docker
$ exit 
  • 保存一個(gè)副本
$ docker commit -m "zookeeper hadoop spark scala install" 7b97ba289b22 ubuntu:spark

之后我們會(huì)基于此副本來(lái)運(yùn)行我們的集群

分布式各節(jié)點(diǎn)啟動(dòng)腳本

  • 驗(yàn)證一下 IP 規(guī)則

分別開 3 個(gè)終端。分別跑如下命令,開啟3 個(gè)Docker
終端 1:

$ docker run -ti -h master ubuntu:spark
$ ifconfig #172.17.0.2

終端 2:

$ docker run -ti -h slave1 ubuntu:spark
$ ifconfig #172.17.0.3

終端 3:

$ docker run -ti -h slave2 ubuntu:spark
$ ifconfig #172.17.0.4

看到了沒(méi),這3個(gè)Dockerip 分別是172.17.0.2、 172.17.0.3 、172.17.0.4,它是取決于啟動(dòng)Docker 的順序的。
接下來(lái)退出這幾個(gè)Docker,然后編寫啟動(dòng)腳本

  • 編寫集群節(jié)點(diǎn)啟動(dòng)腳本
    啟動(dòng) ubuntu:spark
$ docker run -ti ubuntu:spark

進(jìn)入 /root/soft 目錄,我們將啟動(dòng)腳本都放這里吧

$ cd /root/soft
$ mkdir shell
$ cd shell
  • vim run_master.sh 創(chuàng)建 Master 節(jié)點(diǎn)的運(yùn)行腳本
$ vim run_master.sh 

添加如下信息:

#!/bin/bash
#清空hosts文件信息
echo> /etc/hosts
#配置主機(jī)的host
echo 172.17.0.1 host >> /etc/hosts
echo 172.17.0.2 master >> /etc/hosts
echo 172.17.0.3 slave1 >> /etc/hosts
echo 172.17.0.4 slave2 >> /etc/hosts

#配置 master 節(jié)點(diǎn)的 zookeeper 的 server id
echo 1 > /root/soft/apache/zookeeper/zookeeper-3.4.9/tmp/myid

zkServer.sh start

hadoop-daemons.sh start journalnode
hdfs namenode -format
hdfs zkfc -formatZK

start-dfs.sh
start-yarn.sh
start-all.sh
  • vim run_slave1.sh 創(chuàng)建 Slave1 節(jié)點(diǎn)的運(yùn)行腳本
$ vim run_slave1.sh 

添加如下信息:

#!/bin/bash
#清空hosts文件信息
echo> /etc/hosts
#配置主機(jī)的host
echo 172.17.0.1 host >> /etc/hosts
echo 172.17.0.2 master >> /etc/hosts
echo 172.17.0.3 slave1 >> /etc/hosts
echo 172.17.0.4 slave2 >> /etc/hosts

#配置 master 節(jié)點(diǎn)的 zookeeper 的 server id
echo 2 > /root/soft/apache/zookeeper/zookeeper-3.4.9/tmp/myid

zkServer.sh start
  • vim run_slave2.sh 創(chuàng)建 Slave2 節(jié)點(diǎn)的運(yùn)行腳本
$ vim run_slave2.sh 

添加如下信息:

#!/bin/bash
#清空hosts文件信息
echo> /etc/hosts
#配置主機(jī)的host
echo 172.17.0.1 host >> /etc/hosts
echo 172.17.0.2 master >> /etc/hosts
echo 172.17.0.3 slave1 >> /etc/hosts
echo 172.17.0.4 slave2 >> /etc/hosts

#配置 master 節(jié)點(diǎn)的 zookeeper 的 server id
echo 3 > /root/soft/apache/zookeeper/zookeeper-3.4.9/tmp/myid

zkServer.sh start
  • vim stop_master.sh 創(chuàng)建 Stop 腳本
$ vim stop_master.sh 

添加如下信息:

#!/bin/bash
zkServer.sh stop
hadoop-daemons.sh stop journalnode
stop-dfs.sh
stop-yarn.sh
stop-all.sh

各節(jié)點(diǎn)運(yùn)行腳本到此編寫完成。

  • 最后
chmod +x run_master.sh
chmod +x run_slave1.sh
chmod +x run_slave2.sh
chmod +x stop_master.sh
  • 退出 Docker, 并保存副本
$ exit

保存副本

$ docker commit -m "zookeeper hadoop spark scala install" 266b46cce542 ubuntu:spark
  • 配置虛擬機(jī) ubuntuhosts
$ vim /etc/hosts

添加如下hosts

172.17.0.1      host
172.17.0.2      master
172.17.0.3      slave1
172.17.0.4      slave2

到此所有配置安裝基本完成了,下面開啟你的Spark集群吧?。?!

啟動(dòng) Spark 集群
  • 啟動(dòng) Master 節(jié)點(diǎn)
$ docker run -ti -h master ubuntu:spark 

在這里先不要著急著運(yùn)行 run_master.sh 啟動(dòng)腳本。等最后再運(yùn)行

  • 啟動(dòng) Slave1 節(jié)點(diǎn)
$ docker run -ti -h slave1 ubuntu:spark 

運(yùn)行 run_slave1.sh 啟動(dòng)腳本

$ ./root/soft/shell/run_slave1.sh
  • 啟動(dòng) Slave2 節(jié)點(diǎn)
$ docker run -ti -h slave2 ubuntu:spark 

運(yùn)行 run_slave2.sh 啟動(dòng)腳本

$ ./root/soft/shell/run_slave2.sh
  • 最后再運(yùn)行 Master 節(jié)點(diǎn)的啟動(dòng)腳本 run_master.sh

切換到啟動(dòng)了 Master 節(jié)點(diǎn)的 Docker 終端

$ ./root/soft/shell/run_master.sh

可以使用 jps 命令查看當(dāng)前集群運(yùn)行情況

$ jps

不出意外的話,你應(yīng)該能看到類似如下信息:

2081 QuorumPeerMain
3011 NodeManager
2900 ResourceManager
2165 JournalNode
2405 NameNode
3159 Worker
2503 DataNode
3207 Jps

到此已經(jīng)啟動(dòng)了你的 Spark 集群了。

  • 還可以登錄web管理臺(tái)來(lái)查看運(yùn)行狀況:
  服務(wù)        地址
 HDFS    master:50070
 Yarn      master:8088
 Spark    master:8080

參考

http://blog.csdn.net/cq361106306/article/details/54237392

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

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

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