Hadoop集群搭建教程
一、装前准备
- VMware Workstation(我这里下载的是VM15pro)
https://www.vmware.com/cn.html. - XSHELL下载
Xshell用于和虚拟机远程链接,可以传输文件。并且在后续输入代码时可以复制粘贴。 - Centos镜像文件
链接:https://pan.baidu.com/s/1kVBAdfWTMDs1zYuBlDqP4Q
提取码:r6sq - JDK和hadoop
链接:https://pan.baidu.com/s/1Q8wRWR2KDzAoWCrLbSrtow
提取码:z66f
二、在虚拟机中安装CentOS 7
-
VMare Workstation15pro 点击创建虚拟机
-
进入到“欢迎使用新建虚拟机向导”,选择自定义(高级),然后下一步
-
一直next,直到如下图时。iso使用的就是装前准备中的CentOS
-
然后命名虚拟机的名称以及存放虚拟机的位置。
-
处理器配置界面,默认就好,点击“下一步”
-
虚拟机内存界面,默认即可,点击“下一步”,以后可以根据自己需求继续增加
-
网络类型界面,选择“使用网络地址转换(NAT)
-
选择I/O控制器类型界面、选择磁盘类型界面,默认就可以了,点击下一步
-
选择磁盘界面,选择“创建新虚拟磁盘”,然后下一步
-
指定磁盘容量选默认就好了。
-
指定磁盘文件界面,默认的就好,点击“下一步”
-
完成创建,启动
-
选中第一个回车,等待加载。
-
选择语言
-
选择安装位置
-
安装目标位置
-
网络和主机名进行配置
-
进行配置网络和主机名(记住框起来的,后面要用到)
-
修改主机名,后面好操作
-
点击配置,然后点击IPv4设置,方法改为手动,点击add
-
然后设置IPv4,将方法改为手动,目的是固定IP地址,方便之后的连接以及Hadoop集群的通信,点击Add添加地址就是刚刚截图的内容,如下图输入,网关就是路由IP地址。这里我刚开始用的腾讯的DNS,后面改用用阿里的DNS223.5.5.5,223.6.6.6,然后勾选IPv4点击保存。注意:这里要使用你们自己的IP地址,就是在配置网络时的IP要记住。
-
开始安装
-
点击配置ROOT密码,这里我们方便记,密码直接设为123456,然后点击两次完成即可。
-
安装完成后点击重启,在master login那一行输入root用户名。回车,输入刚刚设置的密码,这里密码是不显示的,不要误以为出bug了
出现下面图片情况,表示安装成功。
这里输入ping www.baidu.com测试虚拟机是否联网成功。(按ctrl+c结束命令),到这CentOS7安装成功。
三、配置CentOS7
更细一下yum源,运行命令yum -y update。当看到Complete! 表示更细完成。
将系统的防火墙关闭。依次输入下面两个命令。
1.临时关闭防火墙 systemctl stop firewalld.service
2.永久关闭防火墙 systemctl disable firewalld.service
接着关闭Linux系统内核SELinux。输入vi /etc/selinux/config
linux中vi是编辑文本的命令,按下键盘上的字母 i ,进入编辑模式,按下后底下会提示为INSERT状态。
退出则是按下键盘的ESC键后输入:q就可以退出,:q!为强制退出。
保存并退出则是按下键盘的ESC键后输入:wq就可以保存并退出。
找到SELINUX=enforcing这一行,将enforcing修改为disabled。
然后输入reboot命令回车重启系统,使命令生效。重启之后输入 /usr/sbin/sestatus -v 查看SELinux是否被禁用
输入yum install vim -y 安装vim编辑器,作用vi命令一样,对后面修改Hadoop配置有帮助。
输入:vim /etc/hosts 编辑hosts文件,后面配置虚拟机将IP先添加到hosts当中。
master地址是刚刚安装虚拟机的ip地址,图片中的a1、a2是之后的虚拟机的名称,他们的地址是master的地址加一。
创建Hadooptools文件夹,后面文件放在此文件夹。再根目录进行创建。依次输入下面命令:
cd /root
mkdir Hadooptools
cd Hadooptools
打开xshell工具,连接到服务器
输入服务器的ip、账号、密码
完成以上步骤就可以连接到虚拟机master了,虚拟机要开机。成功如图
yum安装lrzsz工具:其命令为:yum -y install lrzsz
查看是否安装成功,其命令为:rpm -qa|grep lrzsz
出现以上,则安装成功。
cd Hadooptools进入到我们新建的文件夹输入rz
将要添加的文件选择就好了
输入ls,有红色的包就成功了。
输入下面命令分别解压2个压缩包:
tar -zxvf hadoop-2.7.3.tar.gz
tar -zxvf jdk-8u161-linux-x64.tar.gz
版本号要对应
四、JDK安装和配置
输入以下命令
cd ~
ls -all
然后输入:vim .bash_profile
将下面内容添加到文件中:
export JAVA_HOME=/root/Hadooptools/jdk1.8.0_161
export PATH=$JAVA_HOME/bin:$PATH
保存退出后输入下面命令使其生效:source .bash_profile
然后输入java -version 查看是否成功,如下图表示配置成功。到此CentOS,配置完成,输入shutdown now关闭虚拟机。
五、克隆虚拟机,配置主机,搭建集群。
右键虚拟机,点击管理,然后点击克隆。
点击完成则完成克隆。
克隆创建2次,将这个两个虚拟机分别命名为a1,a2.如下图
然后依次启动3台虚拟机,然后修改IP。进入a1虚拟机,输入下面命令,配置网络文件:
vim /etc/sysconfig/network-scripts/ifcfg-ens33 将其IPADDR改为192.168.137.136,保存退出后,输入service network restart 使配置生效
同样的命令配置a2,其地址为192.168.137.137.然后保存退出,同样命令使其生效。
接下来修改主机名,输入下面命令:
A1:hostnamectl set-hostname a1
A2:hostnamectl set-hostname a2
完成后分别输入logout用户登出。
在次登陆就可以看到我们的主机名变为a1.
然后在master主机分别输入以下命令看是否能ping通。
ping master
ping a1
ping a2
下图表明master和a1,a2连接正常。依次在a1和a2做验证看是否成功。
六、用Xshell连接三台虚拟机
首先添加三台虚拟机,上面传输文件的时候讲过了。
连接上三台虚拟机。
在xshell中制作免密码登陆,在master中输入以下命令:ssh-keygen -t rsa然后一直按回车直到命令结束。同样的操作子在,a1,a2中进行。
在master依次输入下面命令:
ssh-copy-id master
ssh-copy-id a1
ssh-copy-id a2
然后根据提示输入master,a1,a2的密码,这里就是实现了对登陆的免密操作。
在a1中输入下面命令:
ssh-copy-id master
ssh-copy-id a2
在a2中依次输入以下命令:
ssh-copy-id master
ssh-copy-id a1
通过ssh命令测试看是否设置免密登陆成功,如下图操作:
对a1、a2进行同样的操作
七、配置Hadoop
修改hadoop-env.sh
输入下面命令:cd /root/Hadooptools/hadoop-2.7.3/etc/hadoop/ 进入到
hadoop-2.7.3文件夹。
输入下面命令修改hadoop-env.sh。
vim hadoop-env.sh
将export JAVA_HOME修改为下面的值,然后保存并退出。
# The java implementation to use.
export JAVA_HOME=/root/Hadooptools/jdk1.8.0_161
修改yarn-env.sh
输入:vim yarn-env.sh
修改JAVA_HOME,然后保存退出。
# some Java parameters
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
if [ "$JAVA_HOME" != "" ]; then
#echo "run java in $JAVA_HOME"
JAVA_HOME=/root/Hadooptools/jdk1.8.0_161
修改core-site.xml
输入:vim core-site.xml,修改 core-site.xml
将下面内容复制粘贴到文件中,然后保存退出。
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
<description>配置NameNode的URL</description>
</property>
<!--用来指定hadoop运行时产生的存放目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/Hadooptools/hadoop-tmp</value>
</property>
</configuration>
目前系统中是没有这个目录的,后面需要新建这个目录
修改hdfs-site.xml
输入:vim hdfs-site.xml,修改 hdfs-site.xml
将下面内容粘贴到文件中,再保存退出。
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
修改mapred-site.xml
输入:vim mapred-site.xml,修改 mapred-site.xml
将下面内容粘贴到文件中,保存退出。
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
修改yarn-site.xml
输入:vim yarn-site.xml,修改 yarn-site.xml
将下面内容粘贴到文件中:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<!--指定yarn的老大resoucemanager的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<!--NodeManager 获取数据的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
修改slaves
输入:vim slaves,修改 slaves
粘贴以下内容到文件:
master
a1
a2
建立hadoop-tmp文件夹
进入到Hadooptools文件夹下,新建文件夹(依次输入):
cd /root/Hadooptools/
mkdir hadoop-tmp
删除a1,a2上的Hadooptools文件夹
依次再a1,a2,上执行,输入下面命令:
rm -rf /root/Hadooptools/
将 master 上的 Hadooptools文件夹复制到a1,a2上,输入下面命令:
scp -r /root/Hadooptools root@a1:/root/
scp -r /root/Hadooptools root@a2:/root/
配置系统环境变量
输入下面命令:vim /root/.bash_profile
将下面内容添加到文件中:
export HADOOP_HOME=/root/Hadooptools/hadoop-2.7.7
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:
然后执行source /root/.bash_profile,使其生效。
a1,a2虚拟机配置同上。
格式化hadoop文件系统
输入:hdfs namenode -format
当看到successful信息时,表明格式化成功。
八、启动Hadoop
输入:start-all.sh
根据提示,输入yes。用主浏览器访问 http://192.168.154.128:50070 查看启动是否成功
再上图可以看到有3台节点同时在线,如果不是3台证明有问题,需要查看哪里出错了。如果是3台表示配置成功。
登陆yarn的WebUI http://192.168.154.128:8088/
安装spark
登陆Apache spark官网下载spark
地址:http://spark.apache.org/downloads.html
选择如下图:
将下载下了的压缩包使用Xshell传到master主机:
在Xshell中解压刚刚上传的压缩包(依次输入下面命令):
cd /root/Hadooptools
tar -zxvf spark-3.1.1-bin-hadoop2.7.tgz
将spark-3.1.1-bin-hadoop2.7文件夹名字修改成spark
输入:mv spark-3.1.1-bin-hadoop2.7 spark
修改环境变量,添加spark
输入:vim /root/.bash_profile
添加下面内容:
export SPARK_HOME=/root/Hadooptools/spark
export PATH=${SPARK_HOME}/bin:$PATH
输入:source /root/.bash_profile,使其生效。
编辑spark-env.sh
输入:cd /root/Hadooptools/spark/conf/
cp spark-env.sh.template spark-env.sh
vim spark-env.sh
将下面内容添加到文件中:
export JAVA_HOME=/root/Hadooptools/jdk1.8.0_171
export SPARK_MASTER_IP=192.168.154.128
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=/root/Hadooptools/hadoop-2.7.7/etc/hadoop
添加s1,s2节点信息
vim /root/Hadooptools/spark/conf/slaves
在文件中添加,保存退出:
a1
a2
将spark文件夹复制到a1,a2
运行下面命令:
cd /root/Hadooptools
scp -r spark root@a1:/root/Hadooptools/
scp -r spark root@a2:/root/Hadooptools/
进入spark文件夹,启动spark
运行以下命令:
cd /root/Hadooptools/spark/sbin/
./start-all.sh
在主机的浏览器中访问地址:http://192.168.154.128:8080 ,查看是否能成功访问
测试spark运行是否正常
运行以下命令:
cd /root
./Hadooptools/spark/bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://master:7077 /root/Hadooptools/spark/examples//jars/spark-examples_2.12-3.1.1.jar 100
然后打开spark的WebUI查看运行情况
http://192.168.154.128:8080/
当你以上操作都成功了,说明你已经成功的搭建了Hadoop了,恭喜你。
感谢你的阅读!