Hadoop集群完全分布式模式搭建

#Start

Hadoop是用java编写的,所以如果要在服务器上部署hadoop,必须要在服务器上安装好java环境

在我的虚拟机中,java的环境:

JAVA_HOME=/usr/lib/jdk/jdk1.8.0_191
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
PATH=${JAVA_HOME}/bin:$PATH

关于hadoop的运行模式有以下三种

1.单机模式

在默认情况下,hadoop被配置成以非分布式模式运行的一个独立的java进程,这对调试非常有帮助

也就是说,这种模式下,hadoop只会在一个java进程当中运行

2.伪分布式模式

hadoop可以在单节点上以所谓的伪分布式模式运行,此时每个hadoop守护进程都作为一个独立的java进程运行

也就是说,在这种模式下,hadoop能同时在多个java进程当中运行,这种情况也就模拟了一种分布式的方式,但是这种情况下的hadoop是在单独一个节点上面运行的

3.完全分布式模式

这种情况下就是hadoop在不同的节点当中运行,也就是真正的分布式

下载hadoop可以直接从官网下载,最好下载binary版本的hadoop,可以直接使用

当下载完成并解压之后,可以看见hadoop文件夹当中有以下几个目录

bin:Hadoop最节本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用hadoop

etc:Hadoop配置文件所在的目录

include:对外提供的编译库头文件

lib:该目录包含了hadoop对外提供的编程动态库和静态库,与include中的头文件结合使用

libexec:各个服务对用的shell配置文件所在的目录,可用于配置日志输出,启动参数(如JVM参数)等基本信息

sbin:Hadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关闭脚本

share:Hadoop各个模块编译后的jar包所在的目录

###配置文件编写

1.hadoop-env.sh

export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_191

2.core-site.xml


    
            fs.default.name
            hdfs://hadoop-1:9000
    
    
            hadoop.tmp.dir
            /var/hadoop
    

注:假如放在/tmp/hadoop当中,文件就会被定时清理,所以不能放在/tmp文件夹当中,用来保证数据不会丢失

3.hdfs-site.xml


        
                dfs.namenode.secondary.http-address
                hadoop-2:50090
        

4.mapred-site.xml


        
                mapreduce.framework.name
                yarn
        

5.yarn-site.xml




        
                yarn.resourcemanager.hostname
                hadoop-2.136
        
        
                yarn.nodemanager.aux-services
                mapreduce_shuffle
        


6.slaves

192.168.209.136
192.168.209.139
192.168.209.138

7.环境变量配置

export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_191
export JRE_HOME=${JAVA_HOME}/jre    
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib    
export HADOOP_HOME=/usr/lib/hadoop/hadoop-2.9.2
export PATH=$PATH:${JAVA_HOME}/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

8.使环境变量文件生效

source /etc/profile

###启动前

首次启动前需要进行格式化

格式化本质是进行文件系统的初始化操作 创建一些自己所需要的文件

格式化之后 集群启动成功 后续再也不要进行格式化

格式化的操作在hdfs集群的主角色(namenode)所在的机器上操作

hdfs namenode -format

###启动方式

集群一键启动

start-dfs.sh

start-yarn.sh

关闭

stop-dfs.sh

stop-yarn.sh

启动成功后

root@hadoop-1:/usr/lib/hadoop/hadoop-2.9.2/sbin# ./start-dfs.sh 
Starting namenodes on [hadoop-1]
hadoop-1: starting namenode, logging to /usr/lib/hadoop/hadoop-2.9.2/logs/hadoop-root-namenode-hadoop-1.out
hadoop-3: starting datanode, logging to /usr/lib/hadoop/hadoop-2.9.2/logs/hadoop-root-datanode-hadoop-3.out
hadoop-1: starting datanode, logging to /usr/lib/hadoop/hadoop-2.9.2/logs/hadoop-root-datanode-hadoop-1.out
hadoop-2: starting datanode, logging to /usr/lib/hadoop/hadoop-2.9.2/logs/hadoop-root-datanode-hadoop-2.out
Starting secondary namenodes [hadoop-2]
hadoop-2: starting secondarynamenode, logging to /usr/lib/hadoop/hadoop-2.9.2/logs/hadoop-root-secondarynamenode-hadoop-2.out
root@hadoop-1:/usr/lib/hadoop/hadoop-2.9.2/sbin# ./start-yarn.sh 
starting yarn daemons
starting resourcemanager, logging to /usr/lib/hadoop/hadoop-2.9.2/logs/yarn-root-resourcemanager-hadoop-1.out
hadoop-3: starting nodemanager, logging to /usr/lib/hadoop/hadoop-2.9.2/logs/yarn-root-nodemanager-hadoop-3.out
hadoop-1: starting nodemanager, logging to /usr/lib/hadoop/hadoop-2.9.2/logs/yarn-root-nodemanager-hadoop-1.out
hadoop-2: starting nodemanager, logging to /usr/lib/hadoop/hadoop-2.9.2/logs/yarn-root-nodemanager-hadoop-2.out
root@hadoop-1:/usr/lib/hadoop/hadoop-2.9.2/sbin# 

使用jps命令

hadoop-1中:

37968 DataNode
36869 ResourceManager
38374 Jps
37049 NodeManager
37806 NameNode

hadoop-2中:

35780 NodeManager
36628 Jps
36326 DataNode
36487 SecondaryNameNode

hadoop-3中:

35744 DataNode
35409 NodeManager
35916 Jps

每次在hadoop-1中修改完配置文件之后,都需要做以下动作(包括格式化之后)

 scp -r /usr/lib/hadoop/hadoop-2.9.2/ root@hadoop-2:/usr/lib/hadoop/

将hadoop远程发送到所有的节点当中

启动之后,就可以从浏览器当中查看

namenode http://192.168.209.136:50070

resourcemanager http://192.168.209.136:8088

你可能感兴趣的:(Hadoop集群完全分布式模式搭建)