1. 程式人生 > >Spark修煉之道(進階篇)——Spark入門到精通:第一節 Spark 1.5.0叢集搭建

Spark修煉之道(進階篇)——Spark入門到精通:第一節 Spark 1.5.0叢集搭建

作者:周志湖
網名:搖擺少年夢
微訊號:zhouzhihubeyond

本節主要內容

  1. 作業系統環境準備
  2. Hadoop 2.4.1叢集搭建
  3. Spark 1.5.0 叢集部署

注:在利用CentOS 6.5作業系統安裝spark 1.5叢集過程中,本人發現Hadoop 2.4.1叢集可以順利搭建,但在Spark 1.5.0叢集啟動時出現了問題(可能原因是64位作業系統原因,原始碼需要重新編譯,但本人沒經過測試),經本人測試在ubuntu 10.04 作業系統上可以順利成功搭建。大家可以利用CentOS 6.5進行嘗試,如果有問題,再利用ubuntu 10.04搭建,所有步驟基本一致

1. 作業系統環境準備

(1)安裝VMWare

  下載地址:http://pan.baidu.com/s/1bniBipD
  密碼:pbdw
  安裝過程略

(2)下載作業系統並安裝

Ubuntu 10.04作業系統下載地址:

連結:http://pan.baidu.com/s/1kTy9Umj 密碼:2w5b

CentOS 6.5下載地址:

下載地址:http://pan.baidu.com/s/1mgkuKdi
密碼:xtm5

本實驗要求裝三臺:CentOS 6.5,可以分別安裝,也可以安裝完一臺後克隆兩臺,具體過程略。初學者,建議三臺分別安裝。安裝後如下圖所示:
這裡寫圖片描述

(3)CentOS 6.5網路配置

