++++++++++++++++ | HDFS 基 本 使 用 | +++++++++++++++++++++
++++++++++++++++ | HDFS 基 本 使 用 | +++++++++++++++++++++
HDFS 使用 与shell 相似 只是没有shell参数多
• HDFS 基本命令
– ./bin/hadoop fs –ls /
– 对应 shell 命令 ls /
– ./bin/hadoop fs –mkdir /abc
– 对应 shell 命令 mkdir /abc
– ./bin/hadoop fs –rmdir /abc
– 对应 shell 命令 rmdir /abcHDFS 使用
• HDFS 基本命令
– ./bin/hadoop fs –touchz /urfile
– 对应 shell 命令 touch /urfile
– ./bin/hadoop fs –cat /urfile
– 对应 shell 命令 cat /urfile
– ./bin/hadoop fs –rm /urfile
– 对应 shell 命令 rm /urfileHDFS 使用
• HDFS 基本命令
– 上传文件
– ./bin/hadoop fs –put localfile /remotefile
– 下载文件
– ./bin/hadoop fs –get /remotefile
----------------------------------------------------------------------------
hadoop词频统计
• 1、在集群文件系统里创建文件夹
• 2、上传要分析的文件到目录中
• 3、分析上传文件
• 4、展示结果
Hadoop 验证
• 创建文件夹
– ./bin/hadoop fs -mkdir /input
• 上传要分析的文件
– ./bin/hadoop fs -put *.txt /input
Hadoop 验证
• 提交分析作业
– ./bin/hadoop
jar ./share/hadoop/mapreduce/hadoop-
mapreduce-examples-2.7.3.jar wordcount /input
/output
• 查看结果
– ./bin/hadoop fs –cat output/*
示例演示::——————>>
[root@nn01 hadoop]# ./bin/hadoop fs -mkdir /oo
[root@nn01 hadoop]# ./bin/hadoop fs -put *.txt /oo/
[root@nn01 hadoop]#
[root@nn01 hadoop]# ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount /oo /xx
查看结果!!
[root@nn01 hadoop]# ./bin/hadoop fs -cat /xx/*
----------------------------------------------------------------------------------------
++++++++++++| 节点管理|++++++++++++++++
++++++++++++| 节点管理|++++++++++++++++
HDFS节点管理 yarn节点管理
-------------------------------------------
HDFS节点管理
Hadoop 节点管理
【 1 】• HDFS 增加节点
– 1、启劢一个新的系统,禁用 selinux、禁用 firewalld
– 2、设置 ssh 免密码登录
– 3、在所有节点增加新新节点的主机信息 /etc/hosts
– 4、安装 java openjdk 运行环境
– 5、拷贝namnode的 /usr/local/hadoop 到本机
– 6、修改namenode的slaves文件增加该节点
– 7、在该节点启劢Datanode
./sbin/hadoop-daemon.sh start datanode
实验环境::——————>>
新建一台虚拟机node4
确保nn01能免密钥连接node4
[root@nn01 ~]# cd /root/.ssh/
[root@nn01 .ssh]# ls
authorized_keys id_rsa id_rsa.pub known_hosts
[root@nn01 .ssh]# ssh-copy-id -i id_rsa.pub 192.168.1.14
[root@nn01 .ssh]# vim /etc/hosts
192.168.1.10 nn01
192.168.1.14 newnode
192.168.1.11 node1
192.168.1.12 node2
192.168.1.13 node3
[root@node4 ~]# yum -y install rsync 确保node4安装了rsync 方便同步数据
//然后把nn01的hosts 同步给node1 2 3 newnode
[root@nn01 ~]# for i in node{1..3} newnode;do rsync -av /etc/hosts ${i}:/etc/; done
[root@nn01 ~]# ssh newnode ##连接新系统node4
[root@node5 ~]# hostname newnode ##// 更改主机名
[root@node5 ~]# logout
Connection to newnode closed.
[root@nn01 ~]# ssh newnode
##安装java环境
[root@newnode ~]# yum install -y java-1.8.0-openjdk-devel
在nn01添加slaves
[root@nn01 ~]# cd /usr/local/hadoop/
[root@nn01 hadoop]# ls
bin etc include lib libexec LICENSE.txt logs NOTICE.txt README.txt sbin share
[root@nn01 hadoop]# vim etc/hadoop/slaves
[root@nn01 hadoop]# cat etc/hadoop/slaves
node1
node2
node3
newnode
hadoop同步到其他主机
[root@nn01 ~]# for i in node{1..3};do rsync -aSH --delete /usr/local/hadoop ${i}:/usr/local/ -e 'ssh' & done
[1] 3308
[2] 3309
[3] 3310
或者用脚本::
[root@nn01 hadoop]# rrr node{1..3} ##昨天写好的脚本!
[root@nn01 hadoop]# ssh newnode
Last login: Fri Aug 3 10:33:40 2018 from 192.168.1.254
[root@newnode ~]# cd /usr/local/
[root@newnode local]# ls
bin etc games include lib lib64 libexec sbin share src
[root@newnode local]#
把nn01上/usr/local/hadoop 拷贝道自己的目录下
[root@newnode local]# rsync -a nn01:/usr/local/hadoop /usr/local/
[root@newnode local]# ls ##查看一下
[root@newnode local]# cd hadoop/
[root@newnode hadoop]# ls
bin etc include lib libexec LICENSE.txt logs NOTICE.txt README.txt sbin share
[root@newnode hadoop]# rm -rf logs //# 删除logs 因为这个logs是nn01上的 防止冲突 删除之后它会自动再创建
[root@newnode hadoop]#
[root@newnode hadoop]# ls
[root@newnode hadoop]# mkdir /var/hadoop (创建hadoop) ##现在节点创建好了
[root@newnode hadoop]#
[root@newnode hadoop]# jps ##看一下自己的角色,没有角色
1224 Jps
[root@newnode hadoop]# ./sbin/hadoop-daemon.sh // 启动角色(这个命令的作用是 单独启动一个角色的命令)
[root@newnode hadoop]# ./sbin/hadoop-daemon.sh start datanode ##启用datanode角色!!
[root@newnode hadoop]# jps ##角色起来了,
1264 DataNode
1338 Jps
##角色起来了,那么与集群是否连接成功呢
[root@newnode hadoop]# logout 回到nn01 上
[root@nn01 hadoop]# ./bin/hdfs dfsadmin -report ## newnode加入进来了
[root@nn01 hadoop]# ./bin/hdfs dfsadmin -report
Configured Capacity: 85853126656 (79.96 GB)
Present Capacity: 79092408320 (73.66 GB)
DFS Remaining: 79092379648 (73.66 GB)
DFS Used: 28672 (28 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
-------------------------------------------------
Live datanodes (4):
Name: 192.168.1.12:50010 (node2)
Hostname: node2
Decommission Status : Normal
Configured Capacity: 21463281664 (19.99 GB)
DFS Used: 8192 (8 KB)
Non DFS Used: 1690165248 (1.57 GB)
DFS Remaining: 19773108224 (18.42 GB)
DFS Used%: 0.00%
DFS Remaining%: 92.13%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Wed Aug 08 16:05:29 CST 2018
Name: 192.168.1.11:50010 (node1)
Hostname: node1
Decommission Status : Normal
Configured Capacity: 21463281664 (19.99 GB)
DFS Used: 8192 (8 KB)
Non DFS Used: 1690370048 (1.57 GB)
DFS Remaining: 19772903424 (18.41 GB)
DFS Used%: 0.00%
DFS Remaining%: 92.12%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Wed Aug 08 16:05:29 CST 2018
Name: 192.168.1.13:50010 (node3)
Hostname: node3
Decommission Status : Normal
Configured Capacity: 21463281664 (19.99 GB)
DFS Used: 8192 (8 KB)
Non DFS Used: 1690206208 (1.57 GB)
DFS Remaining: 19773067264 (18.42 GB)
DFS Used%: 0.00%
DFS Remaining%: 92.13%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Wed Aug 08 16:05:28 CST 2018
Name: 192.168.1.14:50010 (newnode) ## 新加入的节点!!newnode
Hostname: newnode
Decommission Status : Normal
Configured Capacity: 21463281664 (19.99 GB)
DFS Used: 4096 (4 KB)
Non DFS Used: 1689976832 (1.57 GB)
DFS Remaining: 19773300736 (18.42 GB)
DFS Used%: 0.00%
DFS Remaining%: 92.13%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Wed Aug 08 16:05:31 CST 2018
[root@nn01 hadoop]#
+++++++++++++++++---------------------------
【 2 】 设置同步带宽,并同步数据
Hadoop节点管理
• HDFS 节点管理
– 增加节点 续 ... ...
– 8、设置同步带宽,并同步数据
./bin/hdfs dfsadmin -setBalancerBandwidth 67108864
./sbin/start-balancer.sh
– 9、查看集群状态
./bin/hdfs dfsadmin -report
[root@nn01 hadoop]# pwd
/usr/local/hadoop
[root@nn01 hadoop]# ./bin/hdfs dfsadmin ##如果同步带宽的命令记不住,就输入此命令 回车
[root@nn01 hadoop]# ./bin/hdfs dfsadmin -setBalancerBandwidth 60000000
[root@nn01 hadoop]# ./sbin/start-balancer.sh ##同步
+++++++++++++++++++++++++-----------------------------------
Hadoop节点管理
【 3 】• HDFS 修复节点
– 修复节点比较简单,不增加节点基本一致
– 需要注意新节点的 ip 不 主机名 要不损坏节点一致 !!!!!
– 启劢服务
./sbin/hadoop-daemon.sh start datanode
– 数据恢复是自劢的
– 我们上线以后会自劢恢复数据,如果数据量非常巨大,
可能需要一定的时间
(一定要等到数据同步完了,才能修复节点 上线等时间,下线等时间,导入也要等时间,)
++++++++++++++++++++++++++++++++++++++++++++++++++
Hadoop 节点管理
【4 】• HDFS 删除节点
– 配置NameNode的 hdfs-site.xml
– 增加 dfs.hosts.exclude 配置
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop/etc/hadoop/exclude</value>
</property
– 增加 exclude 配置文件,写入要删除的节点 主机名
– 更新数据
./bin/hdfs dfsadmin -refreshNodes
------------------
Hadoop 节点管理
• HDFS 删除节点状态
– 查看状态 ./bin/hdfs dfsadmin -report
– Normal 正常状态
– Decommissioned in Program 数据正在迁移
– Decommissioned 数据迁移完成
– 注意:只有当状态变成 Decommissioned 才能 down
机下线
-------------
删除节点遵循两个原则
1,无数据删除, 2,必须查看状态
-----
++==## 删除节点分两个过程:
1,配置要删除的节点有哪些;增加 dfs.hosts.exclude 配置
2,– 增加 exclude 配置文件,写入要删除的节点 主机名
– 更新数据
做完这两步之后等 等时间,等数据迁移完成! 然后才能 删除!(如果数据量很大,有的甚至要等一周 两周...)
--------------
导个数据,方便看状态!
[root@nn01 ~]# lftp 192.168.1.254
lftp 192.168.1.254:/> cd public/
lftp 192.168.1.254:/public> ls
lftp 192.168.1.254:/public> get CentOS-7-x86_64-DVD-1708.iso
lftp 192.168.1.254:/public> exit
[root@nn01 ~]# ls
[root@nn01 ~]# mv CentOS-7-x86_64-DVD-1708.iso centos.iso
[root@nn01 ~]# cd /usr/local/hadoop/
[root@nn01 hadoop]# ./bin/hdfs dfsadmin -report
[root@nn01 hadoop]# ./bin/hdfs dfsadmin -report |grep -P -A 14 "newnode" #只看newnode 后面14行
Name: 192.168.1.15:50010 (newnode)
Hostname: newnode
Decommission Status : Normal //状态
[root@nn01 hadoop]# vim etc/hadoop/hdfs-site.xml //删除节点
<configuration>
............
<property> ## 这组配置的 意思是删除这组主机,要删除的组机写在这个文件
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop/etc/hadoop/exclude</value>
</property>
</configuration>
[root@nn01 hadoop]# touch /usr/local/hadoop/etc/hadoop/exclude ##创建这个文件
[root@nn01 hadoop]# vim /usr/local/hadoop/etc/hadoop/exclude ## 在这个文件里面添加要删除的节点名称
newnode
[root@nn01 hadoop]# ./bin/hdfs dfsadmin -report #查看节点状态 此时还是 Normal 正常状态
[root@nn01 hadoop]# ./bin/hdfs dfsadmin -refreshNodes ##开始导出数据,数据会被迁移到其它主机上
[root@nn01 hadoop]# ./bin/hdfs dfsadmin -refreshNodes
Refresh nodes successful
[root@nn01 hadoop]# ./bin/hdfs dfsadmin -report |grep -P -A 14 "newnode"
Name: 192.168.1.15:50010 (newnode)
Hostname: newnode
Decommission Status : Decommission in progress ###数据正在迁移 看newnode状态,这个状态是它的数据在分配到其它机器上 这时候这台主机是不能 下线的 这时候就是等等!
[root@nn01 hadoop]# ./bin/hdfs dfsadmin -report
.............
Decommission Status : Decommissioned #数据迁移完成
删除节点(下线节点)
[root@nn01 hadoop]# ssh newnode
[root@newnode ~]# cd /usr/local/hadoop/
[root@newnode hadoop]# ls
[root@newnode hadoop]# ./sbin/hadoop-daemon.sh stop datanode ##下线完成了!!!
stopping datanode
[root@newnode hadoop]#
==============================================
-
+++++++++++++++| yarn节点管理 |+++++++++++++++
+++++++++++++++| yarn节点管理 |+++++++++++++++
Hadoop节点管理
• Yarn 的相关操作
– 由于在 2.x hadoop 引入了 yarn 框架,对于计算节点
的操作已经变得非常简单
– 增加节点
sbin/yarn-daemon.sh start nodemanager
– 删除节点
sbin/yarn-daemon.sh stop nodemanager
– 查看节点 (Resourcemanager)
./bin/yarn node -list
------------------
Hadoop节点管理
• yarn 的系统环境配置不 hdfs 的基础环境配置是相同
的,这里就丌重复列出了
• 由于 yarn 不包含数据,所以在增加删除修复节点的
时候比较简单,hdfs 要注意数据安全
实验演示::------>>>
增加节点
[root@nn01 hadoop]# pwd
/usr/local/hadoop
[root@nn01 hadoop]# ./bin/yarn node -list
18/08/03 15:04:01 INFO client.RMProxy: Connecting to ResourceManager at nn01/192.168.1.10:8032
Total Nodes:3
Node-Id Node-State Node-Http-Address Number-of-Running-Containers
node3:34287 RUNNING node3:8042 0
node1:39152 RUNNING node1:8042 0
node2:42983 RUNNING node2:8042 0
[root@nn01 hadoop]#
[root@nn01 hadoop]# ssh newnode
[root@newnode ~]# cd /usr/local//hadoop/
[root@newnode hadoop]#
[root@newnode hadoop]# ./sbin/yarn-daemon.sh start nodemanager #启动节点
starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-newnode.out
[root@newnode hadoop]#
[root@nn01 hadoop]# ./bin/yarn node -list //## 看一下新节点出来了!
18/08/03 15:06:37 INFO client.RMProxy: Connecting to ResourceManager at nn01/192.168.1.10:8032
Total Nodes:4
Node-Id Node-State Node-Http-Address Number-of-Running-Containers
newnode:42328 RUNNING newnode:8042 0
node3:34287 RUNNING node3:8042 0
node1:39152 RUNNING node1:8042 0
node2:42983 RUNNING node2:8042 0
[root@nn01 hadoop]#
##删除节点
注意:确定在这个节点没有计算任务的时候(时间)
[root@newnode hadoop]# ./sbin/yarn-daemon.sh stop nodemanager
[root@nn01 hadoop]# ./bin/yarn node -list
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
————————————————————————————————————————————
++++++++++| N F S 网 关 |+++++++++++++++++++=
++++++++++| N F S 网 关 |+++++++++++++++++++=
NFS 网关
• NFS 网关用途
– 用户可以通过操作系统兼容的本地NFSv3客户端来阅
览HDFS文件系统
– 用户可以从HDFS文件系统下载文档到本地文件系统
– 用户可以通过挂载点直接流化数据。支持文件附加,
但是丌支持随机写
– NFS 网关支持NFSv3和允许HDFS 作为客户端文件系
统的一部分被挂载
NFS网关
• 配置代理用户
– 在 namenode 和 nfsgw 上添加代理用户
– 代理用户的 uid gid 用户名 必须完全相同
– 如果因特殊原因客户端的用户和NFS网关的用户 uid
不能保持一致需要我们配置 nfs.map 的静态映射关系
– nfs.map
uid 10 100 # Map the remote UID 10 the local UID 100
gid 11 101 # Map the remote GID 11 to the local GID 101
步骤++步骤++步骤++》》:::如下!!!
1# 给客户端nfsgw 配置hosts
[root@nfsgw ~]# vim /etc/hosts
192.168.1.10 nn01
192.168.1.14 newnode
192.168.1.11 node1
192.168.1.12 node2
192.168.1.13 node3
192.168.1.15 nfsgw
2# uid gid 用户名 必须完全相同
给客户端nfsgw uid gid 用户名 必须完全相同
[root@nfsgw ~]# groupadd -g 200 nsd1803
[root@nfsgw ~]# useradd -u 200 -g 200 nsd1803
[root@nfsgw ~]# id nsd1803
uid=200(nsd1803) gid=200(nsd1803) 组=200(nsd1803)
[root@nfsgw ~]#
#在nn01上也配置
[root@nn01 hadoop]# groupadd -g 200 nsd1803
[root@nn01 hadoop]# useradd -u 200 -g 200 nsd1803
[root@nn01 hadoop]# id nsd1803
uid=200(nsd1803) gid=200(nsd1803) 组=200(nsd1803)
3 # • 核心配置 core-site.xml
– hadoop.proxyuser.{代理用户}.groups
– hadoop.proxyuser.{代理用户}.hosts
– 这里的 {代理用户} 是你机器上真实运行 nfs3 的用户
– 在非安全模式,运行nfs网关的用户为代理用户
– groups 为挂载点用户所使用的组
– hosts 为挂载点主机地址
• 核心配置 core-site.xml
... ...
<property>
<name>hadoop.proxyuser.nsd1802.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.nsd1802.hosts</name>
<value>*</value>
</property>
... ...
3## 注意::在配置core-site.xml之前 先停止集群!
[root@nn01 ~]# cd /usr/local/hadoop/ ## 停止集群!
[root@nn01 hadoop]# ./sbin/stop-all.sh
4 # 配置 核心配置 core-site.xml
[root@nn01 hadoop]# ls
bin etc lib LICENSE.txt NOTICE.txt README.txt share
centos.iso include libexec logs oo sbin xx
[root@nn01 hadoop]# cd etc/hadoop/
[root@nn01 hadoop]# vim core-site.xml
... ...
<property>
<name>hadoop.proxyuser.nsd1802.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.nsd1802.hosts</name>
<value>*</value>
</property>
... ...
[root@nn01 hadoop]# cat slaves #查看节点是否正确,把之前配置的newnode 删除了 防止影响接下来的实验
node1
node2
node3
[root@nn01 hadoop]# >exclude 清除exclude
5## 同步到其它节点!
[root@nn01 hadoop]# rrr node{1..3} ## 同步到其它节点上
[root@nn01 hadoop]#
6## 启动集群!
[root@nn01 hadoop]# pwd
/usr/local/hadoop/etc/hadoop
[root@nn01 hadoop]# cd ../../
[root@nn01 hadoop]# pwd
/usr/local/hadoop
[root@nn01 hadoop]# ./sbin/start-dfs.sh
7 ## 查看一下状态!!
[root@nn01 hadoop]# ./bin/hdfs dfsadmin -report #查看节点都正常!
此时集群部分准备工作做完了!
++++++++++++++| NFSGW配置 | ++++++++++++++
++++++++++++++| NFSGW配置 | ++++++++++++++
实验接上面:::————>>
NFS 网关
• 配置步骤
– 1、启劢一个新的系统,禁用 selinux、禁用 firewalld
– 2、卸载 rpcbind 、nfs-utils
– 3、配置 /etc/hosts,添加所有 namenode 和
datanode 的主机名不 ip 对应关系
– 4、安装 java openjdk 的运行环境
– 5、同步 namenode 的 /usr/local/hadoop 到本机
– 6、配置 hdfs-site.xml
– 7、启动服务
---------------------
1 #、启劢一个新的系统,禁用 selinux、禁用 firewalld
上面实验已经做过
2# 卸载 rpcbind 、nfs-utils 先查看是否安装
[root@nfsgw ~]# rpm -qa |grep rpcbind
[root@nfsgw ~]# rpm -qa |grep nfs-utils
3# 已经做过
4# [root@nfsgw ~]# yum -y install java-1.8.0-openjdk-devel
5# 同步 nn01 的 /usr/local/hadoop 到NFSGW的相同目录下
[root@nfsgw local]# rsync -aSH --delete nn01:/usr/local/hadoop /usr/local/
6 ## NFSGW: hdfs-site.xml 增加配置
[root@nfsgw ~]# cd /usr/local/hadoop/
[root@nfsgw hadoop]# cd etc/hadoop/
[root@nfsgw hadoop]# pwd
/usr/local/hadoop/etc/hadoop
[root@nfsgw hadoop]# vim hdfs-site.xml
<configuration>
........
<property>
<name>nfs.exports.allowed.hosts</name>
<value>* rw</value>
</property>
<property>
<name>nfs.dump.dir</name>
<value>/var/nfstmp</value>
</property>
</configuration>
-------------
– 配置完该属性后要创建 /var/nfstmp 文件夹
mkdir /var/nfstmp
– 并且把该文件夹的属组改成 代理用户
[root@nfsgw hadoop]# mkdir /var/nfstmp
[root@nfsgw hadoop]# id nsd1803
uid=200(nsd1803) gid=200(nsd1803) 组=200(nsd1803)
[root@nfsgw hadoop]# chown 200.200 /var/nfstmp
[root@nfsgw hadoop]# ll -d /var/nfstmp/ ## 修改属主属组 保证写的权限!
drwxr-xr-x 2 nsd1803 nsd1803 6 8月 3 17:28 /var/nfstmp/
[root@nfsgw hadoop]#
NFS 网关
• 启动与挂载
– 设置 /usr/local/hadoop/logs 权限,为代理用户赋予
读写执行的权限
setfacl -m user:proxyuser:rwx /usr/local/hadoop/logs
[root@nfsgw hadoop]# cd /usr/local/hadoop/
[root@nfsgw hadoop]#
[root@nfsgw hadoop]# ll -d logs/
drwxr-xr-x 2 root root 6 8月 3 17:16 logs/
[root@nfsgw hadoop]#
[root@nfsgw hadoop]# setfacl -m u:nsd1803:rwx logs
[root@nfsgw hadoop]# getfacl logs
创建数据根目录 /var/hadoop
[root@nfsgw hadoop]# mkdir /var/hadoop
------验证一下nsd1803 用户的权限
[root@nfsgw hadoop]#
[root@nfsgw hadoop]# sudo -u nsd1803 -s
[nsd1803@nfsgw hadoop]$ cd /var/nfstmp/
[nsd1803@nfsgw nfstmp]$ ls
[nsd1803@nfsgw nfstmp]$ touch aaa
[nsd1803@nfsgw nfstmp]$ ls
aaa
[nsd1803@nfsgw nfstmp]$ rm -f aaa
[nsd1803@nfsgw nfstmp]$ cd /usr/local/hadoop/logs/
[nsd1803@nfsgw logs]$ ls
[nsd1803@nfsgw logs]$ touch fff
[nsd1803@nfsgw logs]$ ls
fff
[nsd1803@nfsgw logs]$ rm -f fff
[nsd1803@nfsgw logs]$ ls
[nsd1803@nfsgw logs]$ ll
总用量 0
[nsd1803@nfsgw logs]$ exit
exit
[root@nfsgw hadoop]#
-----------
#使用 root 用户启劢 portmap 服务
#使用代理用户启劢 nfs3
NFS 网关
• 这里要特别注意:
– 启劢 portmap 需要使用 root 用户
– 启劢 nfs3 需要使用 core-site 里面设置的代理用户
– 必须先启劢 portmap 之后再启劢 nfs3
– 如果 portmap 重启了,在重启之后 nfs3 也需要重启
【nfs端口 2049 RPC端口111】
rpc 在rhel7 叫 rpcbind 在rhel6 叫portmap
启动服务 有两个服务nfs ,portmap ; nfs 依赖于portmap
nfs启动的时候需要往rpc进行注册
启动顺序::
必须先启动portmp 再启动nfs
重启的时候 : 先停nfs再停portmp 然后再启动portmap 然后再启动nfs
而且启动portmap必须用root启动(停) nfs必须用代理用户启动(停)
[root@nfsgw ~]# cd /usr/local/hadoop/
[root@nfsgw hadoop]# ./sbin//hadoop-daemon.sh --script ./bin/hdfs start portmap
[root@nfsgw hadoop]# jps
1321 Jps
1274 Portmap #//看到 Portmap
[root@nfsgw hadoop]#
[root@nfsgw hadoop]# su -l nsd1803
[nsd1803@nfsgw ~]$ cd /usr/local/hadoop/
[nsd1803@nfsgw hadoop]$ ./sbin/hadoop-daemon.sh --script ./bin/hdfs start nfs3
starting nfs3, logging to /usr/local/hadoop/logs/hadoop-nsd1803-nfs3-nfsgw.out
[nsd1803@nfsgw hadoop]$
[nsd1803@nfsgw hadoop]$ jps
1368 Nfs3 ## 能看到Nfs3
1421 Jps
[nsd1803@nfsgw hadoop]$
[nsd1803@nfsgw hadoop]$ exit ## 退回到root下 再看
logout
[root@nfsgw hadoop]#
[root@nfsgw hadoop]# jps ## 同时看到 Nfs3 Portmap
1368 Nfs3
1433 Jps
1274 Portmap
[root@nfsgw hadoop]#
[root@nfsgw hadoop]# netstat -ntlup
端口号 2049 111 都应该出现
[root@nfsgw hadoop]# cd /usr/local/hadoop/
[root@nfsgw hadoop]# ls
bin etc include lib libexec LICENSE.txt logs NOTICE.txt README.txt sbin share
[root@nfsgw hadoop]#
[root@nfsgw hadoop]# cd logs/
[root@nfsgw logs]# ls
[root@nfsgw logs]# cat hadoop-nsd1803-nfs3-nfsgw.log 正确应该是都是INFO
2018-08-03 17:46:37,481 INFO org.apache.hadoop.hdfs.nfs.nfs3
2018-08-03 17:46:37,481 INFO org.apache.hadoop.hdfs.nf
2018-08-03 17:46:37,481 INFO org.apache.hadoop.hdf
2018-08-03 17:46:37,481 INFO org.apache.hadoop.hdfs.nfs.nfs3
2018-08-03 17:46:37,481 INFO org.apache.hadoop.hdfs.nf
2018-08-03 17:46:37,481 INFO org.apache.hadoop.hdf
----------
• 启动与挂载
– 目前NFS 只能使用v3版本
– vers=3
– 仅使用TCP作为传输协议。
– proto=tcp
– 不支持NLM
– nolock
– 禁用 access time 的时间更新
– noatime
---------------
NFS 网关
• 启动与挂载
– 强烈建议使用安装选项“sync”,因为它可以最小化
戒避免重新排序写入,这将导致更可预测的吞吏量。
未挃定同步选项可能会导致上传大文件时出现丌可靠
的行为
– 启劢一台机器安装 nfs-utils
yum install nfs-utils
– 挂载 nfs
mount -t nfs -o vers=3,proto=tcp,noatime,nolock,sync 192.168.1.15:/ /mnt/
###实验————>> 找一台机器 不需要hadoop 任意一台
[root@newnode ~]#
[root@newnode ~]# cd /usr/local/
[root@newnode local]# ls
[root@newnode local]# rm -rf hadoop #因为在上面做的实验中这台机器是newnode节点,所以删除hadoop!
[root@newnode local]# cd
[root@newnode ~]# yum install -y nfs-utils
[root@newnode ~]# mount -t nfs -o vers=3,proto=tcp,nolock,noatime,sync,noacl 192.168.1.15:/ /mnt/
[root@newnode ~]# cd /mnt/
[root@newnode mnt]# ls
[root@newnode mnt]# showmount -e 192.168.1.15
Export list for 192.168.1.16:
/ *
[root@newnode mnt]# rpcinfo -p 192.168.1.15
program vers proto port service
100005 3 udp 4242 mountd
100005 1 tcp 4242 mountd
100000 2 udp 111 portmapper
100000 2 tcp 111 portmapper
100005 3 tcp 4242 mountd
100005 2 tcp 4242 mountd
100003 3 tcp 2049 nfs
100005 2 udp 4242 mountd
100005 1 udp 4242 mountd
[root@newnode mnt]#
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#关于同时启动hdfs yarn的脚本#
[root@nn01 hadoop]# ls
bin etc include lib libexec LICENSE.txt logs NOTICE.txt oo README.txt sbin share xx
[root@nn01 hadoop]# cat ./sbin/start-all.sh
#!/usr/bin/env bash
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Start all hadoop daemons. Run this on master node.
echo "This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh"
bin=`dirname "${BASH_SOURCE-$0}"`
bin=`cd "$bin"; pwd`
DEFAULT_LIBEXEC_DIR="$bin"/../libexec
HADOOP_LIBEXEC_DIR=${HADOOP_LIBEXEC_DIR:-$DEFAULT_LIBEXEC_DIR}
. $HADOOP_LIBEXEC_DIR/hadoop-config.sh
# start hdfs daemons if hdfs is present
if [ -f "${HADOOP_HDFS_HOME}"/sbin/start-dfs.sh ]; then
"${HADOOP_HDFS_HOME}"/sbin/start-dfs.sh --config $HADOOP_CONF_DIR
fi
# start yarn daemons if yarn is present
if [ -f "${HADOOP_YARN_HOME}"/sbin/start-yarn.sh ]; then
"${HADOOP_YARN_HOME}"/sbin/start-yarn.sh --config $HADOOP_CONF_DIR
fi
[root@nn01 hadoop]# pwd
/usr/local/hadoop
[root@nn01 hadoop]#
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~