搭建HDFS完全分布式

搭建HDFS完全分布式

删除java rpm -qa | grep java | xargs sudo rpm -e --nodeps

1.创建hadoop101节点(主节点)

1.1 基本信息配置

  1. 安装Linux系统(选用CentOS6.10)

  2. 安装完成后关闭防火墙

    service iptables status
    service iptables stop
    chkconfig iptables off
    
  3. 设置静态IP

    vim /etc/sysconfig/network-scripts/ifcfg-eth0
    

    DEVICE=eth0
    UUID=75281382-9be7-4a87-a7fb-d070073754e7
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=static
    HWADDR=00:0C:29:F0:8F:04
    IPADDR=192.168.106.101
    PREFIX=24
    GATEWAY=192.168.31.2
    DNS1=192.168.31.2

  4. 修改主机名

    vim /etc/sysconfig/network
    

    选择HOSTNAME那一行进行修改

  5. 配置主机名和IP地址的映射

    因为后续要和集群内的机器通信,所有要配置一下集群中的IP地址和机器名

    vim /etc/hosts
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2cwKeSTz-1599973646500)(C:\Users\zxj\AppData\Roaming\Typora\typora-user-images\image-20200822113921176.png)]

  6. 创建用户hadoop

    useradd hadoop
    passwd
    
  7. 配置用户为sudoers

    vim /etc/sudoers
    # 在root ALL=(ALL) ALL下添加
    hadoop	ALL=(ALL) NOPASSWD:ALL
    # 然后保存完强制退出
    
  8. 在/opt目录下创建两个文件加module和software,并赋予hadoop所有权限(用来存放软件和解压软件)

    mkdir /opt/module /opt/software
    chown hadoop:hadoop /opt/module /opt/softwar
    

1.2 安装JDK

  1. 删除现有的Java软件
rpm -qa | grep java | xargs sudo rpm -e --nodeps
  1. 利用文件传输工具,将JDK导入到/opt/software文件夹下
  2. 解压JDK到/opt/module目录下
tar -zxvf /opt/software/j* -C /opt/module
  1. 获取JDK路径
[hadoop@hadoop101 jdk1.8.0_144]$ pwd
/opt/module/jdk1.8.0_144
  1. 将JDK添加到环境变量,打开/etc/profile文件
sudo vim /etc/profile
  1. 在profile文件末尾添加JDK路径
# JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
  1. 使文件生效
source /etc/profile
  1. 查看是否安装成功
[hadoop@hadoop101 jdk1.8.0_144]$ java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

1.3 安装hadoop

  1. 利用文件传输工具,将hadoop导入到/opt/software文件夹下
  2. 解压hadoop到/opt/module目录下
tar -zxvf /opt/software/h* -C /opt/module
  1. 将hadoop添加到环境变量,打开/etc/profile文件
  2. 在profile文件末尾添加hadoop路径
# HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  1. 使文件生效
source /etc/profile
  1. 查看是否安装成功
hadoop version

2. 创建子节点

克隆hadoop1节点创建两台新节点

2.1 克隆

克隆出来的机器分别命名为hadoop102和hadoop103

2.2 配置网络信息

因为克隆hdoop1后,虚拟网卡没有变更,无法连接外网,所以要重新配置网络信息

  1. 得到当前网卡的MAC地址

    ifconfig -a
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nbOhujCf-1599973646504)(D:\25.Typroa\Typora\files\ifconfig-a.png)]

  2. 将改ifcfg-eth0文件进行备份

    cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-eth1
    
  3. 修改IP地址和MAC地址

    MAC地址为第一步得到的地址

vim /etc/sysconfig/network-scripts/ifcfg-eth0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xq4rLp1c-1599973646507)(C:\Users\zxj\AppData\Roaming\Typora\typora-user-images\image-20200822115835996.png)]

  1. 设置网卡信息

    vim /etc/udev/rules.d/70-persistent-net.rules
    

    注释掉第一个网卡驱动eth0,将第二个网卡驱动eth1改为eth0,然后保存退出

2.3 修改主机名

vim /etc/sysconfig/network

3.拷贝文件

由于目前只有三台机器,所以直接用scp命令即可,但是如果是很多台主机的话这样拷贝是不现实的。

