hadoop集群搭建--完全分布式搭建

前期准备

  1. hadoop集群搭建–虚拟机centos7minimal版网络配置【文章链接】
  2. hadoop集群搭建–hadoop-2.8.5编译【文章链接】
  3. hadoop集群搭建–虚拟机克隆、ssh免密登录【文章链接】

安装配置hadoop

在本地编译过的hadoop安装包【点击下载】。下载解压后,在target目录下找到hadoop-2.8.5.tar.gz,将其解压到~/apps路径下,解压后如下:

[hadoop@min1 hadoop-2.8.5]$ ll
total 132
drwxrwxr-x. 2 hadoop hadoop  4096 Sep 23 15:54 bin
drwxrwxr-x. 3 hadoop hadoop    19 Sep 23 15:54 etc
drwxrwxr-x. 2 hadoop hadoop   101 Sep 23 15:54 include
drwxrwxr-x. 3 hadoop hadoop    19 Sep 23 15:54 lib
drwxrwxr-x. 2 hadoop hadoop  4096 Sep 23 15:54 libexec
-rw-r--r--. 1 hadoop hadoop 99253 Sep 23 15:54 LICENSE.txt
-rw-r--r--. 1 hadoop hadoop 15915 Sep 23 15:54 NOTICE.txt
-rw-r--r--. 1 hadoop hadoop  1366 Sep 23 15:54 README.txt
drwxrwxr-x. 2 hadoop hadoop  4096 Sep 23 15:54 sbin
drwxrwxr-x. 3 hadoop hadoop    19 Sep 23 15:54 share

配置环境变量

#HADOOP_HOME
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.8.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

JDK在之前的介绍中已经安装好了,此处就不再重复安装了,如果没有安装jdk,可自行找到前面的文章,里面有介绍。安装好之后的配置文件如下:

#JAVA_HOME
export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_192
#export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

#HADOOP_HOME
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.8.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

配置hadoop的配置文件

四个核心配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml;
三个环境变量配置文件:hadoop-env.sh、mapred-env.sh、yarn-env.sh
一个slaves文件:slaves

具体配置如下:(在修改这些配置文件之前,我都对这些配置文件进行备份了,即使出错,也能很好的恢复)

四个核心配置文件之——core-site.xml

 [hadoop@min1 hadoop]$ vi core-site.xml 
<configuration>
<!--配置hdfs文件系统的命名空间。通过value值能唯一确定一个hdfs文件系统,当另一个hdfs文件系统需要获取本系统的文件时,该value值能定位到-->
<!--其实这里配置fs.default.name也可以,但是fs.default.name只能在单一的namenode下配置成功,-->
<!--如果namenode要进行高可用配置的时候,就只能使用fs.defaultFS,使用fs.default.name会报错 -->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://min1:9000</value>
  </property>

<!-- 配置操作hdfs的缓存大小 -->
  <property>
    <name>io.file.buffer.size</name>
    <value>4096</value>
  </property>
<!-- 配置临时数据存储目录 -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/apps/hadoop-2.8.5/tmp</value>
  </property>

</configuration>

说明:(大概的理解哈,不知道准不准确,希望知道的大佬能多多批评指正,谢谢了!)
fs.defaultFS:配置hdfs文件系统的命名空间。通过value值能唯一确定一个hdfs文件系统,当另一个hdfs文件系统需要获取本系统的文件时,该value值能定位到。其实这里配置fs.default.name也可以,但是fs.default.name只能在单一的namenode下配置成功。如果namenode要进行高可用配置的时候,就只能使用fs.defaultFS,使用fs.default.name会报错。
io.file.buffer.size:配置缓存大小。这个就没有什么多说的了。
hadoop.tmp.dir:hadoop的临时文件存放目录,根据自己的情况去设置位置,一般放在hadoop的安装目录下。不用在hadoop安装目录下手动创建该文件夹,hadoop在启动的时候会根据配置文件自动创建。

四个核心配置文件之——hdfs-site.xml

[hadoop@min1 hadoop]$ vi hdfs-site.xml 
<configuration>