安裝好的虛擬機器一般預設使用的是NAT(關於NAT、橋接等虛擬機器網路連線方式參見本人部落格:http://blog.csdn.net/lovehuangjiaju/article/details/48183485),由於三臺機器之間需要互通之外,還需要與本機連通,因此採用將網路連線方式設定為Bridged(三臺機器相同的設定),如下圖所法:
這裡寫圖片描述

修改主機名

(1)修改centos_salve01虛擬機器主機名:

vim /etc/sysconfig/network

/etc/sysconfig/network修改後的內容如下:
這裡寫圖片描述

(2)vim /etc/sysconfig/network命令修改centos_slave02虛擬機器主機名
/etc/sysconfig/network修改後的內容如下:
這裡寫圖片描述

(3)vim /etc/sysconfig/network命令修改centos_slave03虛擬機器主機名
/etc/sysconfig/network修改後的內容如下:
這裡寫圖片描述

修改主機IP地址

在大家在配置時,修改/etc/sysconfig/network-scripts/ifcfg-eth0檔案對應的BOOTPROT=static、IPADDR、NETMASK、GATEWAY及DNS1資訊即可

(1)修改centos_salve01虛擬機器主機IP地址:

vim /etc/sysconfig/network-scripts/ifcfg-eth0

修改後內容如下:

DEVICE="eth0"
BOOTPROTO="static"
HWADDR="00:0c:29:3f:69:4d"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="5315276c-db0d-4061-9c76-9ea86ba9758e"
IPADDR="192.168.1.111"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.1"
DNS1="8.8.8.8"

這裡寫圖片描述
(2)修改centos_salve02虛擬機器主機IP地址:

vim /etc/sysconfig/network-scripts/ifcfg-eth0

修改後內容如下:

DEVICE="eth0"
BOOTPROTO="static"
HWADDR="00:0c:29:64:f9:80"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="5315276c-db0d-4061-9c76-9ea86ba9758e"
IPADDR="192.168.1.112"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.1"
DNS1="8.8.8.8"

這裡寫圖片描述

(3)修改centos_salve03虛擬機器主機IP地址:

vim /etc/sysconfig/network-scripts/ifcfg-eth0

修改後內容如下:

DEVICE="eth0"
BOOTPROTO="static"
HWADDR="00:0c:29:1e:80:b1"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="5315276c-db0d-4061-9c76-9ea86ba9758e"
IPADDR="192.168.1.113"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.1"
DNS1="8.8.8.8"

這裡寫圖片描述

/etc/sysconfig/network-scripts/ifcfg-eth0檔案內容解析:

DEVICE=eth0                 //指出裝置名稱
BOOTPROT=static             //啟動型別 dhcp|static,使用橋接模式,必須是static
HWADDR=00:06:5B:FE:DF:7C    //硬體Mac地址
IPADDR=192.168.0.2          //IP地址
NETMASK=255.255.255.0       //子網掩碼
NETWORK=192.168.0.0         //網路地址
GATEWAY=192.168.0.1         //閘道器地址
ONBOOT=yes                  //是否啟動應用
TYPE=Ethernet               //網路型別

設定完成後,使用

service network restart

命令重新啟動網路,配置即可生效。

設定主機名與IP地址對映

(1)修改centos_salve01主機名與IP地址對映

vim /etc/hosts

設定內容如下:

127.0.0.1 slave01.example.com  localhost localhost.localdomain localhost4 localhost4.localdomain4
::1       slave01.example.com
192.168.1.111 slave01.example.com
192.168.1.112 slave02.example.com
192.168.1.113 slave03.example.com
具體如下圖:

這裡寫圖片描述

(2)修改centos_salve02主機名與IP地址對映

vim /etc/hosts

設定內容如下:

127.0.0.1 slave02.example.com  localhost localhost.localdomain localhost4 localhost4.localdomain4
::1       slave02.example.com
192.168.1.111 slave01.example.com
192.168.1.112 slave02.example.com
192.168.1.113 slave03.example.com

具體如下圖:
這裡寫圖片描述

(3)修改centos_salve03主機名與IP地址對映

vim /etc/hosts

設定內容如下:

127.0.0.1 slave03.example.com  localhost localhost.localdomain localhost4 localhost4.localdomain4
::1       slave03.example.com
192.168.1.111 slave01.example.com
192.168.1.112 slave02.example.com
192.168.1.113 slave03.example.com

這裡寫圖片描述

修改主機DNS

採用下列命令設定各主機DNS(三臺機器進行相同的設定)

vim /etc/resolv.conf 

設定後的內容:

# Generated by NetworkManager
search example.com
nameserver 8.8.8.8

8.8.8.8為Google提供的DNS伺服器

網路連通測試

前面所有的配置完成後,重啟centos_salve01、centos_salve02、centos_salve03使主機名設定生效,然後分別在三臺機器上作如下測試命令:
下面只給出在centos_salve01虛擬機器上的測試

[[email protected] ~]# ping slave02.example.com
PING slave02.example.com (192.168.1.112) 56(84) bytes of data.
64 bytes from slave02.example.com (192.168.1.112): icmp_seq=1 ttl=64 time=0.417 ms
64 bytes from slave02.example.com (192.168.1.112): icmp_seq=2 ttl=64 time=0.355 ms
64 bytes from slave02.example.com (192.168.1.112): icmp_seq=3 ttl=64 time=0.363 ms
^C
--- slave02.example.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2719ms
rtt min/avg/max/mdev = 0.355/0.378/0.417/0.031 ms
[[email protected] ~]# ping slave03.example.com
PING slave03.example.com (192.168.1.113) 56(84) bytes of data.
64 bytes from slave03.example.com (192.168.1.113): icmp_seq=1 ttl=64 time=0.386 ms
64 bytes from slave03.example.com (192.168.1.113): icmp_seq=2 ttl=64 time=0.281 ms
^C
--- slave03.example.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1799ms
rtt min/avg/max/mdev = 0.281/0.333/0.386/0.055 ms

測試外網的連通性(我在裝的時候,8.8.8.8,已經被禁用….心中一萬頭cnm):

[[email protected] ~]# ping www.baidu.com
ping: unknown host www.baidu.com
[[email protected] ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 192.168.1.111 icmp_seq=2 Destination Host Unreachable
From 192.168.1.111 icmp_seq=3 Destination Host Unreachable
From 192.168.1.111 icmp_seq=4 Destination Host Unreachable
From 192.168.1.111 icmp_seq=6 Destination Host Unreachable
From 192.168.1.111 icmp_seq=7 Destination Host Unreachable
From 192.168.1.111 icmp_seq=8 Destination Host Unreachable

(4)SSH完密碼登入

#### (1) OpenSSH安裝
如果大家在配置時,ping 8.8.8.8能夠ping通,則主機能夠正常上網;如果不能上網,則將網路連線方式重新設定為NAT,並修改網路配置檔案為dhcp方式。在保證網路連通的情況下執行下列命令:

yum install openssh-server

#### (2) 無密碼登入實現

使用以下命令生成相應的金鑰(三臺機器進行相同的操作)

ssh-keygen -t rsa 

執行過程一直回車即可

[[email protected] ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
4e:2f:39:ed:f4:32:2e:a3:55:62:f5:8a:0d:c5:2c:16 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|        E        |
|         +       |
|        o =      |
|       . + .     |
|        S . .    |
|       + X .     |
|        B *      |
|       .o=o.     |
|      .. +oo.    |
+-----------------+

生成的檔案分別為/root/.ssh/id_rsa(私鑰)、/root/.ssh/id_rsa.pub(公鑰)

完成後將公鑰拷貝到要免登陸的機器上(三臺可進行相同操作):

ssh-copy-id -i slave01.example.com
ssh-copy-id -i slave02.example.com
ssh-copy-id -i slave03.example.com

2. Hadoop 2.4.1叢集搭建

叢集搭建相關軟體下載地址:

連結:http://pan.baidu.com/s/1sjIG3b3 密碼:38gh

下載後將所有軟體都放置在E盤的share目錄下:
這裡寫圖片描述

設定share資料夾為虛擬機器的共享目錄,如下圖所示:
這裡寫圖片描述

在linux系統中,採用

[root@slave01 /]# cd /mnt/hgfs/share
[root@slave01 share]# ls

命令可以切換到該目錄下,如下圖
這裡寫圖片描述

Spark官方要求的JDK、Scala版本

Spark runs on Java 7+, Python 2.6+ and R 3.1+. For the Scala API, Spark 1.5.0 uses Scala 2.10. You will need to use a compatible Scala version (2.10.x).

(1)JDK 1.8 安裝

在根目錄下建立sparkLearning目前,後續所有相關軟體都放置在該目錄下,程式碼如下:

[root@slave01 /]# mkdir /sparkLearning
[root@slave01 /]# ls
bin   etc             lib         media  proc  selinux        sys  var
boot  hadoopLearning  lib64       mnt    root  sparkLearning  tmp
dev   home            lost+found  opt    sbin  srv            usr

將共享目錄中的jdk安裝包複製到/sparkLearning目錄

[root@slave01 share]# cp /mnt/hgfs/share/jdk-8u40-linux-x64.gz /sparkLearning/
[root@slave01 share]# cd /sparkLearning/
//解壓
[root@slave01 sparkLearning]# tar -zxvf jdk-8u40-linux-x64.gz 

設定環境變數:

[root@slave01 sparkLearning]# vim /etc/profile

在檔案最後新增:

export JAVA_HOME=/sparkLearning/jdk1.8.0_40
export PATH=${JAVA_HOME}/bin:$PATH

如下圖:
這裡寫圖片描述

測試配置是否成功:

//使修改後的配置生效
[root@slave01 sparkLearning]# source /etc/profile
//環境變數是否已經設定
[root@slave01 sparkLearning]# $JAVA_HOME
bash: /sparkLearning/jdk1.8.0_40: is a directory
//測試java是否安裝配置成功
[root@slave01 sparkLearning]# java -version
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

(2)Scala 2.10.4 安裝

//複製檔案到sparkLearning目錄下
[root@slave01 sparkLearning]# cp /mnt/hgfs/share/scala-2.10.4.tgz  .
//解壓
[root@slave01 sparkLearning]# tar -zxvf scala-2.10.4.tgz > /dev/null


[root@slave01 sparkLearning]# vim /etc/profile

將/etc/profile檔案末尾內容修改如下:

export JAVA_HOME=/sparkLearning/jdk1.8.0_40
export SCALA_HOME=/sparkLearning/scala-2.10.4
export PATH=${JAVA_HOME}/bin:${SCALA_HOME}/bin:$PATH

測試Scala是否安裝成功

[root@slave01 sparkLearning]# source /etc/profile
[root@slave01 sparkLearning]# $SCALA_HOME
bash: /sparkLearning/scala-2.10.4: is a directory
[root@slave01 sparkLearning]# scala -version
Scala code runner version 2.10.4 -- Copyright 2002-2013, LAMP/EPFL

(3)Zookeeper-3.4.5 叢集搭建

[root@slave01 sparkLearning]# cp /mnt/hgfs/share/zookeeper-3.4.5.tar.gz .
[root@slave01 sparkLearning]# tar -zxvf zookeeper-3.4.5.tar.gz > /dev/null

[root@slave01 sparkLearning]# cp zookeeper-3.4.5/conf/zoo_sample.cfg zoo.cfg
[root@slave01 sparkLearning]# vim zoo.cfg

修改dataDir為:

dataDir=/sparkLearning/zookeeper-3.4.5/zookeeper_data

在檔案末尾新增如下內容:

server.1=slave01.example.com:2888:3888
server.2=slave02.example.com:2888:3888
server.3=slave03.example.com:2888:3888

如圖所示:
這裡寫圖片描述

這裡寫圖片描述

建立ZooKeeper叢集資料儲存目錄

[root@slave01 sparkLearning]# cd zookeeper-3.4.5/
[root@slave01 zookeeper-3.4.5]# mkdir zookeeper_data
[root@slave01 zookeeper-3.4.5]# cd zookeeper_data/
[root@slave01 zookeeper_data]# touch myid 
[root@slave01 zookeeper_data]# echo 1 > myid 

將slave01.example.com(centos_slave01)上的sparkLearning目錄拷貝到另外兩臺伺服器上:

[root@slave01 /]# scp -r /sparkLearning slave02.example.com:/
[root@slave01 /]# scp -r /sparkLearning slave03.example.com:/

/etc/profile檔案也進行覆蓋

[root@slave01 /]# scp  /etc/profile slave02.example.com:/etc/profile
[root@slave01 /]# scp  /etc/profile slave03.example.com:/etc/profile

修改zookeeper_data中的myid資訊:

//配置slave02.example.com上的myid
[root@slave01 /]# ssh salve02.example.com
[root@slave02 ~]# echo 2 > /sparkLearning/zookeeper-3.4.5/zookeeper_data/myid
[root@slave02 ~]# more /sparkLearning/zookeeper-3.4.5/zookeeper_data/myid
2
//配置slave03.example.com上的myid
[root@slave02 ~]# ssh slave03.example.com
Last login: Fri Sep 18 01:33:29 2015 from slave01.example.com
[root@slave03 ~]# echo 3 > /sparkLearning/zookeeper-3.4.5/zookeeper_data/myid
[root@slave03 ~]# more /sparkLearning/zookeeper-3.4.5/zookeeper_data/myid
3

如此便完成配置,下面對叢集進行測試:

//在slave03.example.com主機上
[root@slave03 ~]# cd /sparkLearning/zookeeper-3.4.5/bin
[root@slave03 bin]# ls
README.txt    zkCli.cmd  zkEnv.cmd  zkServer.cmd
zkCleanup.sh  zkCli.sh   zkEnv.sh   zkServer.sh

//啟動slave03.example.com上的ZooKeeper
[root@slave03 bin]# ./zkServer.sh start
JMX enabled by default
Using config: /sparkLearning/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@slave03 bin]# ./zkServer.sh status
JMX enabled by default
Using config: /sparkLearning/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: leader

//在slave02.example.com主機上
[root@slave02 bin]# ./zkServer.sh start
JMX enabled by default
Using config: /sparkLearning/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
//檢視zookeeper叢集狀態,如果Mode顯示為follower或leader則表明配置成功
[root@slave02 bin]# ./zkServer.sh status
JMX enabled by default
Using config: /sparkLearning/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower


//在slave01.example.com主機上
[root@slave01 bin]# ./zkServer.sh start
JMX enabled by default
Using config: /sparkLearning/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@slave01 bin]# ./zkServer.sh status
JMX enabled by default
Using config: /sparkLearning/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower

//在slave03.example.com主機上zookeeper狀態
[root@slave03 bin]# ./zkServer.sh status
JMX enabled by default
Using config: /sparkLearning/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: leader

(4)Hadoop 2.4.1 叢集搭建

(1)Hadoop 2.4.1基本目錄瀏覽

[email protected] bin]# cp /mnt/hgfs/share/hadoop-2.4.1.tar.gz /sparkLearning/
[[email protected] bin]# cd /sparkLearning/
[[email protected] sparkLearning]# tar -zxvf hadoop-2.4.1.tar.gz > /dev/null
[[email protected] sparkLearning]# cd hadoop-2.4.1
[[email protected] hadoop-2.4.1]# ls
bin  include  libexec      NOTICE.txt  sbin
etc  lib      LICENSE.txt  README.txt  share
cd 
[[email protected] hadoop-2.4.1]# cd etc/hadoop/
[[email protected] hadoop]# ls
capacity-scheduler.xml      hdfs-site.xml               mapred-site.xml.template
configuration.xsl           httpfs-env.sh               slaves
container-executor.cfg      httpfs-log4j.properties     ssl-client.xml.example
core-site.xml               httpfs-signature.secret     ssl-server.xml.example
hadoop-env.cmd              httpfs-site.xml             yarn-env.cmd
hadoop-env.sh               log4j.properties            yarn-env.sh
hadoop-metrics2.properties  mapred-env.cmd              yarn-site.xml
hadoop-metrics.properties   mapred-env.sh
hadoop-policy.xml           mapred-queues.xml.template

