原创

Ubuntu搭建Hadoop集群的详细操作流程

Ubuntu搭建Hadoop集群的详细操作流程

一、准备工作

若有hadoop-2.x.y.tar.gz.mds 这个文件建议也可下载,因为该文件包含了检验值可用于检查hadoop-2.x.y.tar.gz 的完整性,否则若文件发生了损坏或下载不完整,Hadoop 将无法正常运行。想验证文件完整性,可在自行百度搜索,
PS:如果浏览器下载过慢,可复制下载链接到迅雷打开下载。

二、开始搭建虚拟机
前面准备工作完成后即可开始搭建虚拟机,进行hadoop集群操作。
下面为三台虚拟机的hostname和IP地址

hostname Ip地址
Master 192.168.100.13
Slave1 192.168.100.14
Slave2 192.168.100.15

以Ubuntu 64 为主机,命名为Master,克隆两台机器作为slaves节点
点击Ubuntu主机右键->管理->克隆->选择要安装的位置,然后静静的等待克隆完成
网络配置
1.VMware 网络配置(使虚拟机上的各个节点能够互联,用同一个网段)

  • 打开虚拟机编辑上的虚拟网络编辑器:
    VMnet8(NAT模式)----子网IP设置为:192.168.100.0----NAT设置:网关改为192.168.100.2—确定----去掉使用DHCP选项

在这里插入图片描述

在这里插入图片描述

  • 开始菜单->运行->services.msc或从控制面板中找到“服务”一项打开如下图所示,找到以vmware开头的服务,确保都启用
    在这里插入图片描述

  • 打开控制面板->系统和安全->网络和 Internet->网络和共享中心->更改适配器设置,启用VMnet8在这里插入图片描述,再查看属性,双击Intter协议版本4看IP地址与子网掩码是否配好,若没则进行相应配置。(注意IP地址与子网掩码是于上面虚拟机配置相对应的)

2.Ubuntu网络配置

如果节点的系统是在虚拟机中直接复制的,要确保各个节点的 Mac 地址不同
Linux 中查看节点 IP 地址的命令为 ifconfig

sudo vim /etc/hostname  //修改各个节点的主机名
sudo vim /etc/hosts  //修改自己所用节点的IP映射

例如本项目中使用三个节点的名称与对应的 IP 关系如下:
192.168.100.13 Master
192.168.100.14 Slave1
192.168.100.15 Slave2
在 /etc/hosts 中将该映射关系填写上去即可,如下图所示(一般该文件中只有一个 127.0.0.1,其对应名为 localhost,如果有多余的应删除,特别是不能有 “127.0.0.1 Master” 这样的记录):
在这里插入图片描述

修改完成后需要reboot重启一下,重启后在终端中才会看到机器名的变化
以上在所有节点上都需要完成网络配置
配置好后需要在各个节点上执行如下命令,测试是否相互 ping 得通,如果 ping 不通,后面就无法顺利配置成功

ping Master
ping Slave1
ping Slave2

配置ssh免密码登录(在Master、 Slave1、Slave2 节点依次配一遍)

cd .ssh/
ssh-keygen -t rsa	//配置公钥,一直按回车即可

将公匙传输到Master、 Slave1、Slave2 节点上(传输过程中可能需要输入yes和对应的密码)

ssh-copy-id Master 
ssh-copy-id Slave1 
ssh-copy-id Slave2

检验免密码是否配置成功 (成功后是不用输密码即可登录,同时执行 exit 即可返回到原来的终端)

ssh Master
ssh Slave1
ssh Slave2
cd .ssh/
cat  id_rsa.pub  //查看自身公钥
cat authorized_keys /查看公钥文件

安装java环境
1配置本地源

sudo apt-get update  //更新apt

2.安装jdk

在Master上

sudo apt-get install openjdk-8-jdk openjdk-8-source

配置环境变量

vim ~/.bashrc //	添加如下几行内容:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export CLASSPATH=${
   JAVA_HOME}/lib/dt.jar:${
   JRE_HOME}/lib/tools.jar
