一、Spark簡介:Saprk可以運行在hadoop的yarn或Mesos,standalone,clude(資源管理框架)上,使用的文件系統可以是HDFS,也可以使Cassandra,HBase等。
二、環境搭建:
如果想學習spark最好的方法是看官方文檔。
spark僅僅是一個通用的負責計算的框架,有很多內置的算子。而在mapreduce中需要在map中提供排序規則
他可以生成一個運行的圖dat,在spark之上還有更高級的應用,spark sql,MLlib,Graphx
spark既可以運行在windows上又可以運行在Unix系列上
spark2.0 廢棄了java7和python2.6使用更高的版本。
spark可以不依賴hadoop
主機名 | ip地址 | Spark程序 |
master.hadoop | 192.168.1.2 | master |
slave1.hadoop | 192.168.1.3 | worker |
slave2.hadoop | 192.168.1.4 | worker |
1、在安裝Spark之前需要安裝Scala
下載scala 2.11.7
wget https://downloads.lightbend.com/scala/2.11.7/scala-2.11.7.tgz
2、解壓Scala壓縮包,並配置環境變量
vi /etc/profile
export SCALA_HOME=/apps/scala-2.11.7
export PATH=$PATH:$SCALA_HOME/bin
source /etc/profile
3、下載spark-2.2.0-bin-hadoop2.7.tgz
wget https://d3kbcqa49mib13.cloudfront.net/spark-2.2.0-bin-hadoop2.7.tgz
4、解壓、並配置環境變量
vi /etc/profile
#添加以下代碼
export SPARK_HOME=/apps/spark-2.2.0
export PATH=$PATH:$SPARK_HOME/bin
5、配置Spark
首先進到配置目錄
[root@master apps]# cd spark-2.2.0/conf/
[root@master conf]# ll
總用量 32
-rw-r--r--. 1 500 500 996 7月 1 2017 docker.properties.template
-rw-r--r--. 1 500 500 1105 7月 1 2017 fairscheduler.xml.template
-rw-r--r--. 1 500 500 2025 7月 1 2017 log4j.properties.template
-rw-r--r--. 1 500 500 7313 7月 1 2017 metrics.properties.template
-rw-r--r--. 1 500 500 865 7月 1 2017 slaves.template
-rw-r--r--. 1 500 500 1292 7月 1 2017 spark-defaults.conf.template
-rwxr-xr-x. 1 500 500 3699 7月 1 2017 spark-env.sh.template
然後分別將spark-env.sh.template和slaves.template改名爲 spark-env.sh,slaves
[root@master conf]# mv spark-env.sh.template spark-env.sh
[root@master conf]# mv slaves.template slaves
在spark-env.sh中添加配置
[root@master conf]# vi spark-env.sh
##添加以下配置
#- JAVA_HOME:Java安裝目錄
export JAVA_HOME=/apps/jdk1.8.0_171
#- SCALA_HOME:Scala安裝目錄
export SCALA_HOME=/apps/scala-2.11.7
#- HADOOP_HOME:hadoop安裝目錄
#export HADOOP_HOME=/apps/hadoop-2.8.0/
#- HADOOP_CONF_DIR:hadoop集羣的配置文件的目錄
#export HADOOP_CONF_DIR=/apps/hadoop-2.8.0/etc/hadoop
#- SPARK_MASTER_IP:spark集羣的Master節點的ip地址
export SPARK_MASTER_IP=master.hadoop
#- SPARK_WORKER_MEMORY:每個worker節點能夠最大分配給exectors的內存大小
export SPARK_WORKER_MEMORY=512m
#- SPARK_WORKER_CORES:每個worker節點所佔有的CPU核數目
export SPARK_WORKER_CORES=2
#- SPARK_WORKER_INSTANCES:每臺機器上開啓的worker節點的數目
export SPARK_WORKER_INSTANCES=1
#指定端口
export SPARK_MASTER_PORT=7077
因爲先不與hadoop整合所以現將有關hadoop的配置註釋掉,現在就可以在單臺機器上啓動了
[root@master spark-2.2.0]# bin/spark-shell
運行結果:
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
18/08/20 21:24:37 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
18/08/20 21:24:42 WARN Utils: Service 'SparkUI' could not bind on port 4040. Attempting port 4041.
18/08/20 21:25:13 WARN ObjectStore: Version information not found in metastore. hive.metastore.schema.verification is not enabled so recording the schema version 1.2.0
18/08/20 21:25:14 WARN ObjectStore: Failed to get database default, returning NoSuchObjectException
18/08/20 21:25:17 WARN ObjectStore: Failed to get database global_temp, returning NoSuchObjectException
Spark context Web UI available at http://192.168.1.2:4041
Spark context available as 'sc' (master = local[*], app id = local-1534771483747).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.2.0
/_/
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_171)
Type in expressions to have them evaluated.
Type :help for more information.
scala>
scala>
6、集羣搭建
[root@slave1 conf]# vi slaves
添加以下內容
# A Spark Worker will be started on each of the machines listed below.
#master.hadoop
slave1.hadoop
slave2.hadoop
在slaves裏面添加:其他機器的ip地址或主機名(添加主機名需要在/etc/hosts)裏面設置ip地址與主機名的映射關係
然後將Spark安裝包分發到其他機器上,並且在/etc/profile中配置Spark環境變量
7、啓動集羣
[root@master spark-2.2.0]# sbin/start-all.sh
starting org.apache.spark.deploy.master.Master, logging to /apps/spark-2.2.0/logs/spark-root-org.apache.spark.deploy.master.Master-1-master.hadoop.out
slave2.hadoop: starting org.apache.spark.deploy.worker.Worker, logging to /apps/spark-2.2.0/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-slave2.hadoop.out
slave1.hadoop: starting org.apache.spark.deploy.worker.Worker, logging to /apps/spark-2.2.0/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-slave1.hadoop.out
master.hadoop: starting org.apache.spark.deploy.worker.Worker, logging to /apps/spark-2.2.0/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-master.hadoop.out
通過jps命令查看啓動情況(一臺master,兩臺worker)
8、通過web頁面查看集羣情況(集羣提供了web端口8080)