<!--配置副本数:这个根据你的集群数和你要求保留的副本数来设定。视具体情况来定,此处设置为3 -->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
<!--hdfs的元数据存储位置。元数据就是描述数据的数据,并不是实际的业务数据-->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/home/hadoop/apps/hadoop-2.8.5/hdfs/name</value>
    </property>
<!--hdfs的数据存储位置。真实的业务数据保存文件-->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/hadoop/apps/hadoop-2.8.5/hdfs/data</value>
    </property>
<!--hdfs的namenode的web地址,端口默认是50070。名称节点的http协议访问地址与端口。将要作为namenode的主机名赋给这里的value,作为访问地址-->
    <property>
        <name>dfs.http.address</name>
        <value>min1:50070</value>
    </property>
<!--hdfs的备份的web uri 地址,端口默认是50090。备份名称节点的http协议访问地址与端口 -->
    <property>
        <name>dfs.secondary.http.address</name>
        <value>min2:50090</value>
    </property>
<!--是否开启web操作hdfs。访问namenode的hdfs使用50070端口,访问datanode的webhdfs使用50075端口。-->
<!--访问文件、文件夹信息使用namenode的IP和50070端口,访问文件内容或者进行打开、上传、修改、下载等操作使用datanode的IP和50075端口。-->
<!--要想不区分端口,直接使用namenode的IP和端口进行所有的webhdfs操作,就需要在所有的datanode上都设置hefs-site.xml中的dfs.webhdfs.enabled为true。-->
    <property> 
        <name>dfs.webhdfs.enabled</name> 
        <value>true</value> 
    </property> 
<!--是否启用hdfs权限(acl)。文件操作时的权限检查标识。如果是true则检查权限,否则不检查(每一个人都可以存取文件)。于NameNode上设定-->
    <property> 
        <name>dfs.permissions</name> 
        <value>false</value>
    </property>

</configuration>

说明:
dfs.replication:配置副本数:这个根据你的集群数和你要求保留的副本数来设定。视具体情况来定,此处设置为3。
dfs.namenode.name.dir:hdfs的元数据存储位置。元数据就是描述数据的数据,并不是实际的业务数据。
dfs.datanode.data.dir:hdfs的数据存储位置。真实的业务数据保存文件。
dfs.http.address:hdfs的namenode的web地址,端口默认是50070。名称节点的http协议访问地址与端口。将要作为namenode的主机名赋给这里的value,作为访问地址。
dfs.secondary.http.address:hdfs的备份的web uri 地址,端口默认是50090。备份名称节点的http协议访问地址与端口【注意:这里配置不合理,把备份名称节点和主名称节点配置在一台服务器上了,这样没有起到备份的作用,服务器要是挂了,两个节点都挂了。应该将备份名称节点配置到与其他服务器上,只要不和主名称节点在同一台服务器上即可】。
dfs.webhdfs.enabled:是否开启web操作hdfs。访问namenode的hdfs使用50070端口,访问datanode的webhdfs使用50075端口。访问文件、文件夹信息使用namenode的IP和50070端口,访问文件内容或者进行打开、上传、修改、下载等操作使用datanode的IP和50075端口。要想不区分端口,直接使用namenode的IP和端口进行所有的webhdfs操作,就需要在所有的datanode上都设置hefs-site.xml中的dfs.webhdfs.enabled为true。
dfs.permissions:是否启用hdfs权限(acl)。文件操作时的权限检查标识。如果是true则检查权限,否则不检查(每一个人都可以存取文件)。于NameNode上设定。

四个核心配置文件之——mapred-site.xml

[hadoop@min1 hadoop]$ cp mapred-site.xml.template mapred-site.xml
[hadoop@min1 hadoop]$ vi mapred-site.xml 
<configuration>

<!--指定执行mapreduce作业的运行框架-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
<!--Hadoop一个自带的历史服务器的地址。默认端口是10020-->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>min1:10020</value>
    </property>
<!--Hadoop一个自带的历史服务器的WEB地址。默认端口是19888-->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>min1:19888</value>
    </property>

</configuration>