(2)將Hadoop 2.4.1新增到環境變數

使用命令:vim /etc/profile 將環境變數資訊修改如下:

export JAVA_HOME=/sparkLearning/jdk1.8.0_40
export SCALA_HOME=/sparkLearning/scala-2.10.4
export HADOOP_HOME=/sparkLearning/hadoop-2.4.1
export PATH=${JAVA_HOME}/bin:${SCALA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH

(3)將Hadoop 2.4.1新增到環境變數

使用命令:vim hadoop-env.sh 將環境變數資訊修改如下,在export JAVA_HOME修改為:

export JAVA_HOME=/sparkLearning/jdk1.8.0_40

這裡寫圖片描述

(4)修改core-site.xml檔案

利用vim core-site.xml命令,檔案內容如下:

  <configuration>
<!-- 指定hdfs的nameservice為ns1 -->
                    <property>
                        <name>fs.defaultFS</name>
                        <value>hdfs://ns1</value>
                    </property>
                    <!-- 指定hadoop臨時目錄 -->
                    <property>
                        <name>hadoop.tmp.dir</name>
                        <value>/sparkLearning/hadoop-2.4.1/tmp</value>
                    </property>
                    <!-- 指定zookeeper地址 -->
                    <property>
                        <name>ha.zookeeper.quorum</name>
                        <value>slave01.example.com:2181,slave02.example.com:2181,slave03.example.com:2181</value>
                    </property>
</configuration>

(5)修改hdfs-site.xml檔案

vim hdfs-site.xml內容如下:

<configuration>
                <!--指定hdfs的nameservice為ns1,需要和core-site.xml中的保持一致 -->
                <property>
                    <name>dfs.nameservices</name>
                    <value>ns1</value>
                </property>
                <!-- ns1下面有兩個NameNode,分別是nn1,nn2 -->
                <property>
                    <name>dfs.ha.namenodes.ns1</name>
                    <value>nn1,nn2</value>
                </property>
                <!-- nn1的RPC通訊地址 -->
                <property>
                    <name>dfs.namenode.rpc-address.ns1.nn1</name>
                    <value>slave01.example.com:9000</value>
                </property>
                <!-- nn1的http通訊地址 -->
                <property>
                    <name>dfs.namenode.http-address.ns1.nn1</name>
                    <value>slave01.example.com:50070</value>
                </property>
                <!-- nn2的RPC通訊地址 -->
                <property>
                    <name>dfs.namenode.rpc-address.ns1.nn2</name>
                    <value>slave02.example.com:9000</value>
                </property>
                <!-- nn2的http通訊地址 -->
                <property>
                    <name>dfs.namenode.http-address.ns1.nn2</name>
                    <value>slave02.example.com:50070</value>
                </property>
                <!-- 指定NameNode的元資料在JournalNode上的存放位置 -->
                <property>
                    <name>dfs.namenode.shared.edits.dir</name>
                    <value>qjournal://slave01.example.com:8485;slave02.example.com:8485;slave03.example.com:8485/ns1</value>
                </property>
                <!-- 指定JournalNode在本地磁碟存放資料的位置 -->
                <property>
                    <name>dfs.journalnode.edits.dir</name>
                    <value>/sparkLearning/hadoop-2.4.1/journal</value>
                </property>
                <!-- 開啟NameNode失敗自動切換 -->
                <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>
                <!-- 使用sshfence隔離機制時需要ssh免登陸 -->
                <property>
                    <name>dfs.ha.fencing.ssh.private-key-files</name>
                    <value>/home/hadoop/.ssh/id_rsa</value>
                </property>
                <!-- 配置sshfence隔離機制超時時間 -->
                <property>
                    <name>dfs.ha.fencing.ssh.connect-timeout</name>
                    <value>30000</value>
                </property>
            </configuration>

(4)修改mapred-site.xml檔案

[root@slave01 hadoop]# cp mapred-site.xml.template mapred-site.xml

vim mapred-site.xml修改檔案內容如下:

 <configuration>
                    <!-- 指定mr框架為yarn方式 -->
                    <property>
                        <name>mapreduce.framework.name</name>
                        <value>yarn</value>
                    </property>
 </configuration>    

(6)修改yarn-site.xml檔案

<?xml version="1.0"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->
<configuration>
                        <!-- 開啟RM高可靠 -->
                        <property>
                           <name>yarn.resourcemanager.ha.enabled</name>
                           <value>true</value>
                        </property>
                        <!-- 指定RM的cluster id -->
                        <property>
                           <name>yarn.resourcemanager.cluster-id</name>
                           <value>SparkCluster</value>
                        </property>
                        <!-- 指定RM的名字 -->
                        <property>
                           <name>yarn.resourcemanager.ha.rm-ids</name>
                           <value>rm1,rm2</value>
                        </property>
                        <!-- 分別指定RM的地址 -->
                        <property>
                           <name>yarn.resourcemanager.hostname.rm1</name>
                           <value>slave01.example.com</value>
                        </property>
                        <property>
                           <name>yarn.resourcemanager.hostname.rm2</name>
                           <value>slave02.example.com</value>
                        </property>
                        <!-- 指定zk叢集地址 -->
                        <property>
                           <
            
           

相關推薦

Spark修煉——Spark入門精通第一 Spark 1.5.0叢集搭建

作者:周志湖 網名:搖擺少年夢 微訊號:zhouzhihubeyond 本節主要內容 作業系統環境準備 Hadoop 2.4.1叢集搭建 Spark 1.5.0 叢集部署 注:在利用CentOS 6.5作業系統安裝spark 1.5叢集過程中,

Spark修煉——Spark入門精通第十四 Spark Streaming 快取、Checkpoint機制

作者:周志湖 微訊號:zhouzhihubeyond 主要內容 Spark Stream 快取 Checkpoint 案例 1. Spark Stream 快取 通過前面一系列的課程介紹,我們知道DStream是由一系列的RDD構成的,

Spark修煉——Spark入門精通第十六 Spark Streaming與Kafka

作者:周志湖 主要內容 Spark Streaming與Kafka版的WordCount示例(一) Spark Streaming與Kafka版的WordCount示例(二) 1. Spark Streaming與Kafka版本的WordCount示例

Spark修煉——Spark入門精通第十 Spark SQL案例實戰

作者:周志湖 放假了,終於能抽出時間更新部落格了……. 1. 獲取資料 本文通過將github上的Spark專案git日誌作為資料,對SparkSQL的內容進行詳細介紹 資料獲取命令如下: [[email protected] spa

Spark修煉——Spark入門精通第十三節 Spark Streaming—— Spark SQL、DataFrame與Spark Streaming

主要內容 Spark SQL、DataFrame與Spark Streaming 1. Spark SQL、DataFrame與Spark Streaming import org.apache.spark.SparkConf import org

Spark修煉——Spark入門精通第十五 Kafka 0.8.2.1 叢集搭建

作者:周志湖 微訊號:zhouzhihubeyond 本節為下一節Kafka與Spark Streaming做鋪墊 主要內容 1.kafka 叢集搭建 1. kafka 叢集搭建 kafka 安裝與配置 tar -zxvf kafka_2

Spark修煉——Spark入門精通第九 Spark SQL執行流程解析

1.整體執行流程 使用下列程式碼對SparkSQL流程進行分析,讓大家明白LogicalPlan的幾種狀態,理解SparkSQL整體執行流程 // sc is an existing SparkContext. val sqlContext = new or

Spark修煉——Spark入門精通第六 Spark程式設計模型三)

作者:周志湖 網名:搖擺少年夢 微訊號:zhouzhihubeyond 本節主要內容 RDD transformation(續) RDD actions 1. RDD transformation(續) (1)repartitionAnd

Spark修煉——Spark入門精通第十 Spark Streaming一)

