设为首页 收藏本站
查看: 1320|回复: 0

[经验分享] hadoop的hdfs的设计

[复制链接]

尚未签到

发表于 2016-12-6 06:48:22 | 显示全部楼层 |阅读模式
  一、hdfs的设计,hdfs以流式数据访问模式来存储超大文件
  1:hdfs的构建思路,一次写入,多次读取
  2:hdfs是为高数据吞吐量应用优化的,这可能会以提高时间延迟为代价
  3:由于namenode将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限于namenode的内存容量。(大量的小文件)
  4:hdfs中的文件可能只有一个writer,而且写操作总是将数据添加在文件的末尾,不支持具有多个写入者的操作,也不支持在文件的任意位置修改。
  二、hdfs的概念
  磁盘块:
  文件系统块:
  hdfs上的文件也被划分为块大小的多个分块,作为独立的存储单元,但hdfs中小与一个快大小的文件不会占据整个快的空间。
  hdfs的块比磁盘的块大,目的最小化寻址的开销,但不会设置过大,mapReduce中的map任务通常一次只处理一个块中的数据,因此如果任务数太少,作业的运行速度就会比较慢。
  分布式文件系统中的块进行抽象带来的好处:
  1、一个文件的大小可以大于网络中任意一个磁盘的容量。文件的所有块并不需要存储在同一个磁盘上。
  2、使用抽象块而非整个文件作为存储单元,大大简化了存储子系统的设计
  三、namenode(管理者)和datanode(工作者)
  namenode:维护着文件系统树及整棵树内所有的文件和目录。也纪录每个文件中各个块所在数据节点的信息,但他并不永久保存块的位置信息,因为这些信息会在系统启动时由数据节点重建
  datanode:是文件系统的工作节点,他们根据需要存储并检索数据块,并且向namenode发送他们所存储的块的列表
  namenode的容错机制
  1:备份
  2:辅助namenode
  联邦hdfs
  namenode在内存中保存文件系统中每个文件和每个数据块的引用关系,这意味着对于一个拥有大量文件的超大集群来说,内存将成为限制系统横向扩展的瓶颈。2.x发行版本系列中引入的联邦hdfs允许系统增加namenode实现扩展。
  四、hdfs的常用命令

  hadoop fs -mkdir /tmp/input              在HDFS上新建文件夹
    hadoop fs -put input1.txt /tmp/input  把本地文件input1.txt传到HDFS的/tmp/input目录下
    hadoop fs -get  input1.txt /tmp/input/input1.txt  把HDFS文件拉到本地
    hadoop fs -ls /tmp/output                  列出HDFS的某目录
    hadoop fs -cat /tmp/ouput/output1.txt  查看HDFS上的文件
    hadoop fs -rmr /home/less/hadoop/tmp/output  删除HDFS上的目录
    hadoop dfsadmin -report 查看HDFS状态,比如有哪些datanode,每个datanode的情况
    hadoop dfsadmin -safemode leave  离开安全模式
    hadoop dfsadmin -safemode enter  进入安全模式
  五、hadoop的文件系统是一个抽象的概念,java提供一个抽象类FileSystem,hdfs只是其中的一个实现,实现类DistributedFileSystem 
  六、java的提供一些接口
  1、从hadoop url读取数据
  2、通过filesystem api读取数据
  3、写入数据
  4、创建目录
  5、查询文件系统
  6、删除数据
  七、数据流
  1、读取
  hdfs客户端-->open分布式文件系统-->namenode-->read (FSData InputStream)-->datanode
  2、写入
  hdfs客户端-->create分布式文件系统-->create namenode -->write(FSData OutputStream)-->datanode-->close 分布式文件系统-->complete namenode
  3、通过Flume和Sqoop导入数据
  Flume是一个将大规模流数据导入HDFS的工具,应用场景是从另外一个系统中收集日志数据,并实现在hdfs中的聚集操作以便用于后期的分析操作
  Sqoop是为了将数据从结构化存储设备批量导入hdfs中的设计。应用场景,是将白天生产的数据库中的数据导入hive数据仓库中进行分析。
  4、通过distcp并行复制,应用场景是在两个hdfs集群之间传输数据。
  5、hadoop存档:每个文件按块方式存储,每个块的元数据存储在namenode的内存中,因为hadoop存储小文件会低效。hadoop存档文件(har文件)是一个更高效的文档存储工具,他将文件存入hdfs块,可以减少namenode的内存,允许文件进行透明访问。hadoop存档文件可以用做mapreduce的输入。
  八、hadoop的I/O操作
  hdfs的数据完整性:hdfs会对写入的所有数据计算交验和,并在读取数据时验整校验和。datanode负责在收到数据后存储该数据及其验证校验和。
  hadoop的LocalFileSystem执行客户端校验和验证。localfileSystem通过checksumfilesystem来完成任务。
  压缩格式和算法
  DEFLATE,Gzip,bizp2,lzo,lz4,snappy
  deflate,deflate,bizp2,lzo,lz4,snappy
  在mapreduce中使用压缩
  如果输入文件是压缩的,那么在根据文件扩展名推断出相应的codec后,mapreduce会在读取文件是自动解压缩文件
  想要压缩mapreduce作业的输出,应在作业配置文件设置,还可以fileoutputformat来设置

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-310107-1-1.html 上篇帖子: Greenplum Hadoop视频教程 下篇帖子: Hadoop HDFS API编程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表