hadoop-2.6.0-cdh5.9.3分布式高可用部署

大家好,我是Linux运维工程师 Linke 。技术过硬,从不挖坑~


此文只说各组件的作用,部署搭建,不谈原理。知道这些基础组件的作用后,自个儿心中大概就对这玩意儿的工作方式有个差不多的了解了。好吧,其实我就这两下子,下面进入正题。(下面我是用root用户启动的,生产不用用root用户)

hdfs的一些专用词汇说明

NameNode: 负责管理文件系统的 namespace 以及客户端对文件的访问;
DataNode: 用于管理它所在节点上的存储;
FailoverController: 故障切换控制器,负责监控与切换 Namenode 服务;
JournalNode: 用于存储 EditLog;
Balancer: 用于平衡集群之间各节点的磁盘利用率;
HttpFS: 提供 HTTP 方式访问 HDFS 的功能;
EditLogs: 它包含最近对文件系统进行的与最新 FsImage 相关的所有修改;
FsImage: 它包含自 Namenode 开始以来文件的 namespace 的完整状态;
block : 是硬盘上存储数据的最不连续的位置,在 hadoop 集群中,每个 block 的默认大小为 128M;
checkpoint: 当 NameNode 启动时,它会从硬盘中读取 EditLog 和 FsImage,将所有 EditLog 中的事务作用在内存中的 FsImage 上,并将这个新版本的 FsImage 从内存中保存到本地磁盘上,然后删除旧的 EditLog,这个过程也被称为一个 checkpoint。

yarn以及MapReduce的一些专用词汇说明

yarn: hadoop的分布式资源管理框架,mapreduce作为计算引擎,运行在yarn里;
MapReduce: hadoop2.x 版本,MapReduce 进程是由 yarn 集群提供,在Hadoop内部用“作业”(Job)表示MapReduce程序。一个MapReduce程序可对应若干个作业,而每个作业会被分解成若干个Map/Reduce任务(Task);
Task Scheduler: 调度器,会在资源出现空闲时,选择合适的任务使用这些资源;
ResourceManager: 接收来自对yarn集群提交的请求,并指定NM分配Container。
NodeManager: 启动Container运行来自ResourceManager分配过来的任务。负责运行 所有TaskTracker 和 JobTracker,发送心跳给ResourceManager;
JobTracker: 主要负责所有TaskTracker与作业的健康状况资源监控和作业调度,一旦发现失败情况后,其会将相应的任务转移到其他节点;
TaskTracker: 周期性地通过Heartbeat将本节点上资源的使用情况和任务的运行进度汇报给JobTracker ,同时接收JobTracker发送过来的命令并执行相应操作(如启动新任务、杀手任务等);
slot: 等量划分本节点上的资源量(表现在cpu、mem上),一个Task获取到一个slot后才有机会运行,而Hadoop调度器的作用就是将各个TaskTracker上的空闲slot分配给Task使用;
task: Task分为Map Task和Reduce Task两种,均由TaskTracker启动;
Map Task: 先将任务解析成一个个key/value对,然后依次进行处理,最终将临时结果存放到本地磁盘上,其中临时数据被分为若干个partition,每个partition将被一个Reduce Task处理;
Reduce Task: 执行过程分为三个阶段,1、从远程节点上读取Map Task的中间结果(称为“Shuffle阶段”);2、按照key对key/value键值对进行排序(称为“Sort阶段”);3、依次读取,调用用户自定义的reduce()函数处理,并将最终结果存放到HDFS上(称为“Reduce阶段”)。

首先从cdh官网下载 hadoop-2.6.0-cdh5.9.3.tar.gz 包。

http://archive.cloudera.com/cdh5/cdh/5/


一、服务器5台:
主机名ip部署方案
namenode181192.168.10.181ResourceManager、NameNode、DFSZKFailoverController
namenode182192.168.10.182ResourceManager、NameNode、DFSZKFailoverController
datanode183192.168.10.183QuorumPeerMain(zk进程名)、JournalNode、DataNode、NodeManager
datanode184192.168.10.184QuorumPeerMain(zk进程名)、JournalNode、DataNode、NodeManager
datanode185192.168.10.185QuorumPeerMain(zk进程名)、JournalNode、DataNode、NodeManager