所以我们用脚本来实现拷贝

3.1 脚本

我们使用rsync远程同步工具进行拷贝

rsync具有速度快、避免复制相同内容和支持符号链接的优点。

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if ((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=102; host<104; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -av $pdir/$fname $user@hadoop$host:$pdir
done
  1. 为了能够在任何地方使用该脚本,我们将其存放在/home/hadoop/bin这个目录下

    chmod +x xsync
    sudo cp xsync /bin
    
  2. 把hadoop101机器上的/opt/module目录同步到hadoop102和hadoop103服务器上的hadoop用户下的/opt/module目录下

    xsync /opt/software/
    

4.集群配置

我们先在hadoop101上进行文件的配置,然后将配置好的文件通过脚本分发到集群中的各个机器

4.1 集群规划

hadoop101hadoop102hadoop103
HDFSNameNode
DataNode

DataNode
SecondaryNameNode
DataNode
YARN
NodeManager
ResourceManager
NodeManager

NodeManager

4.2 配置集群

主要的核心文件

core-size.xml hdfs-size.xml 将(mapred-xml.template)重命名为mapred-site.xml yarn-site.xml
hadoop-env.sh mapred-env.sh yarn-env.sh

4.2.1 配置.sh文件

在所有以上文件以sh结尾的都配置上JAVA_HOME的目录

export JAVA_HOME=/opt/module/jdk1.8.0_144
4.2.2 配置xml文件
  1. 配置core-size.xml

在该文件中编写如下配置:

<property>

<name>fs.defaultFS</name>

<value>hdfs://hadoop101:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/opt/module/hadoop-2.7.2/data/tmp</value>

</property>

  1. 配置hdfs-site.xml

在该文件中编写如下配置:

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>hadoop103:50090</value>

</property>

  1. 配置mapred-site.xml

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

  1. 配置yarn-site.xml

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.resourcemanager.hostname</name>

<value>hadoop102</value>

</property>

4.2.3 配置日志聚集功能和历史服务器

日志聚集功能在yarn-site.xml中配置

<property>

<name>yarn.log-aggregation-enable</name>

<value>true</value>

</property>

<property>

<name>yarn.log-aggregation.retain-seconds</name>

<value>604800</value>

</property>

历史服务器在mapred-site.xml中进行配置

<property>

<name>mapreduce.jobhistory.address</name>

<value>hadoop101:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>hadoop101:19888</value>

</property>

配置完之后利用脚本分发到其他节点

[hadoop@hadoop101 hadoop-2.7.2]$ xsync etc/

同时要在windows的C:\Windows\System32\drivers\etc下配置hosts文件

将所有集群的名称和ip地址做映射

5.启动集群

第一次启动的话要先格式化NameNode

如果需要再次格式化,要先将子节点中hadoop目录下的data和logs文件夹删除

[hadoop@hadoop101 hadoop-2.7.2]$ hadoop namenode -format

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T0n7FeVz-1599973646511)(C:\Users\zxj\AppData\Roaming\Typora\typora-user-images\image-20200822141543551.png)]

这样就表示格式化成功。

在hadoop101上启动NameNode

[hadoop@hadoop101 hadoop-2.7.2]$ hadoop-daemon.sh start namenode

在hadoop101,hadoop102,hadoop103上分别启动datanode

[hadoop@hadoop101 hadoop-2.7.2]$ hadoop-daemon.sh start datanode

单节点启动就完成了

6. SSH无密码登入配置

生成私钥和公钥

[hadoop@hadoop101 ~]$ ssh-keygen -t rsa
[hadoop@hadoop101 .ssh]$ ssh-copy-id hadoop101

然后打开.ssh文件查看

cd ~/.ssh

将.ssh文件分发至各个集群

同时为了集群能同时起来,要在hadoop文件配置中配置slaves,将集群中的机器都添加进slaves文件中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wC06i4f7-1599973646513)(D:\25.Typroa\Typora\files\配置slaves.png)]

7. 启动集群

[hadoop@hadoop101 hadoop]$ start-dfs.sh

[hadoop@hadoop101 hadoop-2.7.2]$ jps
2116 NameNode
2505 Jps
2253 DataNode


[hadoop@hadoop102 hadoop-2.7.2]$ jps
2045 DataNode
2127 Jps


