目录
1.Hadoop运行模式
Hadoop运行模式包括:本地模式、伪分布式模式以及完全分布式模式。
Hadoop官方网站:http://hadoop.apache.org/
本地模式和伪分布式模式本文就不搭了,有兴趣的可以自己看看
2.集群搭建
集群搭建步骤:
- 准备3台客户机(关闭防火墙、静态ip、主机名称)
- 安装JDK
- 配置环境变量
- 安装Hadoop
- 配置环境变量
- 配置集群
- 单点启动
- 配置ssh
- 群起并测试集群
3.集群规划
hadoop102 | hadoop103 | hadoop104 | |
---|---|---|---|
HDFS | NameNode、DataNode | DataNode | SecondaryNameNode、DataNode |
YARN | NodeManager | ResourceManager 、NodeManager | NodeManager |
安装Hadoop
通过Xftp工具上传Hadoop压缩包到 /opt/software 目录下
[hadoop@hadoop102 software]$ ls
hadoop-2.7.2.tar.gz
[hadoop@hadoop102 software]$ tar -zxf hadoop-2.7.2.tar.gz -C /opt/module
解压缩到 /opt/module 目录下
修改配置文件
配置文件位置:/opt/module/hadoop-2.7.2/etc/hadoop
(1)核心配置文件
编辑core-site.xml
[hadoop@hadoop102 hadoop]$ vim core-site.xml
在配置文件中加上如下配置
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
(2)HDFS配置文件
配置 hadoop-env. sh
[hadoop@hadoop102 hadoop]$ vim hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置hdfs-site.xml
[hadoop@hadoop102 hadoop]$ vim hdfs-site.xml
在配置文件中加上如下配置
<!-- 文件副本数, 默认是3 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:50090</value>
</property>
(3)YARN配置文件
配置 yarn-env. sh
[hadoop@hadoop102 hadoop]$ vim yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置yarn-site.xml
[hadoop@hadoop102 hadoop]$ vim yarn-site.xml
在配置文件中加上如下配置
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
(4)MapReduce配置文件
配置 mapred-env. sh
[hadoop@hadoop102 hadoop]$ vim mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置mapred-site.xml
[hadoop@hadoop102 hadoop]$ cp mapred-site.xml.template mapred-site.xml
[hadoop@hadoop102 hadoop]$ vim mapred-site.xml
在配置文件中加上如下配置
<!-- 指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
(5)配置slaves
注:这一步不配置只能单节点启动
在文件中增加你配置集群的所有节点
hadoop102
hadoop103
hadoop104
拷贝配置文件到其他机器
scp -r /opt/module/ hadoop103:/opt/module
scp -r /opt/module/ hadoop104:/opt/module
拷贝完成随便打开几个配置文件检查一下
4.启动集群
配置SSH
集群启动前需要配置好SSH
.ssh在用户的家目录下(如 /home/hadoop/.ssh/ ):
(1)生成公钥和私钥:
[hadoop@hadoop102 .ssh]$ ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
(2)将公钥拷贝到要免密登录的目标机器上
[hadoop@hadoop102 .ssh]$ ssh-copy-id hadoop102
[hadoop@hadoop102 .ssh]$ ssh-copy-id hadoop103
[hadoop@hadoop102 .ssh]$ ssh-copy-id hadoop104
注意:
还需要在hadoop102上采用hadoop账号,配置一下无密登录到hadoop102、hadoop103、hadoop104;
还需要在hadoop103上采用hadoop账号配置一下无密登录到hadoop102、hadoop103、hadoop104服务器上。
执行一下操作,如果不需要密码登陆则说明SSH免密登陆配置成功
[hadoop@hadoop102 .ssh]$ ssh hadoop103
启动集群
(1)如果集群是第一次启动,需要格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)
[hadoop@hadoop102 ~]$ cd /opt/module/hadoop-2.7.2/
[hadoop@hadoop102 hadoop-2.7.2]$ bin/hdfs namenode -format
注意:在namenode的节点上启动hdfs , 在 ResourceManager 节点上启动yarn
(2)启动HDFS
[hadoop@hadoop102 ~]$ cd /opt/module/hadoop-2.7.2/
[hadoop@hadoop102 hadoop-2.7.2]$ start-dfs.sh
Starting namenodes on [hadoop102]
hadoop102: starting namenode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-atguigu-namenode-hadoop102.out
hadoop104: starting datanode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-atguigu-datanode-hadoop104.out
hadoop103: starting datanode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-atguigu-datanode-hadoop103.out
hadoop102: starting datanode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-atguigu-datanode-hadoop102.out
Starting secondary namenodes [hadoop104]
hadoop104: starting secondarynamenode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-atguigu-secondarynamenode-hadoop104.out
[hadoop@hadoop102 hadoop-2.7.2]$
(3)启动YARN
[atguigu@hadoop103 hadoop-2.7.2]$ start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-atguigu-resourcemanager-hadoop103.out
hadoop104: starting nodemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-atguigu-nodemanager-hadoop104.out
hadoop102: starting nodemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-atguigu-nodemanager-hadoop102.out
hadoop103: starting nodemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-atguigu-nodemanager-hadoop103.out
[atguigu@hadoop103 hadoop-2.7.2]$
jps查看java进程:
hadoop102
hadoop103
hadoop104
(4)web管理界面
注意:防火墙关闭或者开放50070和8088端口
HDFS: http://hadoop102:50070/
YARN: http://hadoop103:8088
看到这两个界面就说明集群搭建成功