Spark安装及初次使用

准备工作:
  • 准备三台机器,master01,master02(HA),slave01,slave02
  • hadoop集群,zookeeper集群搭建完成
  • spark-2.1.1-bin-hadoop2.7.tgz安装包

一、配置Spark【Standalone】

1.解压安装包到指定位置
tar -xf spark-2.1.1-bin-hadoop2.7.tgz -C ~/Hadoop
2.配置conf目录下的slaves和spark-env.sh

[bigdata@master01 hadoop]$ cd ~/hadoop/spark-2.1.1-bin-hadoop2.7/conf
# 将slaves.template复制为slaves
[bigdata@master01 conf]$ cp slaves.template slaves
# 将spark-env.sh.template复制为spark-env.sh
[bigdata@master01 conf]$ cp spark-env.sh.template spark-env.sh

修改slave文件

slave01
slave02

修改spark-env.sh文件,添加一下内容:

SPARK_MASTER_HOST=master01
SPARK_MASTER_PORT=7077

3.配置sbin目录下的spark-config.sh,加入如下配置:
export JAVA_HOME=XXXX
4.将配置好的Spark文件拷贝到其他节点上

[bigdata@master01 conf]$ scp slaves bigdata@slave01:~/hadoop/spark-2.1.1-bin-hadoop2.7/conf
[bigdata@master01 conf]$ scp slaves bigdata@slave02:~/hadoop/spark-2.1.1-bin-hadoop2.7/conf
[bigdata@master01 conf]$ scp spark-env.sh bigdata@slave01:~/hadoop/spark-2.1.1-bin-hadoop2.7/conf
[bigdata@master01 conf]$ scp spark-env.sh bigdata@slave02:~/hadoop/spark-2.1.1-bin-hadoop2.7/conf
# xsync脚本参考:https://www.jianshu.com/p/124033fd3519
[bigdata@master01 sbin]$ xsync /home/bigdata/Hadoop/spark-2.1.1-bin-hadoop2.7/sbin/spark-config.sh

5.启动Spark集群

[bigdata@master01 spark-2.1.1-bin-hadoop2.7]$ sbin/start-all.sh

Spark管理界面查看集群状态(主节点):http://master01:8080/

二、配置Job History Server【Standalone】

1.配置spark-default.conf
[bigdata@master01 ~]$ cd ~/hadoop/spark-2.1.1-bin-hadoop2.7/conf
[bigdata@master01 conf]$ cp spark-default.conf.template spark-default.conf

修改spark-default.conf文件,开启Log,【注意:HDFS上的目录需要提前存在】,加入如下内容:

spark.eventLog.enabled  true
spark.eventLog.dir       hdfs://master01:9000/historyserverforSpark
spark.eventLog.compress true
2.修改spark-env.sh文件,添加如下配置:
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000
-Dspark.history.retainedApplications=3
-Dspark.history.fs.logDirectory=hdfs://master01:9000/historyserverforSpark"
3.在hadoop配置文件hdfs-site.xml中添加如下配置,关闭hdfs写入权限验证,否则报错org.apache.hadoop.security.AccessControlException
 <!-- 解决spark存在Hadoop HDFS的写入权限问题  -->
    <property>
            <name>dfs.permissions</name>
            <value>false</value>
    </property>
4.将配置好的Spark文件拷贝到其他节点上
[bigdata@master01 conf]$ scp spark-default.conf bigdata@slave01:~/hadoop/spark-2.1.1-bin-hadoop2.7/conf
[bigdata@master01 conf]$ scp spark-default.conf bigdata@slave02:~/hadoop/spark-2.1.1-bin-hadoop2.7/conf
# xsync脚本参考:https://www.jianshu.com/p/124033fd3519
[bigdata@master01 conf]$ xsync /home/bigdata/Hadoop/spark-2.1.1-bin-hadoop2.7/conf/spark-env.sh
5.启动过程
  • 启动HDFS,并在hdfs上创建historyserverforSpark目录
    hadoop fs -mkdir -p /historyserverforSpark
  • 启动Spark
[bigdata@master01 spark-2.1.1-bin-hadoop2.7]$ sbin/start-all.sh
  • 启动Job History Server
[bigdata@master01 spark-2.1.1-bin-hadoop2.7]$ sbin/start-history-server.sh

三、配置Spark HA【Standalone】

解决Master节点存在单点故障

1.启动至少两个Master节点来实现高可靠,配置方式比较简单:


HA规划

