spark官网
https://spark.apache.org/
Scala学习
Scala学习
选项其中一个版本查看部署文档
https://spark.apache.org/docs/2.4.7/
下载安装包
https://spark.apache.org/downloads.html
配置环境变量
export SPARK_HOME=/opt/pmo/data/spark/spark-1.6.3-bin-hadoop2.6
export PATH=$PATH:$SPARK_HOME/bin
重新生效:source /etc/profile
单机部署测试
解压后执行 bin/spark-shell 进入scala命令行
可以执行命令
scala>sc.textFile("/data/testdata.txt").flatMap(_.split(" ")).map(Tuple2(_,1)).reduceByKey(_+_).foreach(println)
文件/data/testdata.txt内容
hello world
hello msb
hello spark
good spark
输出
(spark,2)
(hello,3)
(msb,1)
(good,1)
(world,1)
测试hadoop的文件统计
spark-shell
scala > sc.textFile("/derby.log").filter(line=>line.contains("os")).count()
scala > sc.textFile("/derby.log").count()
使用scala语言统计的代码讲解
在输出日志中会出现地址可以访问代码执行流程:http://DESKTOP-4C0OVBC:4040
只有遇到foreach方法时,流程才会执行,因为foreach内部实现调用了方法runJob
RDD(Resilient Distributed Datasets),弹性分布式数据集
集群部署
环境准备
准备4台机器部署spark(node01、node02、node03、node04)(1主3从)
环境具备hadoop、zookeeper
jdk:1.8.xxx
节点之间免密
环境配置
配置环境变量
export SPARK_HOME=/bigdata/spark-2.3.4-bin-hadoop2.7
配置slaves
cd $SPARK_HOME/conf
添加文件slaves,内容为:
node02
node03
node04
配置spark-env.sh
export HADOOP_CONF_DIR=/opt/bigdata/hadoop-2.6.5/etc/hadoop #hadoop配置文件,读取hdfs数据
export SPARK_MASTER_HOST=node01 # 高可用时,每台master改成自己的主机名
export SPARK_MASTER_PORT=7077 # 主节点端口
export SPARK_MASTER_WEBUI_PORT=8080 # web UI访问端口
export SPARK_WORKER_CORES=4 # WORKER虚拟核心数
export SPARK_WORKER_MEMORY=4g # WORKER虚拟内存大小
基于zookeeper的高可用配置
官网地址:
https://spark.apache.org/docs/2.3.4/spark-standalone.html
==> High Availability ==>Standby Masters with ZooKeeper
配置的文件名称:spark-defaults.conf,文件内容
spark.deploy.recoveryMode ZOOKEEPER
spark.deploy.zookeeper.url node02:2181,node03:2181,node04:2181
spark.deploy.zookeeper.dir /msbspark
spark.eventLog.enabled true
spark.eventLog.dir hdfs://mycluster/spark_log
spark.history.fs.logDirectory hdfs://mycluster/spark_log
可以查看运行的历史任务
官网:https://spark.apache.org/docs/2.3.4/monitoring.html
配置的文件名称:spark-defaults.conf,文件内容
spark.eventLog.enabled true #开启写日志
spark.eventLog.dir hdfs://mycluster/spark_log
spark.history.fs.logDirectory hdfs://mycluster/spark_log
a)修改配置一定要分发、重启服务
b)计算层会自己将自己的计算日志存入hdfs
c)手动启动:./sbin/start-history-server.sh
e)访问 启动有 history-server主机的主机名 默认端口是 18080
启动
先启动 zookeeper
再启动 hdfs
最后启动 spark(资源管理层) master workers
node01 sbin/stop-all.sh
node01 sbin/start-all.sh
node02 start-master.sh
spark web界面访问
http://node01/8080
http://node02/8080
spark命令端访问集群
bin/spark-shell --master spark://node01:7077,node02:7077
scala>sc.textFile("hdfs://mycluster/testdata.txt").flatMap(_.split(" ")).map(Tuple2(_,1)).reduceByKey(_+_).collect().foreach(println)
//方法:collect()会把各个节点的计算数据汇总到这个节点来打印输出
追踪任务执行界面访问
http://node01/4040
追踪历史任务执行界面访问
http://node01/18080