搭建spark开发环境(spark-2.1.2 + jdk1.8.0_171 + hadoop-2.7.3 + scala-2.11.8)
一、安装jdk(jdk1.8.0_171)
1、解压
tar -zxvf 文件 -C 指定文件夹
2、添加到环境变量
vim /etc/profile
export JAVA_HOME=/root/home/myapp/java/jdk1.8.0_171
export JRE_HOME=/root/home/myapp/java/jdk1.8.0_171/jre
export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
3、刷新环境变量
source /etc/profile
4、验证
java -version
二、安装Scala(scala-2.11.8)
1、解压
tar -zxvf 文件 -C 指定文件夹
2、添加到环境变量
vim /etc/profile
export SCALA_HOME=文件夹路径
export PATH=$PATH:$SCALA_HOME/bin
3、刷新环境变量
source /etc/profile
4、验证
scala -version
三、搭建Hadoop完全分布环境(略,详见本人博客)
四、搭建Spark2.1.0完全分布式环境
1、解压
tar -zxvf 文件 -C 指定文件夹
2、添加到环境变量
vim /etc/profile
export SPARK_HOME=/opt/spark-2.1.0-bin-hadoop2.7/
export PATH=$PATH:$SPARK_HOME/bin
3、修改spring下的/conf里面的配置文件
(1) 复制spark-env.sh.template成spark-env.sh
cp spark-env.sh.template spark-env.sh
修改$SPARK_HOME/conf/spark-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_112/
export HADOOP_HOME=/opt/hadoop-2.7.3
export HADOOP_CONF_DIR=/opt/hadoop-2.7.3/etc/hadoop
export SCALA_HOME=/usr/share/scala
export SPARK_MASTER_IP=主节点
export SPARK_WORKER_MEMORY=1g
(2) 复制slaves.template成slaves
cp slaves.template slaves
修改$SPARK_HOME/conf/slaves,添加如下内容:
node1
node2
node3
4、将配置好的spark文件复制到Slave1和Slave2节点。
scp -r 源地址 node2:/目的地址
5、修改节点上的spark-env.sh、slaves的配置
6、在主节点(node1)启动集群。
/spark-2.1.2-bin-hadoop2.7/sbin/start-all.sh (注意:在spark的sbin目录下要执行./start-all.sh)
7、查看集群是否启动成功:
jps
主节点在Hadoop的基础上新增了:
Master
从节点在Hadoop的基础上新增了:
Worker
五、测试hadoop集群
1、测试的源文件wc.txt的内容为:
Hello hadoop
hello spark
hello bigdata
2、然后执行下列命令:
hadoop fs -mkdir -p /Hadoop/Input
hadoop fs -put wc.txt /Hadoop/Input
hadoop jar /hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /Hadoop/Input /Hadoop/Output
3、等待mapreduce执行完毕后,查看结果;
hadoop fs -cat /Hadoop/Output/*
六、测试spark
为了避免麻烦这里我们使用spark-shell,做一个简单的worcount的测试,用于在测试hadoop的时候我们已经在hdfs上存储了测试的源文件,下面就是直接拿来用就好了!
spark-shell (下面的每句都要回车一下)
val file=sc.textFile("hdfs://node1:9000/wc/srcdata/words.txt")
val rdd = file.flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_+_)
rdd.collect()
rdd.foreach(println)
退出的话使用如下命令:
:quit
Spark例子
var rdd = sc.parallelize(List(1,2,3,4,5))
val mappedRDD = rdd.map(2*_)
mappedRDD.collect
val filteredRDD = mappedRDD.filter(_ > 4)
filteredRDD.collect
7.运行Spark程序命令
local单机模式(结果xshell可见)
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[1] ./lib/spark-examples-1.3.1-hadoop2.4.0.jar 100