本節主要內容 Spark流式計算簡介 Spark Streaming相關核心類 入門案例 1. Spark流式計算簡介 Hadoop的MapReduce及Spark SQL等只能進行離線計算,無法滿足實時性要求較高的業務需求,例如實時推薦、實時

Android開發GreenDao

1、資料庫升級 原理:建立臨時表-->刪除原表-->建立新表-->複製臨時表資料到新表並刪除臨時表;這樣就實現資料庫表的更新了 新建一個數據庫更新輔助類 MigrationHelper public class MigrationHelper {

Spark修煉高階——Spark原始碼閱讀第十三節 Spark SQLSQLContext一)

作者:周志湖 1. SQLContext的建立 SQLContext是Spark SQL進行結構化資料處理的入口,可以通過它進行DataFrame的建立及SQL的執行,其建立方式如下: //sc為SparkContext val sqlContext

Spark修煉高階——Spark原始碼閱讀第十二 Spark SQL 處理流程分析

作者:周志湖 下面的程式碼演示了通過Case Class進行表Schema定義的例子: // sc is an existing SparkContext. val sqlContext = new org.apache.spark.sql.SQLConte

Spark修煉高階——Spark原始碼閱讀第八節 Task執行

Task執行 在上一節中,我們提到在Driver端CoarseGrainedSchedulerBackend中的launchTasks方法向Worker節點中的Executor傳送啟動任務命令,該命令的接收者是CoarseGrainedExecutorBack

