基于docker的Spark分布式搭建

docker spark


1.準(zhǔn)備工作

三個(gè) docker 容器缤灵,操作系統(tǒng)為:Ubuntu 14.04

ip 機(jī)器名稱 集群節(jié)點(diǎn) 登錄用戶
17.172.192.108 Hadoop1 master/slave tank
17.172.192.123 Hadoop2 slave tank
17.172.192.124 Hadoop3 slave tank

2.安裝jdk并配置環(huán)境變量

1)解壓縮文件
tar -zxvf jdk-8u141-linux-x64.tar.gz /usr/local/java
2)配置環(huán)境變量
  • 打開 vi
sudo vi /etc/profile
  • 在打開的profile末尾添加環(huán)境變量
export JAVA_HOME=/usr/local/java/jdk.1.8.0_141
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=$PATH:${JAVA_HOME}/bin
  • 讓文件生效
source /etc/profile
  • 驗(yàn)證 Java 環(huán)境配置
java -version

3.安裝和配置Scala

1)下載Scala安裝包
wget https://downloads.lightbend.com/scala/2.12.7/scala-2.12.7.tgz
2)解壓
tar -zxvf scala-2.12.7.tgz
3)復(fù)制到/usr下面
docker mv scala-2.12.7 /usr
4)配置環(huán)境變量
vi /etc/profile
export SCALA_HOME=/usr/scala-2.12.7
export PATH=$SCALA_HOME/bin:$PATH
5)保存后刷新配置
source /etc/profile
6)驗(yàn)證是否配置成功
scala -version

4.配置SSH免密登錄

1)生成ssh秘鑰
ssh -keygen
2) 將秘鑰導(dǎo)入authorized_keys,配置成免密碼登錄本地
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
3)測(cè)試免密碼登錄本機(jī)
ssh localhost

注:docker容器之間通信爆安,不用防火墻

5.安裝 Hadoop

1)解壓縮下載之后的hadoop文件
tar -zxvf hadoop-2.7.3.tar.gz /usr/local/hadoop/
2) 配置core-site.xml
 <!-- 指定HDFS老大(namenode)的通信地址 -->
    <property>
            <name>fs.default.name</name>
            <value>hdfs://hadoop1:9000</value><!-- 主節(jié)點(diǎn)寫localhost 從節(jié)點(diǎn)寫hadoop1 -->
    </property>
    <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/tank/hadoop/tmp</value>
    </property>
3)配置hdfs-site.xml
<configuration>
        <property> <!--此項(xiàng)非必須配-->
                <name>dfs.namenode.secondary.http-address</name>
                <value>master:50900</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>/home/tank/hadoop/hdfs/name</value>
        </property>  
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>/home/tank/hadoop/hdfs/data</value>
        </property>
        <property>
                <name>dfs.namenode.handler.count</name>
                <value>10</value><!--namenode通信線程數(shù)氢烘,太小會(huì)導(dǎo)致通信阻塞-->
        </property>
        <property>
                <name>dfs.datanode.du.reserved</name>
                <value>10737418240</value><!--硬盤保留空間怀偷,10G,單位字節(jié)-->
        </property>
</configuration>
4)配置mapred-site.xml
<configuration>
        <property>
            <name>mapred.child.java.opts</name><!--map或red的JVM堆大小播玖,應(yīng)<=mapreduce.*.memory.mb-->
            <value>-Xmx1000m</value>
    </property>
        <property>
            <name>mapreduce.map.memory.mb</name><!--map任務(wù)容器的內(nèi)存大小-->
            <value>1024MB</value>
    </property>
        <property>
            <name>mapreduce.reduce.memory.mb</name><!--reduce任務(wù)容器的內(nèi)存大小-->
            <value>1024MB</value>
    </property>
        <property>
            <name>mapreduce.job.reduce.slowstart.completedmaps</name><!--調(diào)度reduce之前map完成進(jìn)度-->
            <value>0.5</value>
    </property>
        <property>
            <name>mapreduce.jobtracker.taskscheduler</name><!--任務(wù)調(diào)度算法,默認(rèn)FIFO-->
            <value>org.apache.hadoop.mapred.JobQueueTaskScheduler</value>
    </property>
        <property>
            <name>mapreduce.map.maxattempts</name><!--map最大嘗試次數(shù)-->
            <value>3</value>
    </property>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
    </property>
    <property>
            <name>mapreduce.jobhistory.address</name>
        <value>hadoop1:10020</value>
    </property>
    <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>hadoop1:19888</value>
    </property>
    <property>
            <name>mapred.job.tracker</name>
            <value>hadoop1:9001</value>
    </property>
