- spark环境集群搭建硬件准备
集群最低需要两台主机,一台作为master,一台作为worker,但由于方面限制,有时只有一台主机,这时我们可以创建一台虚拟机模拟集群环境,现在以centos系统作为演示:
第一步:临时关闭SELinux
第二步:使用系统自带box安装系统,安装过程省略。进入系统会乱码,重起系统可恢复,暂不支持中文显示。
第三步:设置桥接模式,使主机和虚拟机能相互ping通。
- 设置hosts文件
第一步:使用ifconfig查看主机和worker节点的ip
第二步:编辑主机和worker节点的hosts文件
sudo vi /etc/hosts
将master和worker节点的机器名和IP添加进去,每个节点主机都要编辑。
- 配置ssh无密码登录本机和访问集群机器
第一步:安装ssh,如果已安装,可跳过此步。
ssh localhost //测试是否已经安装SSH,如果显示登陆则已安装,可跳过此步
sudo apt-get openssh-server //安装ssh
第二步:master主机生成ssh公钥并传给worker节点
!!!!!这是在master主机上的操作
ssh-keygen -t rsa
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
scp ~/.ssh/id_rsa.pub hadoop@worker:/home/hadoop/
第三步:修改ssh文件权限使master无密码登陆
!!!!!下面几步是在工作worker主机上进行操作
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys //将master主机传来的公钥添加到认证文件
sudo chmod 700 $HOME
sudo chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys
!!!!!上面几步是确保master节点可以无密码登陆worker节点的必要条件,否则每次登陆都需要密码
第四步:修改~/.ssh/config文件配置用户名和主机名
!!!下面操作在master节点上操作,如果没有这个文件,就创建一个
sudo vim ~/.ssh/config
chmod 700 ~/.ssh/config
添加到master和worker节点的机器名和用户名
第五步:测试连接
ssh worker
- JDK和Hadoop安装配置
第一步:安装JDK
集群每台主机都要安装JDK
java -version //查看系统是否已经安装JDK。否则进行安装
安装教程请上网查询,很简单。一般系统都自带jdk
第二步:安装hadoop
下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/
!!!现在只需在master机器上安装hadoop,配置完把hadoop打包发给各工作节点即可
sudo tar -zxf ~/下载/hadoop-2.7.3.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.7.3/ ./hadoop # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop # 修改文件权限
编辑~/.bashrc文件,添加如下内容:
sudo vim ~/.bashrc
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
修改完保存
source ~/.bashrc //使修改生效
第三步:hadoop集群配置,所有修改文件在hadoop的/etc文件夹中
修改workers
修改core-site.xml,该文件指定namenode的位置 ,如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
修改hdfs-site.xml,该文件指定namenode和datanode存放文件的具体路径 ,
配置副本的数量,最小值为3,否则会影响到数据的可靠性
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
修改mapred-site.xml
Mapreduce.framework.name:决定mapreduce作业是提交到 YARN集群还是使用本地作业执行器本地执行
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
修改yarn-site.xml
Yarn.resourcemanager.hostname:资源管理器所在节点的主机名
Yarn.nodemanager.aux-services:一个逗号分隔的辅助服务列表,这些服务由节点管理器执行。该属性默认为空。
<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>
第四步:将hadoop压缩发送给worker各节点
cd /usr/local/
tar -zcf ~/hadoop.master.tar.gz ./hadoop
cd ~
scp ./hadoop.master.tar.gz worker:/home/hadoop
第五步:解压master传来的hadoop
sudo rm -rf /usr/local/hadoop/
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
sudo chown -R hadoop /usr/local/hadoop
第六步:启动hadoop集群
cd /usr/local/hadoop
bin/hdfs namenode -format
如果出现namenode格式化失败,无法创建文件
执行下面操作即可成功格式化
chown –R hadoop:hadoop /usr/hadoop/tmp
sudo chmod -R a+w /usr/local/hadoop
start-all.sh //启动
配置成功!如果还有什么疑问,请在下面留言。