[hadoop@hadoop103 hadoop-2.7.2]$ jps
2116 DataNode
2186 SecondaryNameNode
2298 Jps

集群就启动成功了

我们可以在Web网址中输入 192.168.106.101:50070 查看节点信息

接下来启动yarn,yarn服务要在安装***ResourceManager***的机子上启动

[hadoop@hadoop102 hadoop-2.7.2]$ start-yarn.sh 
starting yarn daemons
starting resourcemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-hadoop-resourcemanager-hadoop102.out
hadoop103: starting nodemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-hadoop-nodemanager-hadoop103.out
hadoop101: starting nodemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-hadoop-nodemanager-hadoop101.out
hadoop102: starting nodemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-hadoop-nodemanager-hadoop102.out

至此我们的集群就启动完成了,我们查看一下和之前规划的是不是一样的

[hadoop@hadoop101 hadoop-2.7.2]$ jps
2833 NodeManager
2116 NameNode
2253 DataNode
2958 Jps


[hadoop@hadoop102 hadoop-2.7.2]$ jps
3059 Jps
2633 ResourceManager
2747 NodeManager
2045 DataNode


[hadoop@hadoop103 hadoop]$ jps
2593 NodeManager
2116 DataNode
2186 SecondaryNameNode
2718 Jps

7.1 群起集群的命令

各个服务组件逐一启动/停止

hadoop-daemon.sh start/stop namenode/datanode/secondarynamenode

启动停止Yarn

yarn-daemon.sh start/stop resourcemanager/nodemanager

集体启动/停止

start-dfs.sh stop-dfs.sh

start-yarn.sh stop-yarn.sh 在配置ResourceManager的服务器上执行该命令

启动完NameNode和ResourceManager之后才能启动历史服务器

mr-hobhistory-daemon.sh start historyserver

8. 集群时间同步

找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步

  1. 检查是否安装NTP
rpm -qa | ntp
# 没有安装输入命令  yum -install ntp
  1. 查看ntpd是否运行中,
service ntpd status
# 若是在运行中
service ntpd stop
chkconfig ntpd off
chkconfig --list ntpd
  1. 修改ntp配置文件
vim /etc/ntp.conf

​ 取消restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap的注释

​ 注释如下内容:

​ #server 0.centos.pool.ntp.org iburst
​ #server 1.centos.pool.ntp.org iburst
​ #server 2.centos.pool.ntp.org iburst
​ #server 3.centos.pool.ntp.org iburst

  1. 添加当前节点

    server 127.127.1.0

    fudge 127.127.1.0 stratum 10

  2. 修改/etc/sysconfig/ntpd文件

    添加一行 SYNC_HWCLOCK=yes 让硬件时间与系统时间进行同步

  3. 重启ntpd服务,并设置开机启动

    service ntpd start	
    chkconfig ntpd on
    
  4. 其他机器配置:

    1. 配置1分钟与时间服务同步一次

      craton -e
      # 内容如下:
      */1 * * * * /usr/sbin/ntpdate hadoop101
      
    2. 修改任意机器时间进行测试

      date -s "2011-1-1 11:11:11"
      
    3. 1分钟后查看

9. 测试

  1. 在hadoop101上启动dfs
[hadoop@hadoop101 hadoop-2.7.2]$ start-dfs.sh
  1. 在hadoop102上启动yarn
[hadoop@hadoop102 hadoop-2.7.2]$ start-yarn.sh
  1. 在hadoop103上启动历史服务器
[hadoop@hadoop101 hadoop-2.7.2]$ mr-jobhistory start historyserver
  1. 打开浏览器,输入192.168.106.101:50070查看集群

  2. 在hadoop101上上传文件到HDFS

[hadoop@hadoop101 hadoop-2.7.2]$ hadoop fs -put README.txt /
  1. 进行mapreduce
[hadoop@hadoop101 hadoop-2.7.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /README.txt /output1
  1. 打开浏览器,输入192.168.106.102:80800查看mp运行情况,任务运行完成点击History进行查看
  2. 以上操作都没出现异常,则集群搭建成功

新增机器

在主节点上增加新机器的映射,然后配置好java和hadoop直接启动DataNode即可关联到集群

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值