说明:
mapreduce.framework.name:指定maoreduce运行框架。
mapreduce.jobhistory.address:Hadoop一个自带的历史服务器的地址。默认端口是10020。
mapreduce.jobhistory.webapp.address:Hadoop一个自带的历史服务器的WEB地址。默认端口是19888。

四个核心配置文件之——yarn-site.xml

[hadoop@min1 hadoop]$ vi yarn-site.xml 
<configuration>

<!-- Site specific YARN configuration properties -->


<!--指定resourcemanager所启动的服务器主机名-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>min3</value>  
    </property>
<!--指定mapreduce的shuffle。NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
<!--指定resourcemanager的内部通讯地址。-->
<!--resourcemanager对客户端暴露的地址,客户端通过该地址向resourcemanager提交应用程序等-->
<!--默认端口是8032 -->
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>${yarn.resourcemanager.hostname}:8032</value>
    </property>
<!--指定scheduler的内部通讯地址-->
<!--resourcemanager对AM暴露的地址,AM通过地址想让resourcemanager申请资源,释放资源等-->
<!--默认端口是8030 -->
    <property> 
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>${yarn.resourcemanager.hostname}:8030</value>
    </property>
<!--指定resource-tracker的内部通讯地址--> 
<!--resourcemanager对NM暴露地址,NM通过该地址向resourcemanager汇报心跳,领取任务等-->
<!--默认端口是8031 -->
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>${yarn.resourcemanager.hostname}:8031</value>
    </property>
<!--指定resourcemanager.admin的内部通讯地址-->
<!--管理员可以通过该地址向resourcemanager发送管理命令等-->
<!--默认端口是8033 -->
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>${yarn.resourcemanager.hostname}:8033</value>
    </property>
<!--指定resourcemanager.webapp的ui监控地址-->
<!--resourcemanager对外暴露的web http地址,用户可通过该地址在浏览器中查看集群信息-->
<!--默认端口是8088 -->
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>${yarn.resourcemanager.hostname}:8088</value>
    </property>

</configuration>

说明:
yarn.resourcemanager.hostname:使resourcemanager进程在指定的服务器上启动(指定YARN的ResourceManager的地址)。这个要配置一下,不然RM的启动位置会随yarn的启动命令在哪台机器上执行就在哪台机器上启动RM进程进行变化 。
yarn.nodemanager.aux-services:指定mapreduce的shuffle。NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序。
yarn.resourcemanager.address:指定resourcemanager的内部通讯地址。resourcemanager对客户端暴露的地址,客户端通过该地址向resourcemanager提交应用程序等。默认端口是8032。
yarn.resourcemanager.scheduler.address:指定scheduler的内部通讯地址。resourcemanager对AM暴露的地址,AM通过地址想让resourcemanager申请资源,释放资源等。默认端口是8030。
yarn.resourcemanager.resource-tracker.address:指定resource-tracker的内部通讯地址。resourcemanager对NM暴露地址,NM通过该地址向resourcemanager汇报心跳,领取任务等。默认端口是8031。
yarn.resourcemanager.admin.address:定resourcemanager.admin的内部通讯地址。管理员可以通过该地址向resourcemanager发送管理命令等。默认端口是8033。
yarn.resourcemanager.webapp.address:定resourcemanager.webapp的ui监控地址。resourcemanager对外暴露的web http地址,用户可通过该地址在浏览器中查看集群信息。默认端口是8088。

三个环境变量配置文件:hadoop-env.sh

[hadoop@min1 hadoop]$ vi hadoop-env.sh 
export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_192

三个环境变量配置文件:mapred-env.sh

[hadoop@min1 hadoop]$ vi mapred-env.sh 
export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_192

三个环境变量配置文件:yarn-env.sh

[hadoop@min1 hadoop]$ vi yarn-env.sh 
export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_192

注意:这里三个环境变量配置文件不能使用export JAVA_HOME=${JAVA_HOME}来配置JAVA_HOME。我开始的时候就是这样配置的,所以在启动的时候报JAVA_HOME not set and not found的错误。改成上述配置就没问题了。

一个slaves文件:slaves

