Apache Spark 簡介java
Apache Spark 是專爲大規模數據處理而設計的快速通用的計算引擎。Spark是UC Berkeley AMP lab (加州大學伯克利分校的AMP實驗室)所開源的類Hadoop MapReduce的通用並行框架,擁有Hadoop MapReduce所具備的優勢;但不一樣於MapReduce的是Job中間輸出結果能夠保存在內存中,從而再也不須要讀寫HDFS,所以Spark能更好地適用於數據挖掘與機器學習等須要迭代的MapReduce的算法。node
Spark 是一種與 Hadoop 類似的開源集羣計算環境,可是二者之間還存在一些不一樣之處,這些有用的不一樣之處使 Spark 在某些工做負載方面表現得更加優越,換句話說,Spark 啓用了內存分佈數據集,除了可以提供交互式查詢外,它還能夠優化迭代工做負載。web
Spark 是在 Scala 語言中實現的,它將 Scala 用做其應用程序框架。與 Hadoop 不一樣,Spark 和 Scala 可以緊密集成,其中的 Scala 能夠像操做本地集合對象同樣輕鬆地操做分佈式數據集。算法
儘管建立 Spark 是爲了支持分佈式數據集上的迭代做業,可是實際上它是對 Hadoop 的補充,能夠在 Hadoop 文件系統中並行運行。經過名爲 Mesos 的第三方集羣框架能夠支持此行爲。Spark 由加州大學伯克利分校 AMP 實驗室 (Algorithms, Machines, and People Lab) 開發,可用來構建大型的、低延遲的數據分析應用程序。shell
準備工做1 環境apache
JDK:1.8 Spark-2.2.0 Hadoop Release:2.7.4 centos:7.3
JDK:1.8 Spark-2.2.0 Hadoop Release:2.7.4 centos:7.3
主機名 | ip地址 | 安裝服務 |
---|---|---|
spark-master | 192.168.252.121 | jdk、hadoop、spark、scala |
spark-slave01 | 192.168.252.122 | jdk、hadoop、spark |
spark-slave02 | 192.168.252.123 | jdk、hadoop、spark |
2 依賴環境segmentfault
Spark 是在 Scala 語言中實現的,它將 Scala 用做其應用程序框架。與 Hadoop 不一樣,Spark 和 Scala 可以緊密集成,其中的 Scala 能夠像操做本地集合對象同樣輕鬆地操做分佈式數據集。安裝 Scala:centos
Scala併發
Scala-2.13.0 安裝及配置(https://link.juejin.im/?target=https%3A%2F%2Fsegmentfault.com%2Fa%2F1190000011314775) 框架
Hadoop
Hadoop-2.7.4 集羣快速搭建(https://link.juejin.im/?target=https%3A%2F%2Fsegmentfault.com%2Fa%2F1190000011266759)
安裝
1 下載解壓
su hadoopcd /home/hadoop/ wget https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.2.0/spark-2.2.0-bin-hadoop2.7.tgz tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz mv spark-2.2.0-bin-hadoop2.7 spark-2.2.0
su hadoopcd /home/hadoop/ wget https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.2.0/spark-2.2.0-bin-hadoop2.7.tgz tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz mv spark-2.2.0-bin-hadoop2.7 spark-2.2.0
2 環境變量
若是是對全部的用戶都生效就修改vi /etc/profile
文件若是隻針對當前用戶生效就修改 vi ~/.bahsrc
文件
sudo vi /etc/profile
sudo vi /etc/profile
#sparkexport PATH=${SPARK_HOME}/bin:$PATHexport SPARK_HOME=/home/hadoop/spark-2.2.0/
#sparkexport PATH=${SPARK_HOME}/bin:$PATHexport SPARK_HOME=/home/hadoop/spark-2.2.0/
使環境變量生效,運行 source /etc/profile
使/etc/profile
文件生效
3 修改配置
cd /home/hadoop/spark-2.2.0/conf mv spark-env.sh.template spark-env.sh vi spark-env.sh #javaexport JAVA_HOME=/lib/jvm#Spark主節點的IPexport SPARK_MASTER_IP=192.168.252.121#Spark主節點的端口號export SPARK_MASTER_PORT=7077
cd /home/hadoop/spark-2.2.0/conf mv spark-env.sh.template spark-env.sh vi spark-env.sh #javaexport JAVA_HOME=/lib/jvm#Spark主節點的IPexport SPARK_MASTER_IP=192.168.252.121#Spark主節點的端口號export SPARK_MASTER_PORT=7077
簡單介紹幾個變量
JAVA_HOME:Java安裝目錄
SCALA_HOME:Scala安裝目錄
HADOOP_HOME:hadoop安裝目錄
HADOOP_CONF_DIR:hadoop集羣的配置文件的目錄
SPARK_MASTER_IP:spark集羣的Master節點的ip地址
SPARK_WORKER_MEMORY:每一個worker節點可以最大分配給exectors的內存大小
SPARK_WORKER_CORES:每一個worker節點所佔有的CPU核數目
SPARK_WORKER_INSTANCES:每臺機器上開啓的worker節點的數目
cd /home/hadoop/spark-2.2.0/conf mv slaves.template slaves vi slaves node1 node2 node3
cd /home/hadoop/spark-2.2.0/conf mv slaves.template slaves vi slaves node1 node2 node3
4 配置集羣
進去 spark 安裝目錄 ,打包,併發送,到其餘節點
cd cd /home/hadoop/ tar zcvf spark.tar.gz spark-2.2.0 scp spark.tar.gz hadoop@node2:/home/hadoop/ scp spark.tar.gz hadoop@node3:/home/hadoop/
cd cd /home/hadoop/ tar zcvf spark.tar.gz spark-2.2.0 scp spark.tar.gz hadoop@node2:/home/hadoop/ scp spark.tar.gz hadoop@node3:/home/hadoop/
進去 node1
,node2
節點 解壓
cd /home/hadoop/ tar -zxvf spark.tar.gz
cd /home/hadoop/ tar -zxvf spark.tar.gz
到這裏一步 確保你的每個節點 環境變量夠數
#jdk export JAVA_HOME=/lib/jvm export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${SPARK_HOME}/bin:${SCALA_HOME}/bin:${HADOOP_HOME}/bin:${JAVA_HOME}/bin:$PATH #hadoop export HADOOP_HOME=/home/hadoop/hadoop-2.7.4/ #scala export SCALA_HOME=/lib/scala #spark export SPARK_HOME=/home/hadoop/spark-2.2.0/
#jdk export JAVA_HOME=/lib/jvm export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${SPARK_HOME}/bin:${SCALA_HOME}/bin:${HADOOP_HOME}/bin:${JAVA_HOME}/bin:$PATH #hadoop export HADOOP_HOME=/home/hadoop/hadoop-2.7.4/ #scala export SCALA_HOME=/lib/scala #spark export SPARK_HOME=/home/hadoop/spark-2.2.0/
5 啓動集羣
關閉防火牆
systemctl stop firewalld.service
systemctl stop firewalld.service
cd /home/hadoop/hadoop-2.7.4/sbin ./start-all.sh
cd /home/hadoop/hadoop-2.7.4/sbin ./start-all.sh
cd /home/hadoop/spark-2.2.0/sbin ./start-all.sh
cd /home/hadoop/spark-2.2.0/sbin ./start-all.sh
cd /home/hadoop/spark-2.2.0/bin ./spark-shell
spark 訪問:192.168.252.121:8080
spark-shell 訪問:192.168.252.121:4040