</configuration>
5)配置yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoop1</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>  <!-- 逗號(hào)分隔的輔助服務(wù)列表-->
        </property>
        <property>
                <name>yarn.nodemanager.resource.memory-mb</name>
                <value>8192</value>  <!-- 可分配給容器的物理內(nèi)存總和-->
        </property>
        <property>
                <name>yarn.scheduler.minimum-allocation-mb</name>
                <value>1024</value>  <!-- 啟動(dòng)容器需要向資源管理器申請(qǐng)的最小內(nèi)存量-->
        </property>
        <property>
                <name>yarn.scheduler.maxmum-allocation-mb</name>
                <value>8192</value>  <!-- 啟動(dòng)容器需要向資源管理器申請(qǐng)的最大內(nèi)存量-->
        </property>
        <property>
            <name>yarn.log-aggregation-enable</name>    
        <value>true</value>    
       </property> 
</configuration>
6)修改hadoop-env.sh,配置jdk路徑
export JAVA_HOME=/usr/local/java/jdk1.8.0_141
7)添加hadoop環(huán)境變量
sudo vi /etc/profile
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.3
export PATH=$PATH:${HADOOP_HOME}/bin
8)在集群所有節(jié)點(diǎn)進(jìn)行前15步操作,并進(jìn)行ssh互相免密碼登錄設(shè)置
  • 修改各個(gè)節(jié)點(diǎn)的/etc/hosts文件,添加
17.172.192.108 hadoop1
17.172.192.123 hadoop2
17.172.192.124 hadoop3
  • 將主節(jié)點(diǎn)的id_rsa.pub遠(yuǎn)程發(fā)送至所有葉子節(jié)點(diǎn),命名為master.pub
rcp id_rsa.pub hadoop@hadoop2:~/.ssh/master.pub
rcp id_rsa.pub hadoop@hadoop3:~/.ssh/master.pu
  • 將主節(jié)點(diǎn)的master.pub追加到所有葉子節(jié)點(diǎn)的authorized_keys文件中椎工,最終結(jié)果為主節(jié)點(diǎn)可以免密碼登錄到所有葉子節(jié)點(diǎn)
9)配置集群從節(jié)點(diǎn)

修改$HADOOP_HOME/etc/hadoop目錄下的slaves文件,改為一下內(nèi)容蜀踏,代表三臺(tái)機(jī)器都作為從節(jié)點(diǎn)參與任務(wù)

hadoop1
hadoop2
hadoop3
10)啟動(dòng)hadoop集群
cd $HADOOP_HOME
sbin/start-all.sh
11)查看集群運(yùn)行狀態(tài)
jps
NodeManager
Jps
NameNode
ResourceManager
SecondaryNameNode
DataNode
12)啟動(dòng)jobhistory進(jìn)程
sbin/mr-jobhistory-daemon.sh start historyserver
jps
NodeManager
Jps
NameNode
ResourceManager
JobHistoryServer
SecondaryNameNode
DataNode
JobHistoryServer
//子節(jié)點(diǎn)上的進(jìn)程
Jps
NodeManage
DataNode

6.Spark2.1.0完全分布式環(huán)境搭建

以下操作都在Master節(jié)點(diǎn)(Hadoop1)進(jìn)行

1)下載二進(jìn)制包spark-2.3.2-bin-hadoop2.7.tgz
2)解壓并移動(dòng)到相應(yīng)目錄维蒙,命令如下:
tar -zxvf spark-2.3.2-bin-hadoop2.7.tgz
mv spark-2.3.2-bin-hadoop2.7.tgz /opt
3)修改相應(yīng)的配置文件
  • /etc/profie
export SPARK_HOME=/opt/spark-2.3.2-bin-hadoop2.7/
export PATH=$PATH:$SPARK_HOME/bin
  • 復(fù)制spark-env.sh.template成spark-env.sh
cp spark-env.sh.template spark-env.sh
  • 修改$SPARK_HOME/conf/spark-env.sh,添加如下內(nèi)容:
export JAVA_HOME=/usr/local/jdk1.8.0_141
export SCALA_HOME=/usr/scala-2.12.7
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.3
export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-2.7.3/etc/hadoop
export SPARK_MASTER_IP=172.17.192.108
export SPARK_MASTER_HOST=172.17.192.108
export SPARK_LOCAL_IP=172.17.192.108
export SPARK_WORKER_MEMORY=1g
export SPARK_WORKER_CORES=2
export SPARK_HOME=/opt/spark-2.3.2-bin-hadoop2.7
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/hadoop-2.7.3/bin/hadoop classpath)
  • 復(fù)制slaves.template成slaves
cp slaves.template slaves
5)修改Slave1和Slave2配置

在Slave1和Slave2上分別修改/etc/profile果覆,增加Spark的配置颅痊,過程同Master一樣。
在Slave1和Slave2修改$SPARK_HOME/conf/spark-env.sh局待,將export > >SPARK_LOCAL_IP=172.17.192.108改成Slave1和Slave2對(duì)應(yīng)節(jié)點(diǎn)的IP斑响。

6)在Master節(jié)點(diǎn)啟動(dòng)集群
/opt/spark-2.3.2-bin-hadoop2.7/sbin/start-all.sh
7)查看集群是否啟動(dòng)成功
jps

Master在Hadoop的基礎(chǔ)上新增了:
Master
Slave在Hadoop的基礎(chǔ)上新增了:
Worker

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市钳榨,隨后出現(xiàn)的幾起案子舰罚,更是在濱河造成了極大的恐慌,老刑警劉巖薛耻,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件营罢,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡饼齿,警方通過查閱死者的電腦和手機(jī)愤钾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來候醒,“玉大人能颁,你說我怎么就攤上這事〉挂” “怎么了伙菊?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我镜硕,道長(zhǎng)运翼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任兴枯,我火速辦了婚禮血淌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘财剖。我一直安慰自己悠夯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布躺坟。 她就那樣靜靜地躺著沦补,像睡著了一般。 火紅的嫁衣襯著肌膚如雪咪橙。 梳的紋絲不亂的頭發(fā)上夕膀,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音美侦,去河邊找鬼产舞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛菠剩,可吹牛的內(nèi)容都是我干的庞瘸。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼赠叼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼擦囊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嘴办,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瞬场,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后涧郊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贯被,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年妆艘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了彤灶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡批旺,死狀恐怖幌陕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情汽煮,我是刑警寧澤搏熄,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布棚唆,位于F島的核電站,受9級(jí)特大地震影響心例,放射性物質(zhì)發(fā)生泄漏宵凌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一止后、第九天 我趴在偏房一處隱蔽的房頂上張望瞎惫。 院中可真熱鬧,春花似錦译株、人聲如沸瓜喇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)欠橘。三九已至矩肩,卻和暖如春现恼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背黍檩。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工叉袍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刽酱。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓喳逛,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親棵里。 傳聞我的和親對(duì)象是個(gè)殘疾皇子润文,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 最近在學(xué)習(xí)大數(shù)據(jù)技術(shù),朋友叫我直接學(xué)習(xí)Spark殿怜,英雄不問出處典蝌,菜鳥不問對(duì)錯(cuò),于是我就開始了Spark學(xué)習(xí)头谜。 為什...
    Plokmijn閱讀 26,574評(píng)論 6 26
  • 摘要:大數(shù)據(jù)門檻較高骏掀,僅僅環(huán)境的搭建可能就要耗費(fèi)我們大量的精力,本文總結(jié)了作者是如何搭建大數(shù)據(jù)環(huán)境的(單機(jī)版和集群...
    楊赟快跑閱讀 15,046評(píng)論 3 65
  • 本博客詳細(xì)介紹Standalone模式下的Spark集群的部署柱告。 1.軟件硬件環(huán)境 主機(jī)操作系統(tǒng):三臺(tái)為實(shí)驗(yàn)室服務(wù)...
    Michaelhbjian閱讀 840評(píng)論 2 4
  • --------"道路是曲折的,前途是光明的截驮。"最近又涉及到了hadoop以及spark的安裝,之前課題設(shè)計(jì)中有要...
    九七學(xué)姐閱讀 3,049評(píng)論 3 5
  • Mapreduce+Hive+Spark平臺(tái)搭建 說明 平臺(tái)搭建成功后际度,使用Scala語(yǔ)言進(jìn)行算法設(shè)計(jì)和應(yīng)用的開發(fā)...
    澤澤馥澤澤閱讀 5,105評(píng)論 4 6