min2
min3
min4
min5

将配置文件拷贝到集群其他机器

[hadoop@min1 ~]$ sudo scp /etc/profile min2:/etc/
[sudo] password for hadoop: 
root@min2's password: 
profile                                            100% 2342     2.3KB/s   00:00

[hadoop@min1 ~]$ sudo scp /etc/profile min3:/etc/
root@min2's password: 
profile                                            100% 2342     2.3KB/s   00:00

[hadoop@min1 ~]$ sudo scp /etc/profile min4:/etc/
root@min2's password: 
profile                                            100% 2342     2.3KB/s   00:00

[hadoop@min1 ~]$ sudo scp /etc/profile min5:/etc/
root@min2's password: 
profile                                            100% 2342     2.3KB/s   00:00

在传送hadoop的时候,先将hadoop文件夹打包,然后再发送,这是习惯,不然有可能因为网络原因到导致有些文件丢失。(当然在本地的虚拟机上传输文件夹一般不会出现这样的情况,但是传送文件夹的时候,一般不会直接全送它,而是将其先打包压缩成一个tar文件再发送,这是好的习惯)

[hadoop@min1 apps]$ tar -zcvf hadoop-2.8.5.tar.gz hadoop-2.8.5/
[hadoop@min1 apps]$ scp hadoop-2.8.5.tar.gz min2:~/apps/
hadoop-2.8.5.tar.gz                                     100%  193MB 193.4MB/s   00:01  

[hadoop@min1 apps]$ scp hadoop-2.8.5.tar.gz min3:~/apps/
hadoop-2.8.5.tar.gz                                     100%  193MB 193.4MB/s   00:01 

[hadoop@min1 apps]$ scp hadoop-2.8.5.tar.gz min4:~/apps/
hadoop-2.8.5.tar.gz                                     100%  193MB 193.4MB/s   00:01 

[hadoop@min1 apps]$ scp hadoop-2.8.5.tar.gz min5:~/apps/
hadoop-2.8.5.tar.gz                                     100%  193MB 193.4MB/s   00:01 

在min2~min5上一次解压hadoop-2.8.5.tar.gz。以min2为例:

[hadoop@min2 apps]$ tar -zxvf hadoop-2.8.5.tar.gz 

启动并验证hadoop集群

启动集群

第一次启动集群,需要格式化namenode,操作如下:

[hadoop@min1 apps]$ hdfs namenode -format

输出如下内容,则表示格式化成功:

