CentOS6安裝各類大數據軟件 第一章:各個軟件版本介紹html
CentOS6安裝各類大數據軟件 第二章:Linux各個軟件啓動命令java
CentOS6安裝各類大數據軟件 第三章:Linux基礎軟件的安裝node
CentOS6安裝各類大數據軟件 第四章:Hadoop分佈式集羣配置mysql
CentOS6安裝各類大數據軟件 第五章:Kafka集羣的配置sql
CentOS6安裝各類大數據軟件 第六章:HBase分佈式集羣的配置shell
CentOS6安裝各類大數據軟件 第七章:Flume安裝與配置數據庫
CentOS6安裝各類大數據軟件 第八章:Hive安裝和配置apache
CentOS6安裝各類大數據軟件 第九章:Hue大數據可視化工具安裝和配置服務器
CentOS6安裝各類大數據軟件 第十章:Spark集羣安裝和部署架構
下載Spark安裝包地址:http://spark.apache.org/downloads.html
注:本次學習過程當中咱們選用比較新的spark版本spark2.2.0
上述方式獲取Spark安裝包的方式是使用官方編譯好的安裝包來進行安裝的.官方通常只提供有限的幾個匹配hadoop版本的編譯包.因此,若是未來你須要特地匹配你本身的hadoop版本,這個時候就須要你本身去編譯spark源碼。通常狀況下不建議本身編譯源碼,使用官方提供的便可。
#解壓安裝包
tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz -C /export/servers/
#對解壓後的文件夾進行重命名
mv spark-2.2.0-bin-hadoop2.7/ spark-2.2.0
在/export/servers/spark-2.2.0/conf配置文件目錄下進行配置文件的修改
# 步驟一:將spark-env.sh.template這個文件從新命名爲spark-env.sh
mv spark-env.sh.template spark-env.sh
# 步驟二:修改spark-env.sh這個配置文件,新增以下配置內容便可:
#設置JAVA_HOME目錄
export JAVA_HOME=/export/servers/jdk1.8.0_144
#設置SCALA_HOME目錄
export SCALA_HOME=/export/servers/scala-2.11.8
#設置SPARK主機的地址
export SPARK_MASTER_HOST=node01.ouyang.com
#設置SPARK主機的端口地址
export SPARK_MASTER_PORT=7077
#設置worker節點的內存大小
export SPARK_WORKER_MEMORY=1g
#設置HDFS文件系統的配置文件的位置
export HADOOP_CONF_DIR=/export/servers/hadoop-2.7.4/etc/hadoop
# 步驟一:將slaves.template這個文件從新命名爲slaves:
mv slaves.template slaves
# 步驟二:修改slaves配置文件中的內容,在裏面添加worker節點的地址
# 配置從節點的地址
spark-node02.ouyang.com
spark-node03.ouyang.com
打開/etc/profile,在該文件中添加以下內容:
#配置Spark環境變量
export SPARK_HOME=/opt/modules/spark-2.2.0
export PATH=$SPARK_HOME/bin:$PATH
export SPARK_HOME PATH
使用scp命令,將spark的安裝目錄拷貝只遠程其餘節點
#拷貝spark安裝目錄道node02機器上
scp -r spark-2.2.0/ spark-node02.ouyang.com:$PWD
#拷貝spark安裝目錄到node03機器上
scp -r spark-2.2.0/ spark-node03. ouyang.com:$PWD
#拷貝/etc/profile至node02機器上
scp /etc/profile spark-node02. ouyang.com:/etc/
#拷貝/etc/profile至node03機器上
scp /etc/profile spark-node03. ouyang.com:/etc/
注:在每一臺機器上使用source /etc/profile 讓配置生效
啓動spark命令:在spark的跟目錄下,執行以下命令
./sbin/start-all.sh
中止spark命令:
./sbin/stop-all.sh
在各個節點使用jps命令進行查看,若是在節點1有master進程,在節點2和節點3上有worker進程,說明Spark集羣啓動成功。
訪問地址:http://node01.ouyang.com:8080/#/login
界面以下:
在任意一個節點上的Spark安裝目錄執行以下命令: ./bin/spark-shell
啓動成功以後,界面以下:
若是spark-env.sh配置文件中配置了SPARK_HADOOP_CONF這個配置選項,在使用spark-shell進行驗證spark集羣是否啓動成功的時候,須要提早開啓HDFS文件系統
Spark Standalone集羣是Mater-Slaves架構的集羣模式,和大部分的Master-Slaves 結構集羣同樣,存在着 Master 單點故障的問題。如何解決這個單點故障的問題,Spark 提供了兩種方案:
第一種:基於文件系統的單點恢復;
第二種:基於zookeeper的Standby Master(Standby Masters with Zookeeper)
咱們通常使用第二種方案,Spark HA高可用集羣部署使用起來很簡單,首先須要搭建一個Zookeeper集羣,而後啓動Zookeeper集羣,最後在不一樣的節點上啓動Master便可。
在spark-env.sh配置文件中,註釋掉單點主機Master地址,而後添加Spark HA高可用部署的地址
#設置SPARK主機的地址 註釋掉此項
#export SPARK_MASTER_HOST=spark-node01.ouyang.com
#添加Spark高可用HA部署
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=spark-node01.ouyang.com:2181,spark-node02.ouyang.com:2181,spark-node03.ouyang.com:2181 -Dspark.deploy.zookeeper.dir=/spark"
參數說明:
在節點的spark安裝目錄下的conf目錄執行以下命令
#將spark-env.sh拷貝至節點02機器上
scp spark-env.sh spark-node02.ouyang.com:$PWD
#將spark-env.sh拷貝至節點03機器上
scp spark-env.sh spark-node03.ouyang.com:$PWD
在普通模式下啓動spark集羣,只須要在主機上面執行start-all.sh就能夠了.在高可用模式下啓動Spark集羣,首先須要在任意一臺節點上啓動start-all.sh命令.而後在另一臺節點上單獨啓動master.命令start-master.sh在節點一執行命令以下:
./sbin/start-all.sh
在節點二執行命令以下:
./sbin/start-master.sh
訪問節點一和節點二的WEB UI界面:http://node01.ouyang.com:8080
會發現節點一的master是alive狀態,節點二是standby狀態。
此時手動殺死節點一的master,過1~2分鐘,會發現節點二的master會變成aliver狀態,節點一會顯示不能鏈接。
# 啓動腳本 ssh node01.ouyang.com "source /etc/profile;nohup sh ${SPARK_HOME}/sbin/start-all.sh >/dev/null 2>&1 &" sleep 3 ssh node02.ouyang.com "source /etc/profile;nohup sh ${SPARK_HOME}/sbin/start-master.sh >/dev/null 2>&1 &" # 中止腳本 ssh node01.ouyang.com "source /etc/profile;nohup sh ${SPARK_HOME}/sbin/stop-all.sh >/dev/null 2>&1 &" ssh node02.ouyang.com "source /etc/profile;nohup sh ${SPARK_HOME}/sbin/stop-master.sh >/dev/null 2>&1 &"
- 修改log4j.properties
- 安裝Hadoop
- 安裝Spark Standalone
sbin/start-all.sh
客戶端運行:
./bin/spark-submit --class org.apache.spark.examples.SparkPi --deploy-mode client --master spark://spark-node04.ouyang.com:7077 --executor-memory 1G --total-executor-cores 2 examples/jars/spark-examples_2.11-2.2.0.jar 10
集羣運行:
./bin/spark-submit --class org.apache.spark.examples.SparkPi --deploy-mode cluster --master spark://spark-node11.ouyang.com:7077 --executor-memory 1G --total-executor-cores 2 examples/jars/spark-examples_2.11-2.2.0.jar 10
在Yarn上運行:
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --executor-memory 6G --num-executors 4 examples/jars/spark-examples_2.11-2.2.0.jar 10
#再spark的conf目錄下的hive-site.xml文件中添加以下內容 <property> <name>hive.metastore.uris</name> <value>thrift://node01.ouyang.com:9083</value> </property> # 再將spark的conf目錄下的該文件發送到其餘的spark節點。 scp hive-site.xml node02.ouyang.com:$PWD
cp /export/servers/hive/lib/mysql-connector-java-5.1.37.jar /export/servers/spark-2.2.0/jars/
# 並將該jar包發送到其餘的節點上:
scp mysql-connector-java-5.1.37.jar node02.ouyang.com:$PWD
在spark的conf目錄下的spark-evn.sh文件中是否有下述配置:
即要spark能訪問hdfs集羣。
#啓動mysql服務(hive依賴於hdfs和mysql,表的元數據存儲在mysql中,具體數據存儲在hdfs中)
service mysqld restart
#在hive的bin目錄下啓動hive的metastore服務(在spark的hive-site.xml添加的服務)
bin/hive --service metastore
create table if not exists test(userid string,username string) row format delimited fields terminated by ' ' stored as textfile ;
--加載數據
load data local inpath '/opt/datas/student.txt' into table test;
#啓動spar-shell服務(在spark的bin目錄下,執行以下命令)
./spark-shell
#執行spark sql語句,對hive中的表進行查詢
spark.sql("select * from student").show()
// 在spark-shell中,查詢到hive表的數據,並將數據寫入到一個DataFarme中 val df = spark.sql("select * from student")
// 將這個DateFarme的數據寫入的MySQL中 df.write.format("jdbc").option("url", "jdbc:mysql://node01.ouyang.com:3306/test").option("dbtable", "test1").option("user", "root").option("password", "root").save()
將數據寫入的MySQL的test數據庫,並從新建立一個test1表來存儲。
沒有報錯表示執行成功。
在spark的bin目錄下,執行以下命令:
./spark-sql
此時,能夠跟操做MySQL數據庫同樣來操做hive中的表
#顯示全部的表
show tables;
#顯示全部的庫
show databases;
#查詢test
select * from test;
當對Spark SQL和Hive進行集成後,在spark的bin目錄下啓動spark sql服務,此時進行操做,雖然是直接使用sql語句,就能夠經過spark sql操做hive中的數據,但會有不少的日誌,此時能夠啓動一個服務,能夠對數據進行友好顯示。
參照官網:http://spark.apache.org/docs/2.2.0/sql-programming-guide.html#running-the-thrift-jdbcodbc-server
在spark的sbin目錄下執行以下命令:
./start-thriftserver.sh
啓動以後能夠經過訪問4040端口查看到啓動的spark job,以下圖所示:
在spark的bin目錄下執行以下命令:
./beeline
鏈接上beeline後執行以下命令:
!connect jdbc:hive2://node01.ouyang.com:10000
輸入hive的用戶名和密碼便可鏈接
#上傳以下jar包到spark的jars目錄下(全部spark的節點的該目錄下都要上傳):
此時,便可以在spark-sql中查詢到hive中的數據存儲在hbase中的表了。