概述:本文主要介绍CentOS 6.5下基于Hadoop的Spark环境搭建过程,并实现塞缪尔·厄尔曼《青春》的词频统计,Spark的具体搭建过程如下:
1、下载并解压Spark
如果使用编译方式安装Spark,可以到如下地址下载:
https://archive.apache.org/dist/spark/spark-2.4.2/spark-2.4.2.tgz
2、编译方式参考官网
#pom.xml中添加https://repository.cloudera.com/artifactory/cloudera-repos/
#在解压后的spark根路径下执行 下述命令仅供参考
./dev/make-distribution.sh --name 2.6.0-cdh5.7.0 --pip --tgz -Pyarn
-Phadoop-2.6 -Phive -Phive-thriftserver
免编译 直接下载hadoop对应的Spark版本,该版本支持JDK1.8
https://archive.apache.org/dist/spark/spark-2.4.2/spark-2.4.2-bin-hadoop2.6.tgz
说明:如需JDK 1.8,可以访问oracle官网下载与系统对应的JDK版本,解压并配置环境变量即可
3、修改配置
将下载好的免编译Spark压缩包直接解压,然后修改相应配置文件
#在spark conf路径下
cp spark-env.sh.template spark-env.sh
vi spark-env.sh
#添加如下内容(Standalone模式)
export JAVA_HOME=/root/app/jdk1.8.0_201
export HADOOP_HOME=/root/app/hadoop-2.6.0-cdh5.7.0
SPARK_MASTER_HOST=hadoop
SPARK_WORKER_CORES=2
SPARK_WORKER_MEMORY=2g
SPARK_WORKER_INSTANCES=2
#sbin下启动
./start-all.sh
#查看日志
cat /root/app/spark-2.4.2-bin-hadoop2.6/logs/spark-root-org.apache.spark.deploy.master.Master-1-hadoop.out
如果没有报错,日志类似如下:
4、Spark词频统计
val file=sc.textFile("file:///root/app/hadoop-2.6.0-cdh5.7.0/bin/Youth.txt")
val wordCounts = file.flatMap(line => line.split(",")).map(word => (word,1)).reduceByKey(_+_)
wordCounts.collect()
wordCounts.foreach(println)
#读取本地文件
sc.textFile("hdfs://hadoop:8020/input/wc/Youth.txt").flatMap(line => line.split(",")).map(word => (word,1)).reduceByKey(_+_).collect().foreach(println)
#读取HDFS文件
sc.textFile("hdfs://hadoop:8020/input/wc/Youth.txt").flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_+_).collect().foreach(println)
结果如下: