spark+hadoop环境搭建
硬件:
Ubuntu16.04 server 2台
软件版本:
hadoop-2.6.5.tar.gz
jdk-8u191-linux-x64.tar.gz
scala-2.12.8.tgz
spark-2.4.0-bin-hadoop2.7.tgz
hadoop集群搭建(master+slave01)
1.集群机器准备
master:192.168.1.222
slave01:192.168.1.120
2.修改master和slave01的/etc/hosts文件如下
127.0.0.1 localhost
192.168.1.222 master
192.168.1.120 slave01
配置ssh无密码访问集群
这个步骤可以参考我之前的一篇教程:Ubuntu配置ssh无密码登陆,在此不说了
配置完测试是否开启无密码访问,
ssh 192.168.1.222

ssh 192.168.1.120

jdk与hadoop安装包安装(我把所需的软件都放在home目录的spark下,安装是根据自己的路径更改即可)
目录tree图
spark
├── hadoop-2.6.5.tar.gz
├── jdk-8u191-linux-x64.tar.gz
├── scala-2.12.8.tgz
└── spark-2.4.0-bin-hadoop2.7.tgz
1.jdk安装
解压/home/am/spark
,分别在master和slave01中添加环境变量(home目录下的.bashrc
隐藏文件):
export JAVA_HOME=/home/am/spark/jdk1.8.0_191
export JRE_HOME=/home/am/spark/jdk1.8.0_191/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
运行source .bashrc
使环境变量生效
2.hadoop安装
解压到/home/am/spark
,分别在master和slave01中添加环境变量(home目录下的.bashrc
隐藏文件):
export HADOOP_HOME=/home/am/spark/hadoop-2.6.5
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
运行source .bashrc
使环境变量生效
3.配置hadoop环境
a.在/home/am/spark/hadoop-2.6.5/etc/hadoop
目录下修改hadoop-env.sh
增加如下配置
export JAVA_HOME=/home/am/spark/jdk1.8.0_191
export HADOOP_PREFIX=/home/am/spark/hadoop-2.6.5
b.修改core-site.xml
,tmp
目录需要提前创建好
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/software/hadoop/hadoop-2.6.0/tmp</value>
</property>
</configuration>
c.修改hdfs-site.xml
,指定数据的副本个数
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
d.修改mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
e.yarn-env.sh
中增加JAVA_HOME的环境
export JAVA_HOME=/home/am/spark/jdk1.8.0_191
f.修改yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
g.slaves中增加集群主机名
master
slave01
在slave01重复以上步骤
启动hadoop集群
1)start-dfs.sh,启动namenode和datanode

在master和slave01上使用jps命令查看java进程

2)start-yarn.sh,启动 ResourceManager 和 NodeManager

在master和slave01上使用jps命令查看java进程

如果上述都成功了,那么集群启动就成功了
scala安装
a.解压到/home/am/spark
,分别在master和slave01中添加环境变量(home目录下的.bashrc
隐藏文件)
export SCALA_HOME=/home/am/spark/scala-2.12.8
export SPARK_HOME=/home/am/spark/spark-2.4.0-bin-hadoop2.7
export PATH=$PATH:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin
b.测试scala命令是否有效

c.安装成功
Spark安装以及配置
1.Spark安装
解压到/home/am/spark
,分别在master和slave01中添加环境变量(home目录下的.bashrc
隐藏文件)
export SPARK_HOME=/home/am/spark/spark-2.4.0-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
每次修改完记得运行source .bashrc
使环境变量生效
2.Spark配置
a.进入Spark
的安装目录下的conf
目录,拷贝spark-env.sh.template
到spark-env.sh
cp spark-env.sh.template spark-env.sh
编辑spark-env.sh,在其中添加以下配置信息
export SCALA_HOME=/home/am/spark/scala-2.12.8
export JAVA_HOME=/home/am/spark/jdk1.8.0_191
export SPARK_MASTER_IP=192.168.1.222
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=/home/am/spark/hadoop-2.6.5/etc/hadoop
b.将slaves.template
拷贝到slaves
,编辑起内容为
master
slave01
此配置表示要开启的worker主机
c.slave01
同样参照master配置
Spark集群启动
a启动Master节点,运行start-master.sh,结果如下

b.启动所有的worker节点,运行start-slaves.sh,运行结果如下

c.输入jps命令查看启动情况

d.浏览器访问http://192.168.1.222:8080可查看Spark集群信息

第一次搭建,很多不懂的,疑问,想知道哪一步出错了?
workers id为什么主机的ip都是192.168.1.222?