前言
Hadoop集群完全分布式搭建步骤:1、准备三台虚拟机 2、配置linux系统环境(见之前博客) 3、安装jdk和hadoop(见之前博客) 4、修改hadoop配置参数 5、单点启动服务 6、配置ssh免密登陆 7、群起hadoop集群并测试
搭建环境:CentOS 7.0+hadoop2.7.2+jdk1.8
一、Hadoop集群搭建规划
HDFS:NameNode、DataNode、SecondaryNameNode
MapReduce:ResourceManager、NodeManager
hadoop88 | hadoop89 | hadoop90 | |
HDFS | NameNode DataNode | SecondaryNameNode DataNode | DataNode |
MapReduce | NodeManager | NodeManager | ResourceManager NodeManager |
二、Hadoop配置文件参数修改
补充:Hadoop目录结构
drwxr-xr-x. 2 root root 4096 May 22 2017 bin
drwxr-xr-x. 3 root root 19 May 22 2017 etc
drwxr-xr-x. 2 root root 101 May 22 2017 include
drwxr-xr-x. 3 root root 19 May 22 2017 lib
drwxr-xr-x. 2 root root 4096 May 22 2017 libexec
-rw-r--r--. 1 root root 15429 May 22 2017 LICENSE.txt
-rw-r--r--. 1 root root 101 May 22 2017 NOTICE.txt
-rw-r--r--. 1 root root 1366 May 22 2017 README.txt
drwxr-xr-x. 2 root root 4096 May 22 2017 sbin
drwxr-xr-x. 4 root root 29 May 22 2017 share
(1)bin目录:存放对Hadoop相关服务(hdfs,yarn,mapred)进行操作的脚本
(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
(4)sbin目录:存放启动或停止Hadoop相关服务的脚本
(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例
核心配置文件
1、core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop88:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
Hdfs配置文件
2、hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144/
3、hdfs-site.xml
<!-- hdfs副本数默认为3 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- SecondaryNameNode的地址和端口号 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop89:50090</value>
</property>
YARN配置文件
4、yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
5、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>hadoop90</value>
</property>
MapReduce配置文件
6、mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
7、mapred-site.xml(先执行这个更改名称 mv mapred-site.xml.template mapred-site.xml)
<!-- 指定MR运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器的地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop90:10020</value>
</property>
<!-- 历史服务器页面的地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop90:19888</value>
</property>
8、slaves (集群里所有从节点)群起集群命令时会调用
hadoop88
hadoop89
hadoop90
scp -r hadoop/ root@hadoop89:/opt/module/hadoop-2.7.2/etc/
scp -r hadoop/ root@hadoop90:/opt/module/hadoop-2.7.2/etc/
注意:集群里的机器都要进行以上的配置
对HDFS namenode 格式化
命令:hdfs namenode -format
注意:不要重复格式化,不然出错。如果重复格式化需要删除namenode下数据目录。
为什么要格式化?
NameNode主要被用来管理整个分布式文件系统的命名空间(实际上就是目录和文件)的元数据信息,同时为了保证数据的可靠性,还加入了操作日志,所以NameNode会持久化这些数据(保存到本地的文件系统中)。对于第一次使用HDFS,在启动NameNode时,需要先执行 -format命令,然后才能正常启动NameNode节点服务。
三、单点启动服务
需要到集群中的每台机器上启动和停止,对于以后大型集群来说,很少会全部启动和关闭。
1、分别启动/停止HDFS组件
hadoop-daemon.sh start / stop namenode / datanode / secondarynamenode
2、启动/停止YARN
yarn-daemon.sh start / stop resourcemanager / nodemanager
四、群起Hadoop集群
各个模块分开启动/停止(配置ssh是前提)
1、整体启动/停止HDFS
start-dfs.sh / stop-dfs.sh
2、整体启动/停止YARN
start-yarn.sh / stop-yarn.sh
3、验证
在三台机器上jsp
WEB访问:
Yarn http://192.168.25.90:8088/
HDFS http://192.168.25.88:50070/