Spark2.2.0集羣搭建學習筆記

一、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)

http://master.hadoop:8080/


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章