您的位置:首页 > 运维架构 > Shell

【2-1】HDFS简介与HDFS Shell

2016-01-06 19:36 302 查看
第二章课程导语:

程序员的最高目标是成为什么?

CEO并不用写程序,那么成为CTO?眼前的目标是成为架构师,架构师只需要画画流程图就行了,不必写代码【黑的漂亮。。】

对源码的理解是面试利器,杀伤力巨大。

本节正式开始:

Q:让你自己设计一个分布式文件系统,怎么设?



Client:客户端【送货取货员】

文件:200M

NameNode:账本

DataNode:仓库

读写过程是什么样的?

客户端将文件写入HDFS中,首先要和NAMENODE建立联系,【仓库管理员】查询一下仓库的信息,拿仓库的钥匙等等。

客户端向namenode上传一个上传数据的RPC请求,namenode查原数据信息【账本】,把信息返给客户端。

客户端得知了之后【啊哦我们要存在第二个仓库里】,于是与datanode2建立联系,写入第二个datanode里面

然后

HDFS为了保证安全,需要对数据存副本。

怎么存副本?

副本不需要client写多次,而是存入datanode2中之后,进行了水平传递,直到跟我们水平传递的数量和原规定的副本数一致,完成。流水线pipeline,在

datanode和datanode直接存数据,速度非常快。

还要有一个反馈,告诉client成功了。

还要进行对数据的分块。在hadoop2.0中,块的大小是128M 134217728字节

比如要存一个1G的文件,块写满一个了之后【128M】之后,再去namenode那里申请一个块,继续写,以此类推。

为什么要进行分块存储?

假如1G的文件,128M应该是8块,写入:假设我前七块上传成功,第八块失败了。于是我重新往HDFS里写第八块就可以了。读取:同理,假设第八块坏了,我只需要找第八块的副本即可。

因此,把大数据切分成小数据block,利于存储,和mapreduce使用的小任务。pipeline流水线的方式,写入datanode

以上为HDFS简单原理

概念:什么是分布式文件系统?

为了安全,我的方式是存副本。坏处就是冗余存储。【一般存三份】。单机存储已经不够了,于是机器通过网络连接起来,组成集群,可以共享所有机器的存储空间。2.而且底层的实现机制不需要我们知道直接用就行了。3.还有个好处:容错 即使你一块磁盘烧坏了,我们也可以从别的地方读取数据。

分布式文件系统有许多,hdfs只是其中一种,适用于“一次写入多次读取”的情况。还是和数据库有区别的,数据库可以实时的增删改查,hadoop不可以

HADOOP还不支持并发写情况,比如说,上传了1G的文件,分成8块,【八块不能同时写】,必须先写第一块,写满了再写第二块。

常见的分布式文件系统:GFS,HDFS,GridFS,TFS【淘宝的】,Lustre【网盘】 网盘并不需要HDFS,在最早的时候就有解决方案了,115最早弄的。

2.通过命令行的方式来展示一下HDFS【也叫HDFS Shell】

机房一般都特别冷。。。去机房里修改太冷了 一般通过远程的客户端来修改。想真正感受云主机,在阿里云买个账号,按小时买,【貌似现在阿里云还有学生特惠?】

打开hdfs 在sbin底下,以前用过上传put 查看 -ls

查看hdfs里的数据:hadoop fs -ls 接路径 hdfs://itcast01:9000/ 这个是hadoop分布式文件系统的根,跟Linux文件系统的根差不多

但是,我通过浏览器,可以看到hdfs的文件系统【而看不到Linux的文件系统】

浏览器地址:192.168.8.88:50070



点击浏览文件系统,进入的就是HDFS的根



那个斜线就是根 ,在浏览器中看得更清晰一些【当然也可以用命令行来看,hadoop fs -ls hdfs://itcast01:9000/

也可以简写一点:hadoop fs -ls /

从Linux主机向hadoop传文件,用的是copyFromLocal命令:hadoop fs -copyFromLocal /root/install.log /in.log 前一个地址写的是Linux地址,后一个地址写的是hadoop地址,可以简写

从HDFS到本地传文件,用的是copyToLocal,用法同样

数数HDFS里面有多少个文件:hadoop fs -count /

几个文件夹【根目录也算一个文件夹】 几个文件

删除:hadoop fs rm -r /tmp 删掉tmp里的东西

下载:hadoop fs get HDFS 本地

拷贝:hadoop fs cp HDFS HDFS

查看:hadoop fs -ls 如果想看递归的查看文件目录 -ls -R 想看大小 再加 -h

如果不知道能干啥,直接敲hadoop fs敲回车,会出现帮助界面

创建:hadoop fs -mkdir /itcast0106

【由此看来,其实跟Linux文件系统的命令挺像的。。。。。。。。。。】加了前缀hadoop fs

rmdir 只能删空目录

text 查看内容【和cat一样】

tail 可以查看后面几行【防止用cat被刷屏了】

接下来,练习改变它的权限和改变它的所属组:

-ls里面可以看到它的权限【可读可写或what】

我想添加执行权限:hadoop fs -chmod +x【默认是a+x,就是所有】 /in.log

去掉执行权限:hadoop fs -chmod -R【代表递归,子文件和子文件夹都去掉】 -x /wcout

改变所属用户:hadoop fs -chown /in.log 由root group变成了supergroup

改变所属组: -chgrp

hadoop 2.0新出的新接口 hdfs dfs -后面都一样的了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: