1 环境
hadoop-2.7.7 (为方便提交任务到远程hadoop集群)
hadoop伪分布式环境:
centos7.6
hadoop-2.7.7
jdk-1.8
2 scala-2.11.11部署
2.1 scala-2.11.11 下载
Scala 2.11.11 | The Scala Programming Language
2.2 scala 压缩包解压
# 压缩包放入安装目录
cp scala-2.11.11.tgz /root/software/
# 解压
cd /root/software/
tar xzvf scala-2.11.11.tgz
# 软连接 方便版本管理
ln -s scala-2.11.11 scala
2.3 scala 环境变量修改
# 修改profile文件
vi /etc/profile
# 新增如下配置
# scala env
export SCALA_HOME=/root/software/scala
export PATH=$PATH:$SCALA_HOME/bin
# 使配置生效
source /etc/profile
2.3 scala 验证
# 命令行下执行scala
scala
3 spark on hadoop部署
3.1 准备安装包
spark-2.4.3-bin-hadoop2.7.tgz
下载地址
Index of /dist/spark/spark-2.4.3https://archive.apache.org/dist/spark/spark-2.4.3/
3.2 spark 压缩包解压
# 放入spark部署目录
cp spark-2.4.3-bin-hadoop2.7.tgz /root/software/
# 解压压缩包
cd /root/software/
tar xzvf spark-2.4.3-bin-hadoop2.7.tgz
# 软连接 方便版本控制
ln -s spark-2.4.3-bin-hadoop2.7 spark
# 修改权限
chmod a+w -R spark
# 修改用户和用户组
chown hadoop:hadoop -R spark
3.3 spark 修改配置
修改系统环境变量配置
# 修改系统环境变量
vi /etc/profile
# 添加以下配置
# spark env
export SPARK_HOME=/root/software/spark
export PATH=${SPARK_HOME}/bin:$PATH
# 使配置文件生效
source /etc/profile
修改spark on hadoop环境变量配置
# 生成spark-env.sh 配置文件
cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh
# 编辑配置文件
vi $SPARK_HOME/conf/spark-env.sh
# 添加如下配置
export SCALA_HOME=/root/software/scala
export JAVA_HOME=/root/software/jdk1.8.0_151/
export SPARK_MASTER_IP=192.168.192.20
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=/root/software/hadoop/etc/hadoop
export YARN_CONF_DIR=/root/software/hadoop/etc/hadoop
4 启动hadoop&spark集群
要启动spark的集群需要先启动hadoop的集群,由于hadoop和spark的启动命令都是start-all.sh
所以如果直接使用start-all.sh会导致系统路径的冲突,所以启动的时候需要用绝对路径来启动(如果事先启动了可用stop-all.sh停止)
# 启动HADOOP
$HADOOP_HOME/sbin/start-all.sh
# 启动Spark
$SPARK_HOME/sbin/start-all.sh
# 检查
jps
# spark起来后,多master 和 work进程
40738 ResourceManager
41522 Jps
40243 NameNode
41331 Worker
40852 NodeManager
40359 DataNode
40574 SecondaryNameNode
41263 Master
# 检查端口
netstat -anp |grep 8080
web检查
5 spark on hadoop 测试
# 创建需要上传文件的目录 项目配置目录为/user/hadoop
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/hadoop
# 上传word.txt文件
hdfs dfs -put /tmp/word.txt /user/hadoop
# 测试执行sprak上运行scala任务 sparksql.jar包是打包好的scala spark任务
spark-submit --master spark://master:7077 --class com.qingjiao.staff.WordCount /tmp/sparksql.jar
# 查看结果输出
hdfs dfs -ls /user/hadoop/outfile
hdfs dfs -cat /user/hadoop/outfile/part-00000