hdfs pid报错,回收站

[hadoop@hadoop000 hadoop-2.6.0-cdh5.7.0]$ hdfs dfs -ls /
18/11/04 17:46:14 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 2 items
drwx------   - hadoop supergroup          0 2018-11-01 17:27 /tmp
drwxr-xr-x   - hadoop supergroup          0 2018-11-01 17:12 /user

上面这个命令等同于:hdfs dfs -ls hdfs://hadoop002:9000/ , hdfs://hadoop002:9000 配自core-site.xml

[hadoop@hadoop000 hadoop-2.6.0-cdh5.7.0]$ hdfs dfs -ls hdfs://hadoop000:9000/
18/11/04 17:49:18 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 2 items
drwx------   - hadoop supergroup          0 2018-11-01 17:27 hdfs://hadoop000:9000/tmp
drwxr-xr-x   - hadoop supergroup          0 2018-11-01 17:12 hdfs://hadoop000:9000/user

显示当前命令操作的用户路径 /user/用户/

[hadoop@hadoop000 hadoop-2.6.0-cdh5.7.0]$ hdfs dfs -ls 
18/11/04 17:50:31 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 2 items
drwxr-xr-x   - hadoop supergroup          0 2018-11-01 17:14 input
drwxr-xr-x   - hadoop supergroup          0 2018-11-01 17:31 output
[hadoop@hadoop000 hadoop-2.6.0-cdh5.7.0]$ hdfs dfs -ls /user/hadoop
18/11/04 17:52:24 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 2 items
drwxr-xr-x   - hadoop supergroup          0 2018-11-01 17:14 /user/hadoop/input
drwxr-xr-x   - hadoop supergroup          0 2018-11-01 17:31 /user/hadoop/output

root用户写权限,在/目录下,这个路径属于hadoop用户,supergroup用户组,root属于其他用户组

[root@hadoop002 hadoop-2.6.0-cdh5.7.0]# bin/hdfs dfs -put
README.txt /ruozedata
put: Permission denied: user=root, access=WRITE,
inode="/ruozedata":hadoop:supergroup:drwxr-xr-x

可以给这个目录加root的权限

hdfs dfs -chown -R root:root /ruozedata

上传:linux->hdfs
下载: hdfs->linux


hdfs dfs -put  a.txt /
hdfs dfs -get  /a.txt ./
下面也是上传下载
hdfs dfs -copyFromLocal a.txt /
hdfs dfs -copyToLocal /a.txt ./

hdfs 的fs等同于dfs

汇报集群情况的指令

[hadoop@hadoop000 hadoop-2.6.0-cdh5.7.0]$ hdfs dfsadmin -report
18/11/04 18:13:34 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Configured Capacity: 39953309696 (37.21 GB)
Present Capacity: 30025764864 (27.96 GB)
DFS Remaining: 30024912896 (27.96 GB)
DFS Used: 851968 (832 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 (1):

Name: 192.168.137.190:50010 (hadoop000)
Hostname: hadoop000
Decommission Status : Normal
Configured Capacity: 39953309696 (37.21 GB)
DFS Used: 851968 (832 KB)
Non DFS Used: 9927544832 (9.25 GB)
DFS Remaining: 30024912896 (27.96 GB)
DFS Used%: 0.00%
DFS Remaining%: 75.15%
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: Sun Nov 04 18:13:34 CST 2018

有时候会报错处于safemode安全模式,这是只读的

hdfs dfsadmin -safemode <enter | leave | get | wait>]  安全模式
 可以leave离开

这种报错有以下两种情况有两种原因
1.如果是人工让他进人安全模式,代表集群只读 可以做维护,做完维护,leave
2.异常情况,比如hdfs损坏,nn节点自动进入安全模式

解决办法有以下
a.手工尝试的去leave 是成功的, 进入正常的
b.手工尝试的去leave 不成功,那么仔细去看NN节点的log日志,去分析
block损坏

pid文件问题导致报错

pid默认存储在/tmp目录下,pid的内容就是进程号。pid文件删除,不会影响服务正常运行和用户的读写。

扫描二维码关注公众号,回复: 4095045 查看本文章

jps命令的nn,dn等进程的进程号读的是hsperfdata_hadoop。但是stop的时候(sbin/stop-dfs.sh)会从比如dn的(hadoop-hadoop-datanode.pid)里拿进程号,这样子可能会产生一个错误。

在/tmp目录下的东西1个月会清空一次,如果pid文件被删除,虽不会影响程序运行,但是停止进程的时候,会因为找不到pid文件而无法停之,重启一个进程,进程号会紊乱。

解决办法是直接kill -9 掉进程,然后删除tmp下相应进程的pid文件,再重启。

其实也可以通过修改pid文件存储位置来避免这种定期清空的情况。可以再 etc/hadoop下面的hadoop-env.sh里改参数,后面的就是新存储路径。

 export HADOOP_PID_DIR=${HADOOP_PID_DIR}

hdfs回收站

hdfs启动回收站需要修改core-default.xml文件。

添加

 <property>
                <name>fs.trash.interval</name>
                        <value>1440</value>
                            </property>
    <property>
            <name>fs.trash.checkpoint.interval</name>
                    <value>0</value>
                        </property>

这里的fs.trash.interval是垃圾保留的时间,1440是分钟,即为1天。
第二个参数是

删除就是把文件给移到.trash目录

[hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ hdfs dfs -rm /ruozedata/jepson.log
18/10/10 22:34:48 INFO fs.TrashPolicyDefault: 
Moved: 'hdfs://hadoop002:9000/ruozedata/jepson.log' 
to trash at: 

hdfs://hadoop002:9000/user/hadoop/.Trash/Current/ruozedata/jepson.log

猜你喜欢

转载自blog.csdn.net/qq_36459386/article/details/83719042