Liunx下搭建spark开发环境 (完全分布式集群下)
【有问题或错误,请私信我将及时改正;借鉴文章标明出处,谢谢】
借鉴文章:
在linux上安装spark详细步骤
运行环境:
Linux所用版本为CentOS7
Jdk 1.8.0_171
Scala 2.11.12
Hadoop 2.7.3
一:jdk环境的安装与配置
1.下载jdk并解压
到官网进行下载
这里我把jdk下载并解压到了soft目录下
2.配置环境变量
3.测试
java -version #在任意目录下执行,进行测试jdk环境
二:scala的安装与配置
1.下载scala并解压
到官网进行下载
这里我把scala下载并解压到了soft目录下
tar -xzvf scala-2.11.12.tgz #解压
2.配置环境变量并生效
vi /etc/profile 配置如下:
3.测试
三:hadoop的安装与配置
1.下载并解压
到官网进行下载
这里我把hadoop下载并解压到了soft目录下
2.配置环境变量
3.测试
hadoop version
安装完hadoop,加入完全分布式环境
{
完全分布式环境搭建
1、 克隆2台Centos,包括3台Centos,分别为master slave1 slave2
2、 修改3台主机IP地址,
master 192.168.80.11/24
slave1 192.168.80.12/24
slave2 192.168.80.13/24
修改命令参考:(三台都做)
nmcli connection modify ens33 ipv4.address 192.168.80.11/24 ipv4.gateway 192.168.80.2 ipv4.dns 192.168.80.2 ipv4.method manual connection.autoconnect yes
nmcli connection up ens33 #开启ens33
3、 修改主机名(3台虚机都做)
(1)master:
vi /etc/hostname # 写入内容如下(大括号内为添加内容)
{master}
hostname master #临时修改名字并生效
(2)slave1: (方法同上)
vi /etc/hostname # 写入内容如下
{slave1}
hostname slave1
(3)slave2: (方法同上)
4.修改hosts文件(master,slave1,slave2上都需要修改)
vi /etc/hosts //写入如下内容(配大规模时必须在一个master上写,其他用脚本直接复制)
192.168.80.11 master
192.168.80.12 slave1
192.168.80.13 slave2
测试:(使用主机名可以Ping通)
ping master
ping slave1
ping slave2
5.关闭防火墙(3台主机上都做)
[root@master ~]# systemctl disable firewalld #设置开机禁用防火墙
[root@master ~]# systemctl stop firewalld #关闭防火墙
6.SSH免密配置
(1)删除所有主机上的~/.ssh/(切记删的是/root/.ssh/,如果误删.ssh那就再创一个)
[root@master .ssh]# rm -rf /root/.ssh/*
(2)在master上生成密钥对
[root@master .ssh]# ssh-keygen
(3)将master的公钥文件id_rsa.pub远程复制到其他主机上
[root@master .ssh]# cp id_rsa.pub authorized_keys //在master上复制公钥到指定位置
[root@master .ssh]# scp id_rsa.pub root@slave1:/root/.ssh/authorized_keys //在slave上复制公钥文件到指定位置
[root@master .ssh]# scp id_rsa.pub root@slave2:/root/.ssh/authorized_keys //在slave上复制公钥文件到指定位置
(4)测试
在master上可以无密码登录到master slave1 slave2上
ssh mater
ssh slave1
ssh slave2
7.在master上进行完全分布式配置(配置文件所在目录
${hadoop_home}/etc/hadoop) #进入hadoop目录下
(做完全分布式在做操作之前你得进入cd /soft/hadoop/etc 下 复制hadoop
cp -r hadoop pseudo #复制为伪分布,做伪分布式只要在完全分布基础上修改就好了
cp -r hadoop local #复制为本地,做本地只要在完全分布基础上修改就好了
cp -r hadoop full #复制为完全分布
①[core -site.xml]
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master/</value>
</property>
</configuration>
②[hdfs-site.xml]
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
③cp mapred-site.xml.template mapred-site.xml #先复制一份,再修改
<?xml version="1.0"?>
<!-- mapred-site.xml -->
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
④[yarn-site.xml]
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
⑤[slaves] //在full目录下的slaves文件里写入以下内容,即3台slave服务器的主机名称
slave1
slave2
⑥[hadoop-env.sh] 添加如下内容
export JAVA_HOME=/soft/jdk
8、分发配置
[root@master ~]cd /soft/hadoop/etc #进入分发目录下
[root@master etc]# scp -r full/ root@slave1:/soft/hadoop/etc/
#将full文件夹分发到slave1的/soft/hadoop/etc下
[root@master etc]# scp -r full/ root@slave2:/soft/hadoop/etc/
#将full文件夹分发到slave2的/soft/hadoop/etc下
9.删除符号链接,重新链接
三台虚拟机上的hadoop都得删,才能创符号链接或者改名字
rm -rf /soft/Hadoop/etc/Hadoop
10、创建符号链接(slave1~3)
ln -s full Hadoop
11、删除临时目录文件(slave1、2)
cd /tmp
rm -rf hadoop-root
12、删除hadoop日志(每一次start-all.sh在logs都会生成文件记得删)
cd /soft/Hadoop/logs
rm -rf *
13、格式化文件系统(在master端完成)
hadoop namenode -format
//可能出现的问题:
多次格式化namenode 导致了namenode的clusterID和datanode 的clusterID不一致,导致hadoop2.7.3 datanode无法启动
//解决办法:
删除/tmp目录下的hadoop-用户目录
14、启动服务
[root@master full]# start-dfs.sh //仅需在master上开启即可
[root@master logs]# start-yarn.sh //仅需在master上开启即可
15、验证是否启动
[root@master full]# jps (namenode节点上有以下进程)
1973 ResourceManager
2229 Jps
1671 NameNode
1839 SecondaryNameNode
[root@slave1 full]# jps (在datanode节点上有以下进程)
27074 NodeManager
27172 Jps
26986 DataNode
slave2上节点数与slave1相同
}
四:spark的安装与配置
1.下载并解压
到官网进行下载
这里我把spark下载并解压到了soft目录下并创建软连接
2.配置环境变量并生效
vi /etc/profile (添加内容如下)
source /etc/profile #生效profile文件
3.测试
spark-shell #进入shell下
五:配置spark分布式环境
1.进入spark/conf目录修改spark配置文件
cp spark-env.sh.template spark-env.sh #复制一份命名为spark-env.sh
2.修改spark-env.sh文件,添加以下内容
export JAVA_HOME=/soft/jdk #配置JAVA环境变量
export SCALA_HOME=/soft/scala-2.11.12 #配置scala环境变量
export HADOOP_HOME=/soft/hadoop #配置hadoop环境变量
export SPARK_MASTER_HOST=master #指定Master的IP
export SPARK_MASTER_PORT=7077 #指定Master的端口
export SPARK_WORKER_MEMORY=2g #spark里许多用到内存的地方默认1g 2g 这里最好设置大与1g
export HADOOP_CONF_DIR=/soft/hadoop/etc/hadoop #使得spark读写的是hdfs文件
3.复制slaves.template并重新命名为slaves
cp slaves.template slaves
4.在slaves中添加内容(这里的slave1,slave2为另外两台节点)
master
slave1
slave2
5.分发文件
scp -r /soft/scala-2.11.12 root@slave1:/soft/ #分发scala到slave1上
scp -r /soft/scala-2.11.12 root@slave2:/soft/ #分发scala到slave2上
scp -r /soft/spark root@slave1:/soft/ #分发spark到slave1上
scp -r /soft/spark root@slave2:/soft/ #分发spark到slave2上
scp -r /etc/profile root@slave1:/etc/ #分发配置环境到slave1上
scp -r /exc/profile root@slave2:/etc/ #分发配置环境到slave2上
source /etc/profile #三台机器全部执行
输入scala和spark-shell测试是否分发成功
6.启动spark集群
1.启动前确定hadoop集群已经启动
2.在spark目录下输入sbin/start-all.sh
3.检查节点
(1)看节点没问题就行了
(2)web界面启动查看集群状态
192.168.80.11:8080 这里再网址处输入的是:你的IP地址:8080
【有问题或错误,请私信我将及时改正;借鉴文章标明出处,谢谢】