************************************************************/
19/09/29 04:16:08 INFO namenode.NameNode: registered UNIX signal handlers for [TERM, HUP, INT]
19/09/29 04:16:08 INFO namenode.NameNode: createNameNode [-format]
19/09/29 04:16:09 WARN common.Util: Path /home/hadoop/apps/hadoop-2.8.5/hdfs/name should be specified as a URI in configuration files. Please update hdfs configuration.
19/09/29 04:16:09 WARN common.Util: Path /home/hadoop/apps/hadoop-2.8.5/hdfs/name should be specified as a URI in configuration files. Please update hdfs configuration.
Formatting using clusterid: CID-a72e9765-b369-4b92-a8a3-f27f7941ffa8
19/09/29 04:16:09 INFO namenode.FSEditLog: Edit logging is async:true
19/09/29 04:16:09 INFO namenode.FSNamesystem: KeyProvider: null
19/09/29 04:16:09 INFO namenode.FSNamesystem: fsLock is fair: true
19/09/29 04:16:09 INFO namenode.FSNamesystem: Detailed lock hold time metrics enabled: false
19/09/29 04:16:09 INFO blockmanagement.DatanodeManager: dfs.block.invalidate.limit=1000
19/09/29 04:16:09 INFO blockmanagement.DatanodeManager: dfs.namenode.datanode.registration.ip-hostname-check=true
19/09/29 04:16:09 INFO blockmanagement.BlockManager: dfs.namenode.startup.delay.block.deletion.sec is set to 000:00:00:00.000
19/09/29 04:16:09 INFO blockmanagement.BlockManager: The block deletion will start around 2019 Sep 29 04:16:09
19/09/29 04:16:09 INFO util.GSet: Computing capacity for map BlocksMap
19/09/29 04:16:09 INFO util.GSet: VM type       = 64-bit
19/09/29 04:16:09 INFO util.GSet: 2.0% max memory 889 MB = 17.8 MB
19/09/29 04:16:09 INFO util.GSet: capacity      = 2^21 = 2097152 entries
19/09/29 04:16:09 INFO blockmanagement.BlockManager: dfs.block.access.token.enable=false
19/09/29 04:16:09 INFO blockmanagement.BlockManager: defaultReplication         = 3
19/09/29 04:16:09 INFO blockmanagement.BlockManager: maxReplication             = 512
19/09/29 04:16:09 INFO blockmanagement.BlockManager: minReplication             = 1
19/09/29 04:16:09 INFO blockmanagement.BlockManager: maxReplicationStreams      = 2
19/09/29 04:16:09 INFO blockmanagement.BlockManager: replicationRecheckInterval = 3000
19/09/29 04:16:09 INFO blockmanagement.BlockManager: encryptDataTransfer        = false
19/09/29 04:16:09 INFO blockmanagement.BlockManager: maxNumBlocksToLog          = 1000
19/09/29 04:16:09 INFO namenode.FSNamesystem: fsOwner             = hadoop (auth:SIMPLE)
19/09/29 04:16:09 INFO namenode.FSNamesystem: supergroup          = supergroup
19/09/29 04:16:09 INFO namenode.FSNamesystem: isPermissionEnabled = false
19/09/29 04:16:09 INFO namenode.FSNamesystem: HA Enabled: false
19/09/29 04:16:09 INFO namenode.FSNamesystem: Append Enabled: true
19/09/29 04:16:09 INFO util.GSet: Computing capacity for map INodeMap
19/09/29 04:16:09 INFO util.GSet: VM type       = 64-bit
19/09/29 04:16:09 INFO util.GSet: 1.0% max memory 889 MB = 8.9 MB
19/09/29 04:16:09 INFO util.GSet: capacity      = 2^20 = 1048576 entries
19/09/29 04:16:09 INFO namenode.FSDirectory: ACLs enabled? false
19/09/29 04:16:09 INFO namenode.FSDirectory: XAttrs enabled? true
19/09/29 04:16:09 INFO namenode.NameNode: Caching file names occurring more than 10 times
19/09/29 04:16:09 INFO util.GSet: Computing capacity for map cachedBlocks
19/09/29 04:16:09 INFO util.GSet: VM type       = 64-bit
19/09/29 04:16:09 INFO util.GSet: 0.25% max memory 889 MB = 2.2 MB
19/09/29 04:16:09 INFO util.GSet: capacity      = 2^18 = 262144 entries
19/09/29 04:16:09 INFO namenode.FSNamesystem: dfs.namenode.safemode.threshold-pct = 0.9990000128746033
19/09/29 04:16:09 INFO namenode.FSNamesystem: dfs.namenode.safemode.min.datanodes = 0
19/09/29 04:16:09 INFO namenode.FSNamesystem: dfs.namenode.safemode.extension     = 30000
19/09/29 04:16:09 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.window.num.buckets = 10
19/09/29 04:16:09 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.num.users = 10
19/09/29 04:16:09 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.windows.minutes = 1,5,25
19/09/29 04:16:09 INFO namenode.FSNamesystem: Retry cache on namenode is enabled
19/09/29 04:16:09 INFO namenode.FSNamesystem: Retry cache will use 0.03 of total heap and retry cache entry expiry time is 600000 millis
19/09/29 04:16:09 INFO util.GSet: Computing capacity for map NameNodeRetryCache
19/09/29 04:16:09 INFO util.GSet: VM type       = 64-bit
19/09/29 04:16:09 INFO util.GSet: 0.029999999329447746% max memory 889 MB = 273.1 KB
19/09/29 04:16:09 INFO util.GSet: capacity      = 2^15 = 32768 entries
19/09/29 04:16:09 INFO namenode.FSImage: Allocated new BlockPoolId: BP-1373946097-192.168.109.101-1569701769608
19/09/29 04:16:09 INFO common.Storage: Storage directory /home/hadoop/apps/hadoop-2.8.5/hdfs/name has been successfully formatted.
19/09/29 04:16:09 INFO namenode.FSImageFormatProtobuf: Saving image file /home/hadoop/apps/hadoop-2.8.5/hdfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
19/09/29 04:16:09 INFO namenode.FSImageFormatProtobuf: Image file /home/hadoop/apps/hadoop-2.8.5/hdfs/name/current/fsimage.ckpt_0000000000000000000 of size 323 bytes saved in 0 seconds.
19/09/29 04:16:09 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
19/09/29 04:16:09 INFO util.ExitUtil: Exiting with status 0
19/09/29 04:16:09 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at min1/192.168.109.101
************************************************************/

