1、下载spark压缩包,在虚拟机上解压安装
2、配置
在conf中复制spark-env.sh.template并重命名为spark-env.sh
mv spark-env.sh.template spark-env.sh
文件中添加如下配置:
export JAVA_HOME=/root/apps/jdk1.8.0_201
#export SPARK_MASTER_HOST=hdp-1
#export SPARK_MASTER_PORT=7077
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hdp-1,hdp-2,hdp-3 -Dspark.deploy.zookeeper.dir=/spark"
export SPARK_WORKER_CORES=6
export SPARK_WORKER_MEMORY=8g
export SPARK_LOCAL_IP="192.168.234.129"
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
配置ha时需把上面两行注掉,不然其他机器启动master会失败
修改slaves在文件最后添加其他主机名:
hdp-2
hdp-3
hdp-4
启动spark(启动之前必须开启hdfs、zookeeper、yarn):
启动成功之后各个机器会有相应的master、worker节点
3、启动spark shell
[root@hdp-1 bin]# ./spark-shell --master spark://hdp-1:7077 --executor-memory 500m --total-executor-cores 1
--master spark://hdp-1:7077 指定Master的地址
--executor-memory 500m:指定每个worker可用内存为500m
--total-executor-cores 1: 指定整个集群使用的cup核数为1个
4、在spark shell中编写一个简单wordcount程序
①先编写一个fengrui.txt文件并上传到hdfs中
②在spark shell中用scala语言编写spark程序
scala> sc.textFile("hdfs://hdp-1:9000/spark/ScalaHelloWord.txt").flatMap(_.split(",")).map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://hdp-1:9000/spark/helloword_out")
说明:
sc是SparkContext对象,该对象是提交spark程序的入口
textFile("hdfs://hdp-1:9000/spark/ScalaHelloWord.txt")是hdfs中读取数据
flatMap(_.split(" "))先map再压平
map((_,1))将单词和1构成元组
reduceByKey(_+_)按照key进行reduce,并将value累加
saveAsTextFile("hdfs://hdp-1:9000/spark/helloword_out")将结果写入到hdfs中
③查询