Hadoop基础(二) --- 远程多节点拷贝、删除、浏览、执行,配置windows host,安全模式,快照,回收站,配额

【xcp.sh】远程拷贝:实现文件和文件夹在所有节点上的复制
-------------------------------------------------------------------------------------------

#################
#x copy
#################
# argu < 1 , no args
if [ $# -lt 1 ]
then 
        echo no args!
        exit
fi

arg1=$1
cuser=`whoami`
fname=`basename $arg1`
dir=`dirname $arg1`

if [ "$dir" = "." ]
then
        dir=`pwd`
fi

for((i=200;i<500;i=i+100)) 
do
        echo ---- coping $arg1 to s$i ----
        if [ -d $arg1 ]
        then 
                scp -r $arg1 $cuser@s$i:$dir
        else
                scp  $arg1 $cuser@s$i:$dir
        fi
        echo  
done


【xrm.sh】远程删除:实现文件和文件夹在所有节点上的删除
-------------------------------------------------------------------------------------------

#################
#x rm
#################

# argu < 1 , no args
if [ $# -lt 1 ]
then 
        echo no args!
        exit
fi

#get first argument
arg1=$1

#get current userName
cuser=`whoami`

#get fileName
fname=`basename $arg1`

#get dir
dir=`dirname $arg1`

#dir= . or dir = /xxx/xx,get absPath
if [ "$dir" = "." ]
then
        dir=`pwd`
fi

echo ---- rming $arg1 from localhost ----
rm -rf $arg1
echo

for((i=200;i<500;i=i+100)) 
do
        echo ---- rming  $arg1 to s$i ----
        ssh s$i rm -rf $dir/$fname
        echo  
done

【xls.sh】远程浏览文件夹内容
-------------------------------------------------------------------------------------------

#################
#x ls
#################

# argu < 1 , no args
if [ $# -lt 1 ]
then 
        echo no args!
        exit
fi

#get first argument
arg1=$1

#get current userName
cuser=`whoami`

#get fileName
fname=`basename $arg1`

#get dir
dir=`dirname $arg1`

#dir= . or dir = /xxx/xx,get absPath
if [ "$dir" = "." ]
then
        dir=`pwd`
fi

for((i=200;i<500;i=i+100)) 
do
        echo ---- ls $arg1 to s$i ----
        ssh s$i ls $dir/$fname | xargs
        echo  
done


【xcall】全节点命令执行
------------------------------------------------------------------------------

#!/bin/bash
#################
#xcall
#################

if [ $# -lt 1  ]
then 
    echo no args~
    exit
fi
echo -------------xcall:  $1  form localhost --------------
$@
echo 
for((i=200;i<=500;i=i+100))
do
    echo ----xcall : $1 from  s$i ----
    ssh s$i $@
    echo
done

【手动启动数据节点DataNode】
---------------------------------------------------------------
1.在名称节点上,启动所有的数据节点
$> hadoop-daemons.sh  start datanode    

2.在挂掉的数据节点主机上,启动该主机对应的单个节点
$> hadoop-daemom.sh start datanode

【查看所有端口】
---------------------------------------------------------------
1.$> netstat -ano            //tcp udp 包括ipv6
2.$> netstat -plut            //tcp udp 没有ipv6

【配置windows 的 host目录】
---------------------------------------------------------------
1.打开隐藏文件:C:\Windows\System32\drivers\etc\hosts,没有就新建一个

2.修改对应ip
127.0.0.1    localhost
192.168.43.131    s100
192.168.43.132    s200
192.168.43.133    s300
192.168.43.134    s400
192.168.43.135    s500

【dfs.namenode.name.dir 说明】
---------------------------------------------------------------
1.名称节点配置多个目录,目的在于更可靠
2.每个目录存放的数据完全一致,并且是并发修改的

【dfs.datanode.data.dir】
---------------------------------------------------------------
1.数据节点配置多个储存目录,注意仅仅是分多个磁盘,多个文件夹进行存储
而不是存储多个副本,只是将文件块存放到多个目录下
2.每个目录的内容都是不同的
3.用“,”分割

【刷新节点】
-----------------------------------------------------------------------
$> hdfs dfsadmin    -refreshNodes

【常用端口】
---------------------------------------------------------------
1.namenode 
rpc:            //8020
web:            //50070
2.datanode
web:            //50075
3.2NN
web:            //50090
4.resouce history        
web:            //8088
5.nodemanager
web:            //8042

【commossion/decommission】
---------------------------------------------------------------
1.服役/退役

【dfs.hosts 和 dfs.hosts.exclude】
---------------------------------------------------------------
1.hosts决定:是否连接
2.hosts.exclude决定:是否退役
3. hosts        hosts.exclude
          ×            √                //不能连
          ×            ×                //不能连
          √            ×                //能连,正常
          √            √                //能连,但是是退役的
4.配置
a.创建 /soft/hadoop/etc/dfs-hosts-include.conf文件
内容:s200
    s300
b.创建 /soft/hadoop/etc/dfs-hosts-exclude.conf文件
内容:s300
    s400
c.编辑配置文件 hdfs-site.xml 文件
dfs.hosts= /soft/hadoop/etc/dfs-hosts-include.conf
dfs.hosts.exclude=/soft/hadoop/etc/dfs-hosts-exclude.conf
d.应用到所有节点
xcp s100    s200    s300    s400    s500
e.刷新节点
$> hdfs dfsadmin    -refreshNodes
f.结果显示
s200 连接,正常
s300 连接,退役
s400 断开连接


【数据节点和名称节点中的--VERSION文件解析】
--------------------------------------------------------------------------------------------
1.clusterID=xxx   : namenode 和 datanode 是一致的,集群ID
2.storageID=xxx    : datanode的 唯一ID标识,每个datanode 都有唯一的
3.ctime            : 集群创建的事件,用于更新
4.acl            : 访问控制列表 access control list


【dfsadmin 常用指令】管理集群
---------------------------------------------------------------
1.手动保存NameNode的fsImage,而不经过2NN(正常是2NN在处理的),需安全模式
$> hdfs dfsadmin -saveNamespace
2.手动保存最新的名称节点镜像文件(*.fsimage)到本地系统
$> hdfs dfsadmin -fetchImage    localPath
3.保存元数据,默认保存路径为{HADOOP_HOME}/logs/  下
$> hdfs dfsamin -metasave  metabak.meta

4.启动均衡器,让数据存储在集群上更加的平均,提高效率
$> start-balancer.sh
5.查看目录的统计信息(dir file bytes ...)
$> hadoop fs -count /user/ubuntu/data
6.dfsadmin  安全模式


【dfsadmin  安全模式】
---------------------------------------------------------------
1.集群启动的时候,namenode 会合并fsimage 和 edit 生成新的 fsimage和edit,此时集群处于安全模式,namenode是只读的,无法写入
2.安全模式的常规操作
a.$> hdfs dfsadmin -safemode enter            //进入安全模式
b.$> hdfs dfsadmin -safemode leave            //退出安全模式
c.$> hdfs dfsadmin -safemode get                //查看安全模式状态
d.$> hdfs dfsadmin -safemode wait            //等待...直到退出安全模式


【Hadoop Snapshot】快照
--------------------------------------------------------------------------
1.Hadoop Snapshot 快照,针对NameNode的快速备份
a.目录默认是没有创建快照权限的,需要管理员允许快照
$> hdfs dfsadmin -allowSnapshot     /user/ubuntu/data
b.给/user/ubuntu/data创建快照snap-1
$> hadoop fs -createSnapshot /user/ubuntu/data
c.重命名快照
$> hadoop fs -renameSnapshot /user/ubuntu/data snap-1 snap-1-new
d.删除快照
$> hadoop fs -deleteSnapshot /user/ubuntu/data snap-1-new
e.禁用目录的快照(但是前提是必须删除该目录已经建立的所有快照)    
$> hdfs dfsadmin -disallowSnapshot /user/ubuntu/data


【Hadoop Trash】回收站
---------------------------------------------------------------
1.回收站默认是每隔0分钟进行清除。意味着禁用回收站,删除文件的时候会直接删除
2.可以设置文件在回收站的贮存时间
【core-site.xml】添加属性
fs.trash.interval=1        //1分钟
3.通过shell命令删除的文件,会进入.Trash(回收站),但是通过编程删除,不会进入回收站,会直接删除。除非,调用moveToTrash()方法,返回值表示删除成功或者失败
4.每个用户都有自己的回收站目录(当然前提是已经启用了回收站,即设置了core-site.xml的回收间隔)
$>hadoop  fs -ls -R  /user/ubuntu/.Trash
5.用户可以手动丢弃回收站
$> hadoop fs -expunge


【Quata】 配额,针对目录的
---------------------------------------------------------------

1.子元素配额

//给文件夹data 限定N个元素配额(文件夹也算配额,初始为1,代表data文件夹自身),N=1,表示文件夹为空,且不能再有任何子元素

$> hdfs dfsadmin -setQuota N /user/ubuntu/data

2.清除子元素配额

$> hdfs dfsadmin -clrQuota /user/ubuntu/data

3.空间配额

//给文件夹data限定N的硬盘空间,N>0 , 50 表示50字节,1k,5m,1g...

$> hdfs dfsadmin -setSpaceQuota 1m /user/ubuntu/data

4.清除空间配额

$> hdfs dfsadmin -clrSpaceQuota /user/ubuntu/data

猜你喜欢

转载自blog.csdn.net/xcvbxv01/article/details/81567487