启动HDFS

格式化成功之后,我们就可以启动HDFS了,命令如下:

[hadoop@min1 hadoop]$ start-dfs.sh 
Starting namenodes on [min1]
min1: starting namenode, logging to /home/hadoop/apps/hadoop-2.8.5/logs/hadoop-hadoop-namenode-min1.out
min5: starting datanode, logging to /home/hadoop/apps/hadoop-2.8.5/logs/hadoop-hadoop-datanode-min5.out
min3: starting datanode, logging to /home/hadoop/apps/hadoop-2.8.5/logs/hadoop-hadoop-datanode-min3.out
min2: starting datanode, logging to /home/hadoop/apps/hadoop-2.8.5/logs/hadoop-hadoop-datanode-min2.out
min4: starting datanode, logging to /home/hadoop/apps/hadoop-2.8.5/logs/hadoop-hadoop-datanode-min4.out
Starting secondary namenodes [min2]
min2: starting secondarynamenode, logging to /home/hadoop/apps/hadoop-2.8.5/logs/hadoop-hadoop-secondarynamenode-min2.out

启动Yarn

启动Yarn时需要注意,我们不能在NameNode上启动Yarn,而应该在ResouceManager所在的主机上启动。但我们这里是将NameNode和ResouceManager部署在了同一台主机上,所以,我们直接在min1这台机器上启动Yarn。

[hadoop@min1 hadoop]$ start-yarn.sh 
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/apps/hadoop-2.8.5/logs/yarn-hadoop-resourcemanager-min1.out
min3: starting nodemanager, logging to /home/hadoop/apps/hadoop-2.8.5/logs/yarn-hadoop-nodemanager-min3.out
min2: starting nodemanager, logging to /home/hadoop/apps/hadoop-2.8.5/logs/yarn-hadoop-nodemanager-min2.out
min5: starting nodemanager, logging to /home/hadoop/apps/hadoop-2.8.5/logs/yarn-hadoop-nodemanager-min5.out
min4: starting nodemanager, logging to /home/hadoop/apps/hadoop-2.8.5/logs/yarn-hadoop-nodemanager-min4.out

web验证

至此,我们的集群就已完全启动起来了,我们可以通过访问web页面,来做最后一步验证。我们已将web页面配置在min1主机上,因此,我们访问http://192.168.208.128:50070/,页面显示如下:
在这里插入图片描述


min1下启动的进程:

[hadoop@min1 ~]$ jps
7125 ResourceManager
6764 NameNode
7421 Jps

min2~min5启动的进程:

[hadoop@min2 apps]$ jps
4297 NodeManager
6967 SecondaryNameNode
4172 DataNode
4380 Jps

如果发现从机上没有启动DataNode进程,那是因为执行hdfs namenode -format命令过多了,导致从机上hadoop-2.8.5/hdfs/data文件夹下的数据与主机的name文件夹下的数据不一致了。此时只要删除data文件夹下的所以数据,重新格式化namenode,再启动,只要就解决DataNode没有启动的问题了。

关闭命令:可以逐个关闭。也可以使用stop-all.sh统一关闭。
开启也是类似,也可以使用start-all.sh命令,一并将dfs和yarn开启。
到这里,hadoop集群搭建已经成功完成!

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值