export PATH=${
   PATH}:${
   JAVA_HOME}/bin

在这里插入图片描述

3.验证

java -version  //查看java 版本信息
which java //查看java的目录位置

(Slave1、Slave2的jdk安装配置同上)

Hadoop的安装
在Master上
hadoop若是下载在windows上则用sudo rz -be进行上传

sudo tar -zxf hadoop-2.7.7tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.7.7/ ./hadoop # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop # 修改文件权限

配置PATH变量

vim ~/.bashrc #在下面添加

export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
在这里插入图片描述
source ~/.bashrc #使配置生效
hadoop version #进行验证
在这里插入图片描述

配置集群/分布式环境
集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的以下几个配置文件hadoop-env.sh、 mapred-env.sh、slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。
在Master上
vim hadoop-env.sh #进入修改一下JAVA_HOME的安装目录
在这里插入图片描述

vim mapred-env.sh #同样进入修改一下JAVA_HOME的安装目录

在这里插入图片描述
sudo vi slaves #配置slaves
修改
localhost—>Slave1 Slave2
#Slave1 Slave2为你要集群的机器
在这里插入图片描述
sudo vi core-site.xml #添加以下内容

 <configuration>
            <property>
                <name>fs.defaultFS</name>
                <value>hdfs://Master:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>

sudo vi hdfs-site.xml #添加以下内容,其中dfs.replication 一般设为 3

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Master:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>

cp mapred-site.xml.template mapred-site.xml #复制一份 mapred-site.xml
sudo vi mapred-site.xml#添加以下内容:

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>Master:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>Master:19888</value>
        </property>
</configuration>

sudo vi 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>

配置好后,将 Master 上的 /usr/local/Hadoop 文件夹复制到各个节点上。因为之前有跑过伪分布式模式,建议在切换到集群模式前先删除之前的临时文件。在 Master 节点上执行:

cd /usr/local
sudo rm -r ./hadoop/tmp # 删除 Hadoop 临时文件
sudo rm -r ./hadoop/logs/* # 删除日志文件
tar -zcf ~/hadoop.master.tar.gz ./hadoop # 先压缩再复制
cd ~
scp ./hadoop.master.tar.gz Slave1:/home/hadoop
scp ./hadoop.master.tar.gz Slave2:/home/hadoop

在 Slave1 、2节点上执行:

sudo rm -r /usr/local/hadoop # 删掉旧的(如果存在)
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
sudo chown -R hadoop /usr/local/hadoop

同样,如果还有其他 Slave 节点,也要执行将 hadoop.master.tar.gz 传输到 Slave 节点、在 Slave 节点解压文件的操作。

首次启动需要先在 Master 节点执行 NameNode 的格式化:

hdfs namenode -format  # 首次运行需要执行初始化,之后不需要

#成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错
在这里插入图片描述

启动 hadoop 了,启动需要在 Master 节点上进行:

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

通过命令 jps 可以查看各个节点所启动的进程。正确的话,在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程,如下图所示:
在这里插入图片描述

在 Slave1、2 节点可以看到 DataNode 和 NodeManager 进程,如下图所示:
在这里插入图片描述

关闭集群,关闭也是在 Master 节点上进行:

stop-yarn.sh
stop-dfs.sh
mr-jobhistory-daemon.sh stop historyserver

伪分布式、分布式配置切换时的注意事项 :
1.从分布式切换到伪分布式时,不要忘记修改 slaves 配置文件;
2.在两者之间切换时,若遇到无法正常启动的情况,可以删除所涉及节点的临时文件夹,这样虽然之前的数据会被删掉,但能保证集群正确启动。所以如果集群以前能启动,但后来启动不了,特别是 DataNode 无法启动,不妨试着删除所有节点(包括 Slave 节点)上的 /usr/local/hadoop/tmp文件夹,再重新执行一次 hdfs namenode -format,再次启动试试。

对于Hadoop的认识及单机/伪分布式配置可以参考此处
在CentOS下搭建Hadoop集群可以参考此处
搭建Hadoop时Slave节点没出现DateNode进程的可以参考此处

正文到此结束