2.Spark集群规划:master01,master02是Master;slave01,slave02,slave03是Worker
3.安装配置Zookeeper集群,并启动Zookeeper集群
4.停止spark所有服务,修改配置文件spark-env.sh,在该配置文件中注释掉SPARK_MASTER_HOST并添加如下配置:

export SPARK_DAEMON_JAVA_OPTS="
 -Dspark.deploy.recoveryMode=ZOOKEEPER
 -Dspark.deploy.zookeeper.url=zk1,zk2,zk3
 -Dspark.deploy.zookeeper.dir=/spark"

5.在 master01节点上修改spark-env.sh配置文件,将配置文件同步到所有节点
6.在master01上执行sbin/start-all.sh脚本,启动集群并启动第一个master节点,然后在master02上执行sbin/start-master.sh启动第二个master节点
7.程序中spark集群的访问地址需要改成:
spark://master01:port1,master02:port2

四、配置Spark【Yarn】

1.修改Hadoop配置下的yarn-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>master01</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
        <property>
                <name>yarn.nodemanager.pmem-check-enabled</name>
                <value>false</value>
        </property>
        <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
        <property>
                <name>yarn.nodemanager.vmem-check-enabled</name>
                <value>false</value>
        </property>
</configuration>

2.修改Spark-env.sh 添加:

HADOOP_CONF_DIR=/home/bigdata/hadoop/hadoop-2.7.3/etc/hadoop
YARN_CONF_DIR=/home/bigdata/hadoop/hadoop-2.7.3/etc/hadoop

3.启动spark history server

五、spark程序初试

1.执行第一个spark程序(standalone)
# 该算法是利用蒙特·卡罗算法求PI
[bigdata@master01 spark-2.1.1-bin-hadoop2.7]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://master01:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
/home/honey/hadoop/spark-2.1.1-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.1.1.jar \
100

参数说明:
--master spark://master01:7077 指定Master的地址
--executor-memory 1G 指定每个executor可用内存为1G
--total-executor-cores 2 指定每个executor使用的cup核数为2个

2.执行第一个spark程序(yarn)
[bigdata@master01 spark-2.1.1-bin-hadoop2.7]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
/home/honey/hadoop/spark-2.1.1-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.1.1.jar \
100
3.Spark应用提交

bin/spark-submit脚本启动应用. 这个脚本负责设置spark使用的classpath和依赖,支持不同类型的集群管理器和发布模式:

./bin/spark-submit \
  --class <main-class>
  --master <master-url> \
  --deploy-mode <deploy-mode> \
  --conf <key>=<value> \
  ... # other options
  <application-jar> \
  [application-arguments]

一些常用选项:

  • --class: 你的应用的启动类 (如 org.apache.spark.examples.SparkPi)

  • --master: 集群的master URL (如 spark://23.195.26.187:7077)

  • --deploy-mode: 是否发布你的驱动到worker节点(cluster) 或者作为一个本地客户端 (client) (default: client)*

  • --conf: 任意的Spark配置属性, 格式key=value. 如果值包含空格,可以加引号“key=value”. 缺省的Spark配置

  • application-jar: 打包好的应用jar,包含依赖. 这个URL在集群中全局可见。

  • application-arguments: 传给main()方法的参数

4.启动Spark shell
bin/spark-shell \
--master spark://master01:7077 \
--executor-memory 2g \
--total-executor-cores 2

注意:如果启动spark shell时没有指定master地址,但是也可以正常启动spark shell和执行spark shell中的程序,其实是启动了spark的local模式,该模式仅在本机启动一个进程,没有与集群建立联系。
Spark Shell中已经默认将SparkContext类初始化为对象sc。用户代码如果需要用到,则直接应用sc即可

5.在Spark shell中编写WordCount程序
hadoop dfs -put ./RELEASE /
  • 在Spark shell中用scala语言编写spark程序
scala> sc.textFile("hdfs://master01:9000/RELEASE").flatMap(_.split(" "))
.map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://master01:9000/out")
  • 使用hdfs命令查看结果
hadoop dfs -cat hdfs://master01:9000/out/p*

说明:
scSparkContext对象,该对象时提交spark程序的入口
textFile(hdfs://master01:9000/RELEASE)是hdfs中读取数据
flatMap(_.split(" "))先map在压平
map((_,1))将单词和1构成元组
reduceByKey(_+_)按照key进行reduce,并将value累加
saveAsTextFile("hdfs:// master01:9000/out")将结果写入到hdfs中

spark数据处理过程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容