Spark修煉基礎——Linux大資料開發基礎第十三節Shell程式設計入門五)

本節主要內容 while expression do command command done (1)計數器格式 適用於迴圈次數已知或固定時 root@sparkslave02:~/ShellLearning/Chapter13# vim w

Spark修煉高階——Spark原始碼閱讀第一 Spark應用程式提交流程

作者:搖擺少年夢 微訊號: zhouzhihubeyond spark-submit 指令碼應用程式提交流程 在執行Spar應用程式時,會將spark應用程式打包後使用spark-submit指令碼提交到Spark中執行,執行提交命令如下: root@s

無業務不伸縮二,雲監控搭配SLB及ESS

雲端計算ESS彈性伸縮課程 無業務不伸縮之二,雲監控搭配SLB及ESS(進階篇) 連載雲端計算文章主題 後續的連載如下1、 無業務不伸縮之一,雲端計算有ESS2、 無業務不伸縮之二,雲監控搭配SLB及ESS3、無互動不加速,雲端計算有CDN4、無對像不儲存,雲端計算有OSS5、無檔案不儲存,雲端計算有”

史上最簡單MySQL教程詳解儲存引擎介紹及預設引擎設定

什麼是儲存引擎? 與其他資料庫例如Oracle 和SQL Server等資料庫中只有一種儲存引擎不同的是,MySQL有一個被稱為“Pluggable Storage Engine Architecture”(可替換儲存引擎架構)的特性,也就意味著My

hadoopmapreduce詳解

上篇文章hadoop之mapreduce詳解(基礎篇)我們瞭解了mapreduce的執行過程和shuffle過程,本篇文章主要從mapreduce的元件和輸入輸出方面進行闡述。 一、mapreduce作業控制模組以及其他功能 mapreduce包括作業控制模組,程式設計模型,資料處理引擎。這裡我們重點闡述

Angular實戰使用NG-ZORRO建立一個企業級中後臺框架

前言:   上一篇文章我們講了如何在建立的Angular專案中快速引入ng-zorro-antd企業中臺元件庫,並且快速構建後臺管理頁面框架模板。這一章主要介紹的是如何在建立好的後臺管理頁面框架的快速生成NG-ZORRO相關的元件,並且介紹Angular相關目錄結構、生命週期函式,路由配置和使用相關知識點,以

Mysql 入門,增刪改查

bsp com pre sco height name 數據 mysql from 主要已以下兩個表students與students_score,進行數據的增刪改查操作! 1、SELECT 1)select id,tel from students