hadoop shell命令操作
先看我服务器情况:
shizhan01有 ResourceManager 和 NameNode
shizhan02 03 04里是我的 NodeManager 和 DataNode
访问 http://shizhan01:50070
DataNode是存放数据的,hdfs把我的数据都存成两份(我们在hdfs-site.xml里配置的是2),如果数据太大
超过128M时,hdfs就会把我的数据给拆开,按偏移量0-128M的存一份,剩下的存一份。
我们来复现一下这个理论。
先看一下hdfs的根目录有哪些东西,执行
hadoop fs -ls /
可以看到啥都没有,那我们在shizhan02上上传一下文件
我们创建了一个文件,把他上传到hdfs根目录,然后ls可以看到文件
当然我们看 图形界面的客户端,也能看到我们上传的 bigdata.avi 文件,看下图
其实我们把文件上传到hdfs,hdfs就会把我们的文件 重命名,存到两个地方;
也就是说我们把现在的bigdata删除也没事,因为hdfs已经把文件存起来了。
那存到了什么地方呢?
这个是我们之前在core-site.xml 里配的hadoop.tmp.dir目录
hdfs把我们的bigdata.avi文件重命名成 blk_1073741825(块_id),放在这个目录下
/home/hadoop/hdpdata/dfs/data/current/BP-1186906364-192.168.116.128-1531575944333/current/finalized/subdir0/subdir0
那因为是存两份,我们再去其他服务器里找下
shizhan03 里没有
shizhan04里有
那这就验证了我们上面说的,hdfs把我们的文件重命名,存了两份,分别在两台服务器上。
那我们再来验证下当文件超过128M了之后的情况:
我在发现shizhan01服务器上有个hadoop的安装包 超过了128M
那我们就把这个安装包上传到hdfs里
图形界面里也能看到
因为超过了128M,所以文件是被hdfs拆分了,我们来找一下
shizhan02上
blk_1073741825是我们之前上传的bigdata文件,下面的26 27是我们上传的hadoop安装包,因为大于128M,
所以被拆分成两个文件
由下图可知,副本被存在了shizhan03上
那shizhan04上,肯定就不会有啦,看下图,25是我们之前存的 bigdata文件
既然hadoop的安装包上传到hdfs里,由于大于128M导致被拆分,那如果我们把拆分的文件合起来,还能解压嘛?
我们来试一下,我们把26 和27文件都追加到一个 tmp.file文件里,最后看这个tmp.file文件能否被解压
解压 tmp.file文件,发现是可以解压的