二、配置jdk环境变量;每台服务器添加 hosts ,并且免密登录,namenode用来远程启动使用
[root@namenode181 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.185 datanode185
192.168.10.184 datanode184
192.168.10.183 datanode183
192.168.10.182 namenode182
192.168.10.181 namenode181

[root@datanode181 ~]# java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

namenode181 namenode182 互相 ssh 免密码登录, namenode181 namenode182 到 datanode183 datanode184 datanode185 免密码登录。
从namenode181 和 namenode182 执行

[root@namenode181 ~]# ssh-keygen
[root@namenode181 ~]# ssh-copy-id namenode181
[root@namenode181 ~]# ssh-copy-id namenode182
[root@namenode181 ~]# ssh-copy-id datanode183
[root@namenode181 ~]# ssh-copy-id datanode184
[root@namenode181  ~]# ssh-copy-id datanode185
三、启动一个独立的 zookeeper 集群

推荐独立安装一个 zk 集群、随便挑一个版本,只要版本高的不是太离谱,应该都没问题。Linke 用的是 zookeeper-3.4.6 版本。怎么安装zk ,我直接跳过了,撸到此文的兄弟们应该都会自己安装。
jps命令查看,可以看到进程 QuorumPeerMain


[root@datanode184 zookeeper-3.4.6]# jps
20364 QuorumPeerMain
[root@datanode184 zookeeper-3.4.6]# /data/zookeeper-3.4.6/bin/zkServer.sh status
JMX enabled by default
Using config: /data/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader
四、解压hadoop-2.6.0-cdh5.9.3压缩包到安装路径 /data 下,然后开始写我们的配置文件

1、解压文件到 /data 目录下

[root@namenode181 ~]# tar xvf hadoop-2.6.0-cdh5.9.3.tar.gz -C /data/
[root@namenode181 ~]# chown -R root. /data/hadoop-2.6.0-cdh5.9.3
[root@namenode181 ~]# cd /data/hadoop-2.6.0-cdh5.9.3
[root@namenode181 hadoop-2.6.0-cdh5.9.3]# ls
bin  bin-mapreduce1  cloudera  etc  examples  examples-mapreduce1  include  lib  libexec  LICENSE.txt  NOTICE.txt  README.txt  sbin  share  src

2、修改 etc/hadoop/core-site.xml 文件,此文件针对的是hdfs的全局配置

[root@namenode181 hadoop-2.6.0-cdh5.9.3]# vim etc/hadoop/core-site.xml
<configuration>
  <!-- 指定hdfs的nameservice为flinkhdfs -->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://flinkhdfs/</value>
  </property>
  <!-- 指定hadoop运行时产生临时文件的存储路径 -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/data/hadoop-2.6.0-cdh5.9.3/tmp</value>
  </property>
  <!-- 指定zookeeper地址 -->
  <property>
    <name>ha.zookeeper.quorum</name>
    <value>datanode183:2181,datanode184:2181,datanode185:2181</value>
  </property>
  <property>
    <name>fs.checkpoint.period</name>
    <value>3600</value>
  </property>
  <property>
    <name>fs.checkpoint.size</name>
    <value>67108864</value>
  </property>
  <property>
    <name>fs.checkpoint.dir</name>
    <value>/data/hadoop-2.6.0-cdh5.9.3/namesecondary</value>
  </property>
</configuration>

3、修改 etc/hadoop/hdfs-site.xml 文件,此文件针对的是 hdfs 细节的配置。注意:dfs.ha.fencing.ssh.private-key-files 行配置,使用什么用户,填什么用户的id_rsa 路径

[root@namenode181 hadoop-2.6.0-cdh5.9.3]# vim etc/hadoop/hdfs-site.xml
<configuration>
  <!--指定hdfs的nameservice为 flinkhdfs ,需要和core-site.xml中的保持一致 -->
    <property>
    <name>dfs.nameservices</name>
    <value>flinkhdfs</value>
  </property>
  <!-- flinkhdfs下面有两个NameNode,分别是namenode181,namenode182 -->
  <property>
    <name>dfs.ha.namenodes.flinkhdfs</name>
    <value>namenode181,namenode182</value>
  </property>
  <!-- namenode181 的RPC通信地址 -->
  <property>
    <name>dfs.namenode.rpc-address.flinkhdfs.namenode181</name>
    <value>namenode181:9000</value>
  </property>
  <!-- namenode181的http通信地址 -->
  <property>
    <name>dfs.namenode.http-address.flinkhdfs.namenode181</name>
    <value>namenode181:50070</value>
  </property>
  <!-- namenode182的RPC通信地址 -->
  <property>
    <name>dfs.namenode.rpc-address.flinkhdfs.namenode182</name>
    <value>namenode182:9000</value>
  </property>
  <!-- namenode182的http通信地址 -->
  <property>
    <name>dfs.namenode.http-address.flinkhdfs.namenode182</name>
    <value>namenode182:50070</value>
  </property>
    <!-- 指定NameNode的edits元数据在JournalNode上的存放位置 -->
  <property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://datanode183:8485;datanode184:8485;datanode185:8485/flinkhdfs</value>
  </property>
  <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
  <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/data/hadoop-2.6.0-cdh5.9.3/journaldata</value>
  </property>
  <!-- 指定Datanode在本地磁盘存放数据的位置 -->
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///data/hadoop-2.6.0-cdh5.9.3/datanode</value>
  </property>
  <!-- 指定Namenode在本地磁盘存放数据的位置 -->
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///data/hadoop-2.6.0-cdh5.9.3/namenode</value>
  </property>
  <!-- 指定副本数,默认是3 -->
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
  <!-- 开启NameNode失败自动切换 -->
  <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
  </property>
    <!-- 配置失败自动切换实现方式 -->
  <property>
    <name>dfs.client.failover.proxy.provider.flinkhdfs</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  </property>
  <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
  <property>
    <name>dfs.ha.fencing.methods</name>
    <value>
      sshfence
      shell(/bin/true)
    </value>
  </property>
  <!-- 使用sshfence隔离机制时需要ssh免登陆 -->
  <property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
  </property>
  <!-- 配置sshfence隔离机制超时时间 -->
  <property>
    <name>dfs.ha.fencing.ssh.connect-timeout</name>
    <value>30000</value>
  </property>
</configuration>

4、修改 etc/hadoop/yarn-site.xml , yarn集群的详细配置

[root@namenode181 hadoop-2.6.0-cdh5.9.3]# vim  etc/hadoop/yarn-site.xml 
<configuration>
  <!-- 开启RM高可用 -->
  <property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
  </property>
  <!-- 指定RM的cluster id -->
  <property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>flinkyarn</value>
  </property>
  <!-- 指定RM的名字 -->
  <property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
  </property>
  <!-- 分别指定RM的地址 -->
  <property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>namenode181</value>
  </property>
  <property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>namenode182</value>
  </property>
  <!-- 失败自动切换 -->
  <property>
    <name>yarn.resourcemanager.recovery.enabled</name>
    <value>true</value>
  </property>
    <!-- 失败自动切换实现方式 -->
  <property>
    <name>yarn.resourcemanager.store.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
  </property>
  <!-- 指定zk集群地址 -->
  <property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>datanode183:2181,datanode184:2181,datanode185:2181</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>

5、修改 etc/hadoop/mapred-site.xml

[root@namenode181 hadoop-2.6.0-cdh5.9.3]# vim  etc/hadoop/mapred-site.xml
<configuration>
    <!-- 指定mr框架为yarn方式 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!-- 指定mr框架为yarn 的副本数 -->
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
</configuration>

6、修改 etc/hadoop/slaves ,此文件用来告诉NameNode在哪里起DataNode;告诉ResourceManager在哪里起NodeManager

[root@namenode181 hadoop-2.6.0-cdh5.9.3]# vim etc/hadoop/slaves
datanode183
datanode184
datanode185

7、创建上诉配置文件中涉及到的目录

[root@namenode181 hadoop-2.6.0-cdh5.9.3]# mkdir namenode namesecondary journaldata datanode
[root@namenode181 hadoop-2.6.0-cdh5.9.3]# ls
bin             cloudera  etc       examples-mapreduce1  journaldata  libexec      namenode       NOTICE.txt  sbin   src
bin-mapreduce1  datanode  examples  include              lib          LICENSE.txt  namesecondary  README.txt  share

8、将目录分发到每台服务器
是的,你没看错,所有节点全部使用相同的配置文件

五、启动hdfs高可用集群

这里Linke要用最简单粗暴的方式启动集群。
1、在datanode183 、datanode184、datanode185 启动journalnode ; 注意一下,是用 hadoop-daemons.sh 脚本启动,而不是 hadoop-daemon.sh ,前者是启动JournalNode集群的,不知道是不是读的etc/hadoop/slaves 这个文件中节点信息,后者是启动单个节点的。启动后,分别在三台 JournalNode 节点可以看到 JournalNode 进程,它是干嘛用的,请看一开始的介绍。根据etc/hadoop/hdfs-site.xml配置文件中所写,他的数据目录我放在了/data/hadoop-2.6.0-cdh5.9.3/journaldata ,此时此目录中不会有文件存在(此处画重点)。

[root@datanode183 hadoop-2.6.0-cdh5.9.3]# sbin/hadoop-daemons.sh start journalnode
datanode184: starting journalnode, logging to /data/hadoop-2.6.0-cdh5.9.3/logs/hadoop-root-journalnode-datanode184.out
datanode183: starting journalnode, logging to /data/hadoop-2.6.0-cdh5.9.3/logs/hadoop-root-journalnode-datanode183.out
datanode185: starting journalnode, logging to /data/hadoop-2.6.0-cdh5.9.3/logs/hadoop-root-journalnode-datanode185.out
[root@datanode183 hadoop-2.6.0-cdh5.9.3]# jps
25144 JournalNode
22332 QuorumPeerMain

2、在 namenode181 格式化HDFS,跑完没有报错说明格式化完毕,然后会再namenode目录下生成初始的namenode集群文件

[root@namenode181 hadoop-2.6.0-cdh5.9.3]# hdfs namenode -format
19/09/06 18:16:11 INFO namenode.FSNamesystem: ACLs enabled? false
19/09/06 18:16:11 INFO namenode.FSNamesystem: XAttrs enabled? true
19/09/06 18:16:11 INFO namenode.FSNamesystem: Maximum size of an xattr: 16384
19/09/06 18:16:12 INFO namenode.FSImage: Allocated new BlockPoolId: BP-76872703-192.168.10.181-1567764972634
19/09/06 18:16:12 INFO common.Storage: Storage directory /data/hadoop-2.6.0-cdh5.9.3/namenode has been successfully formatted.
19/09/06 18:16:12 INFO namenode.FSImageFormatProtobuf: Saving image file /data/hadoop-2.6.0-cdh5.9.3/namenode/current/fsimage.ckpt_0000000000000000000 using no compression
19/09/06 18:16:12 INFO namenode.FSImageFormatProtobuf: Image file /data/hadoop-2.6.0-cdh5.9.3/namenode/current/fsimage.ckpt_0000000000000000000 of size 321 bytes saved in 0 seconds.
19/09/06 18:16:12 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
19/09/06 18:16:12 INFO util.ExitUtil: Exiting with status 0
19/09/06 18:16:12 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at namenode181/192.168.10.181
************************************************************/
[root@namenode181 hadoop-2.6.0-cdh5.9.3]# ls namenode/
current
[root@namenode181 hadoop-2.6.0-cdh5.9.3]# ls namenode/current/
fsimage_0000000000000000000  fsimage_0000000000000000000.md5  seen_txid  VERSION

3、将namenode直接传到 namenode182 上

[root@namenode181 hadoop-2.6.0-cdh5.9.3]#  scp -r namenode/ namenode182:/data/hadoop-2.6.0-cdh5.9.3/
VERSION                                                                                                                         100%  205   184.0KB/s   00:00    
seen_txid                                                                                                                       100%    2     1.8KB/s   00:00    
fsimage_0000000000000000000.md5                                                                                                 100%   62    60.5KB/s   00:00    
fsimage_0000000000000000000      

4、在 namenode181 格式化ZKFC,如下没有报错说明格式化没问题

[root@namenode181 hadoop-2.6.0-cdh5.9.3]# hdfs zkfc -formatZK
19/09/06 18:22:38 INFO zookeeper.ZooKeeper: Client environment:os.version=3.10.0-957.21.3.el7.x86_64
19/09/06 18:22:38 INFO zookeeper.ZooKeeper: Client environment:user.name=root
19/09/06 18:22:38 INFO zookeeper.ZooKeeper: Client environment:user.home=/root
19/09/06 18:22:38 INFO zookeeper.ZooKeeper: Client environment:user.dir=/data/hadoop-2.6.0-cdh5.9.3
19/09/06 18:22:38 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=datanode184:2181,datanode185:2181,datanode183:2181 sessionTimeout=5000 watcher=org.apache.hadoop.ha.ActiveStandbyElector$WatcherWithClientRef@239e2011
19/09/06 18:22:38 INFO zookeeper.ClientCnxn: Opening socket connection to server datanode184/192.168.10.184:2181. Will not attempt to authenticate using SASL (unknown error)
19/09/06 18:22:38 INFO zookeeper.ClientCnxn: Socket connection established, initiating session, client: /192.168.10.181:52048, server: datanode184/192.168.10.184:2181
19/09/06 18:22:38 INFO zookeeper.ClientCnxn: Session establishment complete on server datanode184/192.168.10.184:2181, sessionid = 0x26d0609934a0000, negotiated timeout = 5000
19/09/06 18:22:38 INFO ha.ActiveStandbyElector: Session connected.
19/09/06 18:22:38 INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/datahdfs in ZK.
19/09/06 18:22:38 INFO zookeeper.ZooKeeper: Session: 0x26d0609934a0000 closed
19/09/06 18:22:38 INFO zookeeper.ClientCnxn: EventThread shut down

5、在 namenode181 启动HDFS,并查看进程, NameNode和DFSZKFailoverController已经启动

[root@namenode181 hadoop-2.6.0-cdh5.9.3]# sbin/start-dfs.sh
Starting namenodes on [namenode181 namenode182]
namenode181: starting namenode, logging to /data/hadoop-2.6.0-cdh5.9.3/logs/hadoop-root-namenode-namenode181.out
namenode182: starting namenode, logging to /data/hadoop-2.6.0-cdh5.9.3/logs/hadoop-root-namenode-namenode182.out
datanode184: starting datanode, logging to /data/hadoop-2.6.0-cdh5.9.3/logs/hadoop-root-datanode-datanode184.out
datanode185: starting datanode, logging to /data/hadoop-2.6.0-cdh5.9.3/logs/hadoop-root-datanode-datanode185.out
datanode183: starting datanode, logging to /data/hadoop-2.6.0-cdh5.9.3/logs/hadoop-root-datanode-datanode183.out
Starting journal nodes [datanode183 datanode184 datanode185]
datanode184: journalnode running as process 835. Stop it first.
datanode185: journalnode running as process 3972. Stop it first.
datanode183: journalnode running as process 2703. Stop it first.
Starting ZK Failover Controllers on NN hosts [namenode181 namenode182]
namenode181: starting zkfc, logging to /data/hadoop-2.6.0-cdh5.9.3/logs/hadoop-root-zkfc-namenode181.out
namenode182: starting zkfc, logging to /data/hadoop-2.6.0-cdh5.9.3/logs/hadoop-root-zkfc-namenode182.out
[root@namenode181 hadoop-2.6.0-cdh5.9.3]# jps
21151 DFSZKFailoverController
20872 NameNode
21207 Jps

6、在 namenode182 上查看进程,NameNode和DFSZKFailoverController已经启动

[root@namenode182 hadoop-2.6.0-cdh5.9.3]# jps
22480 NameNode
22572 DFSZKFailoverController
22638 Jps

7、在 datanode183 、datanode184、datanode185 上查看进程,新增了DataNode

[root@datanode183 hadoop-2.6.0-cdh5.9.3]# jps
2593 QuorumPeerMain
2823 DataNode
2923 Jps
2703 JournalNode

8、在 namenode181 启动启动YARN,并查看进程,ResourceManager已经启动,此时各nodemanager节点进程也已经启动

[root@namenode181 hadoop-2.6.0-cdh5.9.3]# sbin/start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /data/hadoop-2.6.0-cdh5.9.3/logs/yarn-root-resourcemanager-namenode181.out
datanode184: starting nodemanager, logging to /data/hadoop-2.6.0-cdh5.9.3/logs/yarn-root-nodemanager-datanode184.out
datanode183: starting nodemanager, logging to /data/hadoop-2.6.0-cdh5.9.3/logs/yarn-root-nodemanager-datanode183.out
datanode185: starting nodemanager, logging to /data/hadoop-2.6.0-cdh5.9.3/logs/yarn-root-nodemanager-datanode185.out
[root@namenode181 hadoop-2.6.0-cdh5.9.3]# jps
21151 DFSZKFailoverController
20872 NameNode
21558 Jps
21293 ResourceManager

9、在datanode183 、datanode184、datanode185 上查看进程,新增了 NodeManager 进程

[root@datanode184 hadoop-2.6.0-cdh5.9.3]# jps
736 QuorumPeerMain
1169 Jps
835 JournalNode
1060 NodeManager
934 DataNode

10、在namenode182上启动ResourceManager备用节点(yarn备用节点需要单独启动,hdfs的备用节点会随着主namenode节点启动)。

[root@namenode182 hadoop-2.6.0-cdh5.9.3]# jps
22480 NameNode
22675 Jps
22572 DFSZKFailoverController
[root@namenode182 hadoop-2.6.0-cdh5.9.3]# 
[root@namenode182 hadoop-2.6.0-cdh5.9.3]# sbin/yarn-daemon.sh start resourcemanager
starting resourcemanager, logging to /data/hadoop-2.6.0-cdh5.9.3/logs/yarn-root-resourcemanager-namenode182.out
[root@namenode182 hadoop-2.6.0-cdh5.9.3]# jps
22480 NameNode
22759 Jps
22572 DFSZKFailoverController
22703 ResourceManager

11、检查主备节点 namenode 的状态

[root@namenode181 hadoop-2.6.0-cdh5.9.3]# hdfs haadmin -getServiceState namenode181
standby
[root@namenode181 hadoop-2.6.0-cdh5.9.3]# hdfs haadmin -getServiceState namenode182
active

12、检查 resourcemanager 的状态

[root@namenode181 hadoop-2.6.0-cdh5.9.3]# yarn rmadmin -getServiceState rm1        
19/09/06 18:41:01 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
active
[root@namenode181 hadoop-2.6.0-cdh5.9.3]# yarn rmadmin -getServiceState rm2
19/09/06 18:41:04 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
standby

经过这么多步骤,终于启动完毕了,Linke已经感觉到达了高潮。下面让我们来测试一下hdfs写入文件。

六、测试hdfs写入文件,和读取文件

hdfs命令自己去百度几把,这里Linke不介绍

[root@namenode181 hadoop-2.6.0-cdh5.9.3]# hdfs dfs -ls /
[root@namenode181 hadoop-2.6.0-cdh5.9.3]# hdfs dfs -mkdir /test
[root@namenode181 hadoop-2.6.0-cdh5.9.3]# hdfs dfs -ls /       
Found 1 items
drwxr-xr-x   - root supergroup          0 2019-09-06 18:43 /test
[root@namenode181 hadoop-2.6.0-cdh5.9.3]# hdfs dfs -put /etc/passwd /test/
[root@namenode181 hadoop-2.6.0-cdh5.9.3]# hdfs dfs -ls /test   
Found 1 items
-rw-r--r--   3 root supergroup       1035 2019-09-06 18:43 /test/passwd
[root@namenode181 hadoop-2.6.0-cdh5.9.3]# hdfs dfs -cat /test/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:997:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
test:x:1000:1000::/home/test:/bin/bash
七、查看hdfs和yarn的web页面

浏览器输入namenode主节点ip加端口,我的namenode主节点是namenode182
192.168.10.182:50070
在这里插入图片描述
查看hdfs中的文件
在这里插入图片描述
在这里插入图片描述
红框中为所有副本所在的节点,并且只有Block0 一个块儿,你们可以上传一个大的文件,比如500M的,然后就会有多个块儿了。为 500/128 个块儿。
在这里插入图片描述
浏览器输入ResourceManager 主节点ip加端口,我的ResourceManager 主节点是namenode181
192.168.10.181:8088
在这里插入图片描述
yarn集群提交任务后在这里可以看到任务成功或者失败的状态
由于时间关系,就不测yarn集群提交任务了,不过可以提供一个测试命令,注意,提交的目标目录 testyarn1 必须要没有,提交了以后会自动生成 testyarn1 目录
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.9.3.jar wordcount /test/passwd /testyarn1

八、单独重启某个节点的方式

1、datanode节点重启
单独重启某个 datanode ,到对应节点下

 sbin/hadoop-daemon.sh start datanode

2、 journalnode 单个节点故障,到对应节点下

sbin/hadoop-daemon.sh start journalnode

3、namenode单个节点故障,到对应节点下

sbin/hadoop-daemon.sh start namenode

4、yarn集群 ResourceManager 单个节点故障,到对应节点下

sbin/yarn-daemon.sh start resourcemanager

5、yarn集群 NodeManager 如果挂掉,在 yarn 主节点启动

sbin/start-yarn.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值