Hadoop完全分布式集群搭建

集群规划

HDFS: 1个NameNode + n个DataNode + 1个2NN
YARN: 1个ResourceManager + n个NodeManager
hadoop1 hadoop2 hadoop3
DN DN DN
NM NM NM
NN RM 2NN

准备工作

准备3台虚拟机,可以新建1台,然后克隆2台

1.修改主机名

vi /etc/sysconfig/network,三台机器HOSTNAME分别改为hadoop1,hadoop2,hadoop3

2.设置静态ip

在hadoop1机器上
a.输入命令vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改
BOOTPROTO=static
ONBOOT=yes
添加
IPADDR=192.168.148.11 - - >这是你自己设置的IP地址,必须符合规则
GATEWAY=192.168.148.2 - - >这是网关地址
NETMASK=255.255.255.0 - - >这是子网掩码
DNS1=192.168.148.2 - - >写成网关地址
b.重启虚拟机
hadoop2,hadoop3重复以上操作,ip分别为
IPADDR=192.168.148.12
IPADDR=192.168.148.13

3.关闭防火墙

三台机器上
service iptables stop
chkconfig iptables off

4.修改hosts映射

三台机器上
192.168.148.11 hadoop1
192.168.148.12 hadoop2
192.168.148.13 hadoop3

5.配置免密登录

在hadoop1上
ssh-keygen -t rsa,回车三下
然后分别输入
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3

6.上传源码包并解压

在hadoop1机器上
mkdir /opt/software
mkdir /opt/module
上传jdk,hadoop的tar.gz到software,解压至module
tar -zxvf jdk-8u121-linux-x64.tar.gz -C /opt/module/
tar -zxvf hadoop-2.7.2.tar.gz -c /opt/module/

7.分布式集群配置文件

在hadoop1机器上
cd /opt/hadoop-2.7.2/
cd /etc/hadoop/
修改以下四个文件:
a.vi core-site.xml




  fs.defaultFS
  hdfs://hadoop1:9000




  hadoop.tmp.dir
  /opt/module/hadoop-2.7.2/data/tmp

b.vi hadoop-site.xml



   
      dfs.namenode.secondary.http-address
      hadoop3:50090
   


c.vi yarn-site.xml


    
       yarn.nodemanager.aux-services
       mapreduce_shuffle
    


    
        yarn.resourcemanager.hostname
        hadoop2
    

d.vi mapred-site.xml


   
   
      mapreduce.framework.name
      yarn
   
8.复制文件到其他节点

在hadoop1机器上
scp -r /opt/module/. hadoop2:/opt/module
scp -r /opt/module/. hadoop3:/opt/module

9.配置java hadoop环境变量

在三台机器上
vi /etc/profile

JAVA_HOME=/opt/module/jdk1.8.0_121
HADOOP_HOME=/opt/module/hadoop-2.7.2
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME HADOOP_HOME

source /etc/profile

10.格式化NameNode

在hadoop1机器上,如果集群是第一次启动,需要格式化NameNode
hadoop namenode -format

集群启动

集群单点启动

hadoop1机器上启动NN
hadoop-daemon.sh start namenode
在hadoop1 hadoop2 hadoop3上启动DN
hadoop-daemon.sh start datanode
在hadoop3上启动2NN
hadoop-daemon.sh start secondarynamenode
在hadoop2上启动RM
yarn-daemon.sh start resourcemanager
在hadoop1 hadoop2 hadoop3上启动NM
yarn-daemon.sh start nodemanager

群起集群

在hadoop2配置slaves
cd /opt/module/hadoop-2.7.2/etc/hadoop
vi slaves
添加
hadoop1
hadoop2
hadoop3
相关命令:
start-dfs.sh
stop-dfs.sh
start-yarn.sh
stop-yarn.sh

可能出现的JAVA_HOME is not set and could not be found的问题,解决如下:
在三台机器的/opt/module/hadoop-2.7.2/etc/hadoop
vi hadoop-env.sh
添加export JAVA_HOME=/opt/module/jdk1.8.0_121

统计单词数测试

test文件中包含若干单词,统计单词数测试如下:
hadoop fs -mkdir /wcinput
hadoop fs -put test /wcinput
hadoop jar hadoop hadoop-mapreduce-examples-2.7.2.jar
wordcount /wcinput /wcoutput
Hadoop完全分布式集群搭建_第1张图片

你可能感兴趣的:(hadoop)