Hadoop完全分布式
集群规划
192.168.120.11 node01 NameNode DataNode NodeManager
192.168.120.12 node02 DataNode NodeManager ResourceManager
192.168.120.13 node03 DataNode NodeManager
前期准备
Centos7
Jdk1.8
Hadoop 2.6.5
主机名和IP分配(根据自己的需求分配)
主机名 | node01 | node02 | node03 |
IP地址 | 192.168.120.11 | 192.168.120.12 | 192.168.120.13 |
设置网络:
根据此分别设置每台机器的NAT模式的地址
设置IP
NAT模式的地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=5163149b-31ba-4587-8c10-434648530b37
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.120.11
GATEWAY=192.168.120.2
DNS1=114.114.114.114
NETMASK=255.255.255.0
设置主机名
vi /etc/hosts
三台机器分别设置
node01中
node01
vi /etc/hosts
node02中
node02
node03中
vi /etc/hosts
node03
设置本机的ip到主机名的映射关系
vi /etc/hosts
192.168.120.11 node01
192.168.120.12 node02
192.168.120.13 node03
reboot 重启虚拟机
ping www.baidu.com
ping node02
看看是否可以ping通
配置ssh免密登录
在node01中进行
ssh-keygen -t rsa 生成ssh秘钥对然后按三次回车
ssh-copy-id root@node01 将公钥加入node01机器的受信列表中
ssh-copy-id root@node02 将公钥加入node02机器的受信列表中
ssh-copy-id root@node03 将公钥加入node03机器的受信列表中
ResourceManager: node02需登录到node01,node02,node03
设置如下:
ssh-keygen -t rsa 后回车几次就可以啦
ssh-copy-id root@node01
ssh-copy-id root@node02
ssh-copy-id root@node03
检测:
ssh node01
ssh node02
ssh node03
安装JDK:node01中进行
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
通过scp分发
scp -r /opt/module/jdk-8u144 root@node02:/opt/module/
scp -r /opt/module/jdk-8u144 root@node03:/opt/module/
vi /etc/profile
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
再次通过scp分发
scp -r /etc/profile root@node02:/etc/
scp -r /etc/profile root@node03:/etc/
重新加载source文件
source /etc/profile
检测配置是否生效
jps
java -version
安装hadoop 并配置环境变量:node01
安装
tar -zxvf hadoop-2.6.5.tar.gz -C /opt/module/
scp分发
scp -r /opt/module/hadoop-2.6.5 root@node02:/opt/module/
scp -r /opt/module/hadoop-2.6.5 root@node03:/opt/module/
配置
vim /etc/profile
export HADOOP_HOME=/opt/module/hadoop-2.6.5
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
scp分发profile文件
scp -r /etc/profile root@node02:/etc/
scp -r /etc/profile root@node03:/etc/
重新加载三台机器都做
source /etc/profile
测试:
hadoop
hdfs
配置 hadoop-env.sh中环境变量设置
vim /opt/module/hadoop-2.9.2/etc/hadoop/hadoop-env.sh 文件
将原来export JAVA_HOME=$JAVA_HOME
修改为jdk安装目录==> export JAVA_HOME= /opt/module/jdk1.8.0_144
配置core-site.xml文件
vim /opt/module/hadoop-2.6.5/etc/hadoop/core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.6.5/data</value>
</property>
在配置core-site.xml时想要使那台节点作为NameNode节点,就在配置文件中使用那个节点主机名作为fs.defaultFS的名字使用,图中使用的是node01作为NameNode,
配置hdfs-site.xml配置文件
vim /opt/module/hadoop-2.6.5/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
这里将副本数量修改为了3份,默认配置也是3份
配置slaves文件
vim /opt/module/hadoop-2.6.5/etc/hadoop/slaves
node01
node02
node03
yarn-site.xml配置
vim /opt/module/hadoop-2.6.5/etc/hadoop/yarn-site.xml
加入如下内容:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node02</value>
</property>
上述yarn.resourcemanager.hostname配置中的node02为当前机器的主机名
mapred-site.xml配置
cd /opt/module/hadoop-2.6.5/etc/hadoop
复制文件并且重命名为mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
加入如下配置:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
scp分发
scp -r /opt/module/hadoop-2.6.5/etc/hadoop root@node02:/opt/module/hadoop-2.6.5/etc/
slaves文件用来决定哪些节点为datanode,因为node01节点既要是NameNode也要是DataNode因此也要讲node01放在salves文件中,这样才会认为自己也是一个dataNode节点
在node01节点上进行Namenode格式化
hdfs namenode -format
启动hdfs集群
在node01上执行: start-dfs.sh 关闭使用: stop-dfs.sh
启动yarn集群
start-yarn.sh //必须在ResourceManager结点上执行就是node02上面
关闭集群
stop-yarn.sh
stop-dfs.sh
stop-all.sh
查看各个节点进程,根据自己虚拟机查看进程
node01
[root@node01 hadoop-2.6.5]# jps
2291 NodeManager
1592 NameNode
1853 SecondaryNameNode
2413 Jps
1678 DataNode
node02
[root@node02 hadoop-2.6.5]# jps
1604 DataNode
2244 NodeManager
2328 Jps
1964 ResourceManager
node03
[root@node03 hadoop-2.6.5]# jps
1760 NodeManager
1882 Jps
1484 DataNode
在node01中访问hdfs提供的web界面
systemctl status firewalld 查看防火墙
systemctl stop firewalld 关闭防火墙
http://192.168.120.12:8088/