已安装hadoop2.7.3,安装spark2.1.0
设f1为master,f2至f5位worker
软件安装目录设为/data
https://www.scala-lang.org/download/
tar -zxvf scala-2.11.8.tgz 至/data 下
配置环境变量
vi /etc/profile
export SCALA_HOME=/data/scala-2.11.8
export PATH=$PATH: ${SCALA_HOME}/bin
测试:scala -version
http://spark.apache.org/downloads.html
解压至/data 下
spark-2.1.0 文件夹及子文件的用户组和用户均设为hadoop的安装用户如haduser
chown -R haduser spark-2.1.0
chgrp -R haduser spark-2.1.0
修改conf文件夹spark-env.sh和slaves
cp spark-env.sh.template spark-env.sh
在spark-env.sh添加
export SPARK_WORKER_MEMORY=1g
Hadoop启动
1-HDFS格式化
./bin/hdfs -namenode -format
2-启动HDFS
./sbin/start-dfs.sh
3-启动yarn
./sbin/start-yarn.sh
4-在hadoop的安装目录中创建文件目录并上传文件
./bin/hdfs dfs -ls /
./bin/hdfs dfs -mkdir /WordCount
可以通过Web查看,http://xxxx(namenode的节点ip):50070
5-上传本地文件
./bin/hdfs dfs -put input.txt /WordCount
在spark目录中sbin目录下执行./start-all.sh
基于集群启动spark-shell,在bin目录下执行
./spark-shell --master Spark://xxxx(MasterURL,要和http://f1:8080界面上的一致,xxxx必须为ip):7077
打开web UI
val file=sc.textFile("hdfs://f1:9000/WordCount/input")
val rdd = file.flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_+_)
rdd.collect()
rdd.foreach(println)
退出spark-shell,输入 ":quit"
主节点:
(1)Hadoop的HDFS服务:NameNode
(2)Hadoop的Yarn服务:ResourceManger
(3)Spark的Master服务:Master
Slaves节点:
(1)Hadoop的HDFS服务:DataNode
(2)Hadoop的Yarn服务:NodeManger
(3)Spark的Slave服务:Work
多次运行spark-shell时会先报错(默认端口4040被占用,会自动重试知道找到合适的端口)
这里也可以在启动设置端口如 --conf “spark.ui.port”=4041,依次递增
引申:spark属性配置三种方式
1-程序的jar存储于:/data/SparkLearnMvnPro.jar
2-提交
最后一个10为参数,实际上本次提交的WordCount不需要输入参数,貌似2.0有个bug,随便给一个就行(spark task中正修)
参考:http://spark.apache.org/docs/latest/running-on-yarn.html
./bin/spark-submit --class com.dt.spark.main.WordCount \
--master yarn \
--deploy-mode cluster \
--driver-memory 4g \
--executor-memory 2g \
--executor-cores 1 \
/data/SparkLearnMvnPro.jar \
10
3-查看执行
访问日志的tracking URL查看执行情况
访问:http://hadoop主机:8088 查看applications