Apache Spark 是專(zhuān)為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的計(jì)算引擎。Spark是UC Berkeley AMP lab (加州大學(xué)伯克利分校的AMP實(shí)驗(yàn)室)所開(kāi)源的類(lèi)Hadoop MapReduce的通用并行框架,Spark,擁有Hadoop MapReduce所具有的優(yōu)點(diǎn);但不同于MapReduce的是Job中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫(xiě)HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的MapReduce的算法。
建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡(luò)程序員、網(wǎng)頁(yè)設(shè)計(jì)師等,應(yīng)用各種網(wǎng)絡(luò)程序開(kāi)發(fā)技術(shù)和網(wǎng)頁(yè)設(shè)計(jì)技術(shù)配合操作的協(xié)同工作。創(chuàng)新互聯(lián)公司專(zhuān)業(yè)提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站制作(企業(yè)站、響應(yīng)式網(wǎng)站開(kāi)發(fā)、電商門(mén)戶(hù)網(wǎng)站)等服務(wù),從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶(hù)體驗(yàn)的提升,我們力求做到極致!Spark 是一種與 Hadoop 相似的開(kāi)源集群計(jì)算環(huán)境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負(fù)載方面表現(xiàn)得更加優(yōu)越,換句話說(shuō),Spark 啟用了內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢(xún)外,它還可以?xún)?yōu)化迭代工作負(fù)載。
Spark 是在 Scala 語(yǔ)言中實(shí)現(xiàn)的,它將 Scala 用作其應(yīng)用程序框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對(duì)象一樣輕松地操作分布式數(shù)據(jù)集。
盡管創(chuàng)建 Spark 是為了支持分布式數(shù)據(jù)集上的迭代作業(yè),但是實(shí)際上它是對(duì) Hadoop 的補(bǔ)充,可以在 Hadoop 文件系統(tǒng)中并行運(yùn)行。通過(guò)名為 Mesos 的第三方集群框架可以支持此行為。Spark 由加州大學(xué)伯克利分校 AMP 實(shí)驗(yàn)室 (Algorithms, Machines, and People Lab) 開(kāi)發(fā),可用來(lái)構(gòu)建大型的、低延遲的數(shù)據(jù)分析應(yīng)用程序。
192.168.174.141 hd1 master
192.168.174.142 hd2 slave1
192.168.174.143 hd3 slave2
useradd hadoop
passwd hadoop
New password:
Retype new password:
授權(quán) root 權(quán)限,在root下面加一條hadoop的hadoop ALL=(ALL) ALL
#修改權(quán)限
chmod 777 /etc/sudoers
vim /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
#恢復(fù)權(quán)限
chmod 440 /etc/sudoers
#進(jìn)入到我的home目錄,
su - hadoop
ssh-keygen -t rsa (連續(xù)按四個(gè)回車(chē))
#執(zhí)行完這個(gè)命令后,會(huì)生成兩個(gè)文件id_rsa(私鑰)、id_rsa.pub(公鑰)
#將公鑰拷貝到要免密登錄的機(jī)器上
ssh-copy-id hd2
ssh-copy-id hd3
#在h2,h3,h4機(jī)器上新建apps目錄用于存放hadoop和spark安裝包
mkdir -p /home/hadoop/apps/hadoop
cd /home/hadoop/apps/hadoop
#在hd1機(jī)器上 下載hadoop2.7.7(hd2,hd3上等在hd1把hadoop的相關(guān)配置改完后scp發(fā)送過(guò)去)
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
tar -zxvf hadoop-2.7.7.tar.gz
#配置環(huán)境變量
sudo vim /etc/profile
#添加HADOOP_HOME
export HADOOP_HOME=/home/hadoop/apps/hadoop/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#刷新環(huán)境變量
source /etc/profile
#查看hadoop版本
hadoop version
#配置Hadoop的JAVA_HOME
cd /home/hadoop/apps/hadoop/hadoop-2.7.7/etc/hadoop
vim hadoop-env.sh
#大概在25行,添加
export JAVA_HOME=/opt/soft/java/jdk1.8.0_73
#修改配置文件
1、修改core-site.xml
vim core-site.xml
fs.defaultFS
hdfs://hd1:9000
hadoop.tmp.dir
file:/home/hadoop/apps/hadoop/hadoop-2.7.7/tmp
2、修改hdfs-site.xml
vim hdfs-site.xml
dfs.namenode.secondary.http-address
hd1:50090
dfs.replication
2
dfs.namenode.name.dir
file:/home/hadoop/apps/hadoop/hadoop-2.7.7/tmp/dfs/name
dfs.datanode.data.dir
file:/home/hadoop/apps/hadoop/hadoop-2.7.7/tmp/dfs/data
3、修改mapred-site.xml
#目錄下沒(méi)有這個(gè)文件,復(fù)制一份出來(lái)
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
hd1:10020
mapreduce.jobhistory.webapp.address
hd1:19888
4、修改yarn-site.xml
vim yarn-site.xml
yarn.resourcemanager.hostname
hd1
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.log-aggregation-enable
true
yarn.log.server.url
http://hd1:19888/jobhistory/logs
??? yarn.nodemanager.pmem-check-enabled
??? false
??? yarn.nodemanager.vmem-check-enabled
??? false
5、修改slaves文件內(nèi)容,該文件指定哪些服務(wù)器節(jié)點(diǎn)是datanode節(jié)點(diǎn),刪除里面的localhost
cd /home/hadoop/apps/hadoop/hadoop-2.7.7/etc/hadoop
vim slaves
hd1
hd2
hd3
#以上所有配置文件已經(jīng)配好的,在hd1上將配置好的hadoop-2.7.7目錄復(fù)制到hd2,hd3相同目錄
cd /home/hadoop/apps/hadoop
scp -r hadoop-2.7.7 hadoop@hd2:/home/hadoop/apps/hadoop/
scp -r hadoop-2.7.7 hadoop@hd3:/home/hadoop/apps/hadoop/
scp /etc/profile root@hd2:/etc/
并在hd2上執(zhí)行:source /etc/profile
scp /etc/profile root@hd3:/etc/
并在hd3上執(zhí)行:source /etc/profile
# 格式化集群操作
#格式化namenode和datanode并啟動(dòng),(在hd1(master)上執(zhí)行就可以了 不需要在(hd2,hd3)slave上執(zhí)行)
hdfs namenode -format
#關(guān)閉所有機(jī)器防火墻
service iptables stop
#啟動(dòng)hadoop集群
#依次執(zhí)行兩個(gè)命令
#啟動(dòng)hdfs
start-dfs.sh
#再啟動(dòng)
start-yarn.sh
#直接用一個(gè)命令也可以
start_all.sh
#驗(yàn)證是否啟動(dòng)成功,缺少以下任一進(jìn)程都表示出錯(cuò)
#在hd1,hd2,hd3分別使用jps命令,可以看到
#hd1中顯示
56310 NameNode
56423 DataNode
56809 ResourceManager
56921 NodeManager
56634 SecondaryNameNode
# hd2中顯示
16455 NodeManager
16348 DataNode
#hd3顯示
13716 DataNode
13823 NodeManager
#查看集群web頁(yè)面
hdfs頁(yè)面:http://hd1:50070/ 或者h(yuǎn)ttp://192.168.174.141:50070/
yarn頁(yè)面:http://hd1:8088/ 或者h(yuǎn)ttp://192.168.174.141:8088/
#停止集群命令:stop_dfs.sh和stop_yarn.sh或者stop_all.sh
以上Hadoop的集群搭建過(guò)程已大功告成!
依賴(lài)環(huán)境:Scala
Spark是使用Scala編寫(xiě)的,用Scala編寫(xiě)Spark任務(wù)可以像操作本地集合對(duì)象一樣操作分布式數(shù)據(jù)集RDD
安裝Scalla和安裝jdk如出一轍的操作,我這里給出scala的下載地址:https://downloads.lightbend.com/scala/2.11.7/scala-2.11.7.tgz
#安裝完scala可以查看版本
scala -version
#這里重點(diǎn)介紹Spark的安裝,相比于hadoop的安裝要簡(jiǎn)單一些,而且步驟類(lèi)似,話不多說(shuō),開(kāi)始!
#在hd1機(jī)器用hadoop用戶(hù)先創(chuàng)建spark的目錄
cd /home/hadoop/apps
mkdir spark
cd spark
#下載spark安裝包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.2.2/spark-2.2.2-bin-hadoop2.7.tgz
#解壓
tar -zxvf /spark-2.2.2-bin-hadoop2.7.tgz
#重命名
mv spark-2.2.2-bin-hadoop2.7 spark-2.2.2
#修改環(huán)境變量
vim /etc/profile
export SPARK_HOME=/home/hadoop/apps/spark/spark-2.2.2
export PATH=$PATH:$SPARK_HOME/bin
#重新加載環(huán)境
source /etc/profile
#修改配置文件
cd /home/hadoop/apps/spark/spark-2.2.2/conf
mv spark-env.sh.template spark-env.sh
vim spark-env.sh
#這里介紹兩個(gè)spark的部署模式,一種是standalone模式,一種是spark on yarn模式,任選一種配置即可
#1、standalone模式
export JAVA_HOME=/opt/soft/java/jdk1.8.0_73
#Spark主節(jié)點(diǎn)的IP
export SPARK_MASTER_IP=hd1
#Spark主節(jié)點(diǎn)的端口號(hào)
export SPARK_MASTER_PORT=7077
#2、spark on yarn配置
export JAVA_HOME=/opt/soft/java/jdk1.8.0_73
export HADOOP_CONF_DIR=/home/hadoop/apps/hadoop/hadoop-2.7.7/etc/hadoop/
#修改slaves文件
cd /home/hadoop/apps/spark/spark-2.2.2/conf
vim slaves
hd2
hd3
#復(fù)制hd1中的spark到hd2和hd3機(jī)器中
cd /home/hadoop/apps/spark
scp -r spark-2.2.2/ hadoop@hd2:/home/hadoop/apps/spark
scp -r spark-2.2.2/ hadoop@hd3:/home/hadoop/apps/spark
#配置環(huán)境變量:分別修改hd2,hd3環(huán)境變量或者直接將hd1上的/etc/profile文件復(fù)制到hd2和hd3上。
vim /etc/profile
export SPARK_HOME=/home/hadoop/apps/spark/spark-2.2.2
export PATH=$PATH:$SPARK_HOME/bin
source /etc/profile
#至此,Spark集群配置完畢,啟動(dòng)Spark集群。
#啟動(dòng)spark集群前要先啟動(dòng)hadoop集群。
#Spark集群?jiǎn)?dòng)
cd /home/hadoop/apps/spark/spark-2.2.2/sbin
./start-all.sh
#測(cè)試Spark集群是否正常啟動(dòng)
#在hd1,hd2,hd3分別執(zhí)行jps,
在hd1中顯示:Master
63124 Jps
56310 NameNode
56423 DataNode
63064 Master
56809 ResourceManager
56921 NodeManager
56634 SecondaryNameNode
在hd2、hd3中顯示:Worker
18148 Jps
16455 NodeManager
16348 DataNode
18079 Worker
#測(cè)試spark-shell和頁(yè)面
cd /home/hadoop/apps/spark/spark-2.2.2/bin
./spark-shell
#訪問(wèn)頁(yè)面地址:
http://hd1:8080/ 或者:http://192.168.174.141:8080/
http://hd1:4040/jobs/ 或者 http://192.168.174.141:4040/jobs/
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。